keepalived的實際運行過程中,當master發生異常,且后期恢復master正常后,存在搶占或非搶占兩種情況。簡單點說搶占模式就是,當master宕機后,backup 接管服務。后續當master恢復后,vip漂移到master上,master重新接管服務,多了一次多余的vip切換,而在實際生產中是不需要這樣。實際生產中是,當 原先的master恢復后,狀態變為backup,不接管服務,這是非搶占模式。
接下來分4種情況說明
1)倆台都為master時,比如server1的優先級大於server2,keepalived啟動后server1獲得master,server2自動降級為backup。此時server1宕機的話,server2接替服務,當server1恢復后,server1又變為master,重新接管服務,server2變為backup。屬於搶占式。
2)server1為master,server2位backup,且master優先級大於backup。keepalived啟動后server1獲得master,server2為backup。當server1宕機后, server2接管服務。當server1恢復后,server1重新接管服務變為master,而server2變為backup。屬於搶占式。
3)server1為master,server2位backup,且master優先級低於backup。keepalived啟動后server2獲得master,server1為backup。當server2宕機后, server1接管服務。此時server2恢復后搶占服務,獲得master,server1降級將為backup。屬於搶占式。
以上3種,只要級別高就會獲取master,與state狀態是無關的
4)server1和server2都為backup。我們要注意啟動server服務的啟動順序,先啟動的升級為master,與優先級無關。且配置nopreemt項
比如server1獲得master權限,server2為backup。此時server1宕機后,server2接管服務升級為master。當server1恢復后權限將為backup,不會爭搶 server2的master權限,server2將會繼續master權限。屬於非搶占式。
重點:第4種非搶占式倆節點state必須為bakcup,且必須配置nopreempt。
注意:這樣配置后,我們要注意啟動服務的順序,優先啟動的獲取master權限,與優先級沒有關系了。
總結:搶占模式即MASTER從故障中恢復后,會將VIP從BACKUP節點中搶占過來。非搶占模式即MASTER恢復后不搶占BACKUP升級為MASTER后的VIP。