起因
nginx服務器采用的keepalived+vip實現的雙活,最近由於一台服務器有問題,更換了一台nginx:
操作:
- 停止有問題服務器keepalived和nginx
- 新服務器部署keepalived和nginx
更換后一切正常,但是過了幾個小時,出現大面積的不能訪問。
keepalived 升級
檢查nginx正常,重啟keepalived后OK,懷疑可能是keepalived的問題,於是編譯安裝最新的keepalived:
curl --progress http://keepalived.org/software/keepalived-1.2.15.tar.gz | tar xz
cd keepalived-1.2.15
./configure --prefix=/usr/local/keepalived-1.2.15
make
sudo make install
升級后,一切正常,。
再出故障,最終定位
一晚過去無異常,第二天又出現部分域名不能訪問,檢查服務一切正常,因此懷疑是VIP導致的問題,檢查之前有問題服務器的ip:
ip addr
果不其然:
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 90:b1:1c:2a:92:e4 brd ff:ff:ff:ff:ff:ff
inet 172.31.161.42/32 scope global eno1
valid_lft forever preferred_lft forever
inet 172.31.161.41/32 scope global eno1
valid_lft forever preferred_lft forever
inet 172.31.161.38/24 brd 172.31.161.255 scope global eno1
valid_lft forever preferred_lft forever
inet 172.31.161.42/0 scope global eno1::1
valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu
41,42 是我們設置的VIP,竟然還在這個有問題服務器的網卡上,這就導致一個機房內,有2台服務器綁定相同的vip。
解決方案, 通過ip addr delete
刪除綁定的vip
ip addr delete 172.31.161.42/32 dev eno1
ip addr delete 172.31.161.41/32 dev eno1
ip addr delete 172.31.161.41/0 dev eno1
順道介紹如何給網卡綁定vip:
ip addr add 172.31.161.41/32 dev eno1
溯源與問題總結
問題的根源在於,keepalived為網卡停止后,keepalived為網卡綁定的VIP並沒有移除,導致多台機器出現同樣的ip。
切記: 停止keepalived,vip不會自動刪除,需要手動清理
作者:Jadepeng
出處:jqpeng的技術記事本--http://www.cnblogs.com/xiaoqi
您的支持是對博主最大的鼓勵,感謝您的認真閱讀。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。