部署
| 服務器 | 角色 |
|---|---|
| 192.168.91.135 | master |
| 192.168.91.136 | backup |
| 192.168.91.166 | VIP |
一、Nginx 部署
分別在 master、backup 部署 Nginx,請參照 Nginx 部署
二、Keepalived 部署
分別在 master、backup 部署 Nginx,請參照 Keepalived 部署
三、配置
3.1 master
1 . 配置 keepalived.conf
vrrp_script:指定檢查nginx作業狀態腳本(根據nginx狀態判斷是否故障轉移)
virtual_ipaddress:虛擬IP(VIP)
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_MASTER
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
}
vrrp_instance VI_1 {
state MASTER
interface ens33 # 修改為實際網卡名
virtual_router_id 51 # VRRP 路由 ID實體,每個實體是唯一的
priority 100 # 優先級,備服務器設定 90
advert_int 1 # 指定VRRP 心跳包通告間隔時間,默認1秒
authentication {
auth_type PASS
auth_pass 1111
}
# 虛擬IP
virtual_ipaddress {
192.168.91.166/24
}
track_script {
check_nginx
}
}
EOF
2 . 配置檢測 nginx 腳本,提供給 keepalived
cat > /etc/keepalived/check_nginx.sh << "EOF"
#!/bin/bash
count=$(ss -antp |grep 6443 |egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
exit 1
else
exit 0
fi
EOF
chmod +x /etc/keepalived/check_nginx.sh
注:keepalived根據腳本回傳狀態碼(0為作業正常,非0不正常)判斷是否故障轉移,
3 . 重啟 keepalived
systemctl restart keepalived
3.2 Backup
1 . 配置 keepalived.conf
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_BACKUP
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51 # VRRP 路由 ID實體,每個實體是唯一的
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.91.166/24
}
track_script {
check_nginx
}
}
EOF
2 . 配置檢測 nginx 腳本,提供給 keepalived
cat > /etc/keepalived/check_nginx.sh << "EOF"
#!/bin/bash
count=$(ss -antp |grep 6443 |egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
exit 1
else
exit 0
fi
EOF
chmod +x /etc/keepalived/check_nginx.sh
注:keepalived根據腳本回傳狀態碼(0為作業正常,非0不正常)判斷是否故障轉移,
3 . 重啟 keepalived
systemctl restart keepalived
四、測驗
1 . 查看 master、backup 主機 ip


2 . 停止 master 主機的 nginx,然后查看 master、backup 主機 ip
./nginx -s stop

可以看到在 master 服務器 nginx 停止后,VIP 漂移到了 backup 服務器


3 . 然后啟動 master 服務器 nginx,然后查看 master、backup 主機 ip,VIP 漂回到了 master 服務器


例外排查
- 都已啟動,master、backup 無 VIP
檢查腳本檢測的埠是否正確
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295047.html
標籤:其他
上一篇:Jenkins搭建
