keepalived的ha分為搶占模式和非搶占模式,搶占模式即master從故障中恢復後,會將vip從backup節點中搶占過來。非搶占模式即master恢復後不搶占backup公升級為master後的vip。下面分別介紹centos7下搶占模式和非搶占模式的配置方式:
vipip
主機名nginx埠
192.168.1.210
192.168.1.201
nginx-01
80192.168.1.210
192.168.1.202
nginx-0280
兩台伺服器的vip為:192.168.1.210
分別在兩台web伺服器安裝nginx和keepalived:
1、安裝nginx,請參考《nginx原始碼安裝》
2、安裝keepalived,請參考《keepalived安裝與配置》
3、防火牆新增arrp組播規則,或關閉防火牆
1> iptables
shell> vi /etc/sysconfig/iptables
-a input -p vrrp -d
224.0
.0.18/32
-j accept
2> firewall
firewall
-cmd--
direct--
permanent--
add-
rule
ipv4
filter
input0-
-in-inte***ce
enp4s0--
destination
224.0.
0.18-
-protocol
vrrp-j
accept
firewall
-cmd--
reload
4、關閉selinux
shell> vi /etc/sysconfig/selinux
#修改:
selinux=disabled
#setenforce 0
編輯/etc/keepalived/keepalived.conf
配置檔案
global_defs
## keepalived會定時執行指令碼並對指令碼執行的結果進行分析,動態調整vrrp_instance的優先順序。
##如果指令碼執行結果為0,並且weight配置的值大於0,則優先順序相應的增加。如果指令碼執行結果非0,
##並且weight配置的值小於 0,則優先順序相應的減少。其他情況,維持原本配置的優先順序,即配置檔案中priority對應的值。
vrrp_script chk_nginx
vrrp_instance vi_1
# 虛擬ip,兩個節點設定必須一樣。可以設定多個,一行寫乙個
virtual_ipaddress
track_script
}
global_defs
vrrp_script chk_nginx
vrrp_instance vi_1
virtual_ipaddress
track_script
}
分別在主備伺服器/etc/keepalived
目錄下建立nginx_check.sh
指令碼,並為其新增執行許可權chmod +x /etc/keepalived/nginx_check.sh
。用於keepalived定時檢測nginx的服務狀態,如果nginx停止了,會嘗試重新啟動nginx,如果啟動失敗,會將keepalived程序殺死,將vip漂移到備份機器上。
#!/bin/bash
a=`ps -c nginx --no-header | wc -l`
if [ $a
-eq0 ];then
/opt/nginx/sbin/nginx #嘗試重新啟動nginx
sleep 2
#睡眠2秒
if [ `ps -c nginx --no-header | wc -l` -eq
0 ];then
killall keepalived #啟動失敗,將keepalived服務殺死。將vip漂移到其它備份節點
fifi
shell> service keepalived start
shell> ps -ef | grep keepalived
[root@localhost ~]# ps -ef | grep keepalived
root 86510
23:36 ? 00:00:00 keepalived -d
root 869
8650
23:36 ? 00:00:00 keepalived -d
root 870
8650
23:36 ? 00:00:00 keepalived -d
如果看到如上程序資訊,表示keepalived已經啟動成功。下面用ip add
命令檢視vip繫結的情況,如下圖所示:
從上圖可以看出,vip位址192.168.1.210繫結在master(192.168.1.201)的enp0s3網絡卡上。
將master上的keepalived停止,檢視vip是否會漂移到192.168.2.202上。
停止201的keepalived服務:
從上圖可以看出,vip已經成功從201漂移到了202。此時再將201的keepalived服務啟動後,由於201是master,所以會將202的vip搶占過來。
啟動201的keepalived服務:
shell> service keepalived start
結果vip又回到了201,如下圖所示:
master從故障中恢復後,不會搶占備份節點的vip
global_defs
vrrp_script chk_nginx
vrrp_instance vi_1
virtual_ipaddress
track_script
}
global_defs
vrrp_script chk_nginx
vrrp_instance vi_1
virtual_ipaddress
track_script
}
和非搶占模式的配置相比,只改了兩個地方:
1> 在vrrp_instance塊下兩個節點各增加了nopreempt指令,表示不爭搶vip
2> 節點的state都為backup
兩個keepalived節點都啟動後,預設都是backup狀態,雙方在傳送組播資訊後,會根據優先順序來選舉乙個master出來。由於兩者都配置了nopreempt,所以master從故障中恢復後,不會搶占vip。這樣會避免vip切換可能造成的服務延遲。
keepalived nginx主從切換
五 nginx指令碼,新建nginx check.sh指令碼放到 etc keepalived下 指令碼內容 bin bash a ps c nginx no header wc l if a eq 0 then usr local nginx sbin nginx sleep 2 if ps c ...
keepalived nginx集群部署
192.168.132.130 伺服器1 192.168.132.132 伺服器2 虛擬ip 192.168.132.131 yum install gcc c gcc是gnu的c語言編譯器,至於c 編譯器,它的名字叫做g yum install y pcre pcre devel 在nginx編譯...
keepalived nginx負載安裝
環境 centos7.6 keepalived工具可以生成虛擬浮動ip,繫結到網絡卡上。172.21.210.19 master 172.21.210.20 backup 172.21.210.30 vip 浮動ip 1 兩個節點安裝keepalived yum y install keepaliv...