Interesting things
我在配置LVS+Keepalived遇到幾個比較棘手的問題,於是乎記錄總結一波。
What did you do today
- 問題1:首先就是主備lvs開啓防火牆之後,主備lvs的eth0節點都會出現虛擬ip192.168.12.100。我之前的方法是關閉主備lvs的防火牆,這種方法貌似不是一種好的解決方式。
1.在防火牆添加VRRP通訊支持引用,命令:iptables -A INPUT -d 224.0.0.18 -j ACCEPT
2.好像防火牆加了這個策略,也不能解決問題,那麼我們安裝tcpdump,分析一下vrrp的組播情況。安裝命令: yum install -y tcpdump
3.查看vrrp的組播情況,tcpdump vrrp -n,很明顯的可以看到192.168.12.4和192.168.12.8這2個ip在輪流發送組播信號。而正常的應該是MASTER服務器發送組播,如果BACKUP收不到MASTER的組播信號,那麼就判定MASTER宕機了,BACKUP就接收vip。
4.先確定服務器的SElinux是否設置爲關閉,查看SElinux的狀態,命令:getenforce,Enforcing#強制開啓,Permissive#寬容模式,Disabled#關閉。如果是Enforcing強制模式,我就需要關閉。命令:setenforce 0#設置寬容模式,但是這樣只在本次生效,重啓服務器後將失效。如果需要永久關閉,還需要修改配置文件。sed -i ‘s/=enforcing/=disabled/g’ /etc/sysconfig/selinux
5.進入/etc/sysconfig/目錄下的selinux,註釋掉SELINUX=targeted
6.我們查看防火牆,看到蛋疼的一幕。 -A INPUT -d 224.0.0.18/32 -j ACCEPT寫在-A INPUT -j REJECT –reject-with icmp-host-prohibited後面了,正確的寫法應該是寫在-A INPUT -j REJECT –reject-with icmp-host-prohibited的前面。我們需要修改過來!
7.現在我們在主lvs和備lvs查看vrrp的組播情況,發現只有192.168.12.4發給192.168.12.8的情況,這就很爽了嘛!
8. 通過ip a 查看各個節點ip情況。發現只有主lvs的eth0節點有vip,備lvs沒有。完美解決!
問題2:通過ipvsadm -ln查看lvs以及對應的RealServer信息,但是發現RealServer只有192.168.12.2:80。正常情況下是有192.168.12.3:80和192.168.12.2:80
1.通過/var/log/keepalived.log,發現主lvs連接192.168.12.3:80失敗了!
2. 我們來查看nginx1(192.168.12.2)和nginx2(192.168.12.3)的lo:0節點,顯示是虛擬ip192.168.12.100,這是沒問題的!
3.那我們只能拿出殺手鐗了,重啓虛擬機。
4.重啓後,我們再來看ipvsadm -ln,發現RealServer有192.168.12.2:80和192.168.12.3:80了,美滋滋。
Summary
路漫漫其修遠兮,吾將上下而求索。下一篇LVS+Keepalived雙主模式。