當使用Nginx作為應用伺服器前端軟負載的時候,可以通過KeepAlived來實作虛拟IP(Virtual IP, VIP)在主、備節點之前的漂移,其中VIP需要在申請伺服器的時候進行建立。
1)當主節點Nginx服務無法啟動,或者主節點伺服器當機,VIP将漂移到備用節點;
2)當主節點服務恢複(伺服器啟動、KeepAlived和Nginx服務正常運作),備用節點将會進行備用狀态,并移除VIP,VIP将漂移回主節點。
在這個切換過程中,正常情況下,前端使用者是無感覺的。
備用節點
# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-01-07 08:43:32 CST; 1min 21s ago
Process: 28260 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 28262 (keepalived)
Tasks: 2
CGroup: /system.slice/keepalived.service
├─28262 /usr/local/keepalived/sbin/keepalived -D
└─28264 /usr/local/keepalived/sbin/keepalived -D
Jan 07 08:43:36 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: (VI_1) Sending/queueing gratuitous ARPs on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:43:41 ngServer2 Keepalived_vrrp[28264]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:26 ngServer2 Keepalived_vrrp[28264]: (VI_1) Master received advert from 10.xxx.xxx.15 with higher priority 122, ours 102
Jan 07 08:44:26 ngServer2 Keepalived_vrrp[28264]: (VI_1) Entering BACKUP STATE
Jan 07 08:44:26 ngServer2 Keepalived_vrrp[28264]: (VI_1) removing VIPs.
主節點
# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-01-07 08:44:24 CST; 16s ago
Process: 29790 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 29792 (keepalived)
Tasks: 2
CGroup: /system.slice/keepalived.service
├─29792 /usr/local/keepalived/sbin/keepalived -D
└─29793 /usr/local/keepalived/sbin/keepalived -D
Jan 07 08:44:28 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:28 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:28 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:28 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: (VI_1) Sending/queueing gratuitous ARPs on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17
Jan 07 08:44:33 ngServer1 Keepalived_vrrp[29793]: Sending gratuitous ARP on eth0 for 10.xxx.xxx.17