Keepalived+nginx造成流量异常
1、使用虛擬機(jī)搭建環(huán)境
也是A、B 2臺(tái)機(jī)器,使用一樣的配置和軟件。
環(huán)境:CentOS6.5 2臺(tái)虛擬機(jī)
keepalived版本1.2.19
tengine版本2.1.2
節(jié)點(diǎn)A :
[root@A keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {?
?? notification_email {?
???? admin@localhost.com???????????? #設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。 需開(kāi)啟本機(jī)的sendmail服務(wù)?
?? }?
?? notification_email_from? admin@lvtao.net??????? #設(shè)置郵件的發(fā)送地址?
?? smtp_server 127.0.0.1??????????????????????????????? #設(shè)置smtp server地址?
?? smtp_connect_timeout 30????????????????????????????? #設(shè)置連接smtp server的超時(shí)時(shí)間?
?? router_id LVS_DEVEL????????????????????????????????? #表示運(yùn)行keepalived服務(wù)器的一個(gè)標(biāo)識(shí)。發(fā)郵件時(shí)顯示在郵件主題的信息?
}
vrrp_script check_nginx {?
??? script "/etc/keepalived/check_http_port"?
??? interval 2????????????????? #檢查間隔?
??? weight 5??????????????????? #權(quán)重?
}
vrrp_instance VI_1 {?
??? state BACKUP????????????? #指定keepalived的角色,MASTER表示此主機(jī)是主服務(wù)器,BACKUP表示此主機(jī)是備用服務(wù)器?
??? interface eth0??????????? #指定HA監(jiān)測(cè)網(wǎng)絡(luò)的接口?
??? virtual_router_id 51????? #虛擬路由標(biāo)識(shí),這個(gè)標(biāo)識(shí)是一個(gè)數(shù)字,同一個(gè)vrrp實(shí)例使用唯一的標(biāo)識(shí)。即同一vrrp_instance下,MASTER和BACKUP必須是一致的?
??? priority 100?????????????? #定義優(yōu)先級(jí),數(shù)字越大,優(yōu)先級(jí)越高,在同一個(gè)vrrp_instance下,MASTER的優(yōu)先級(jí)必須大于BACKUP的優(yōu)先級(jí)?
??? advert_int 1????????????? #設(shè)定MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒?
??? nopreempt???????????????? #設(shè)置 nopreempt 防止搶占資源,只生效BACKUP節(jié)點(diǎn)?
??? authentication {????????? #設(shè)置驗(yàn)證類(lèi)型和密碼?
??????? auth_type PASS??????? #設(shè)置驗(yàn)證類(lèi)型,主要有PASS和AH兩種?
??????? auth_pass 1111??????? #設(shè)置驗(yàn)證密碼,在同一個(gè)vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信?
??? }?
??? virtual_ipaddress {?????? #設(shè)置虛擬IP地址,可以設(shè)置多個(gè)虛擬IP地址,每行一個(gè)?
??????? 10.0.0.15?
??? }?
??? track_script {?
??????? check_nginx?
??? }?
}
virtual_server 10.0.0.15 80 {?
??? delay_loop 6?
??? lb_algo wrr?
??? lb_kind DR?
??? persistence_timeout 50?
??? protocol TCP
??? real_server 10.0.0.13 80 {?
??????? weight 1?
??????? TCP_CHECK {?
??????????? connect_port 80?
??????????? connect_timeout 3?
??????????? delay_before_retry 3?
??????? }?
??? }
??? real_server 10.0.0.14 80 {?
??????? weight 1?
??????? TCP_CHECK {?
??????????? connect_port 80?
??????????? connect_timeout 3?
??????????? delay_before_retry 3?
??????? }?
??? }?
}
?
節(jié)點(diǎn)B:
[root@B keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {?
?? notification_email {?
???? admin@localhost.com???????????? #設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。 需開(kāi)啟本機(jī)的sendmail服務(wù)?
?? }?
?? notification_email_from? admin@lvtao.net??????? #設(shè)置郵件的發(fā)送地址?
?? smtp_server 127.0.0.1??????????????????????????????? #設(shè)置smtp server地址?
?? smtp_connect_timeout 30????????????????????????????? #設(shè)置連接smtp server的超時(shí)時(shí)間?
?? router_id LVS_DEVEL????????????????????????????????? #表示運(yùn)行keepalived服務(wù)器的一個(gè)標(biāo)識(shí)。發(fā)郵件時(shí)顯示在郵件主題的信息?
}
vrrp_script check_nginx {?
??? script "/etc/keepalived/check_http_port"?
??? interval 2????????????????? #檢查間隔?
??? weight 5??????????????????? #權(quán)重?
}
vrrp_instance VI_1 {?
??? state BACKUP????????????? #指定keepalived的角色,MASTER表示此主機(jī)是主服務(wù)器,BACKUP表示此主機(jī)是備用服務(wù)器?
??? interface eth0??????????? #指定HA監(jiān)測(cè)網(wǎng)絡(luò)的接口?
??? virtual_router_id 51????? #虛擬路由標(biāo)識(shí),這個(gè)標(biāo)識(shí)是一個(gè)數(shù)字,同一個(gè)vrrp實(shí)例使用唯一的標(biāo)識(shí)。即同一vrrp_instance下,MASTER和BACKUP必須是一致的?
??? priority 99?????????????? #定義優(yōu)先級(jí),數(shù)字越大,優(yōu)先級(jí)越高,在同一個(gè)vrrp_instance下,MASTER的優(yōu)先級(jí)必須大于BACKUP的優(yōu)先級(jí)?
??? advert_int 1????????????? #設(shè)定MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒?
??? nopreempt???????????????? #設(shè)置 nopreempt 防止搶占資源,只生效BACKUP節(jié)點(diǎn)?
??? authentication {????????? #設(shè)置驗(yàn)證類(lèi)型和密碼?
??????? auth_type PASS??????? #設(shè)置驗(yàn)證類(lèi)型,主要有PASS和AH兩種?
??????? auth_pass 1111??????? #設(shè)置驗(yàn)證密碼,在同一個(gè)vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信?
??? }?
??? virtual_ipaddress {?????? #設(shè)置虛擬IP地址,可以設(shè)置多個(gè)虛擬IP地址,每行一個(gè)?
??????? 10.0.0.15?
??? }?
??? track_script {?
??????? check_nginx?
??? }?
}
virtual_server 10.0.0.15 80 {?
??? delay_loop 6?
??? lb_algo wrr?
??? lb_kind DR?
??? persistence_timeout 50?
??? protocol TCP
??? real_server 10.0.0.13 80 {?
??????? weight 1?
??????? TCP_CHECK {?
??????????? connect_port 80?
??????????? connect_timeout 3?
??????????? delay_before_retry 3?
??????? }?
??? }
??? real_server 10.0.0.14 80 {?
??????? weight 1?
??????? TCP_CHECK {?
??????????? connect_port 80?
??????????? connect_timeout 3?
??????????? delay_before_retry 3?
??????? }?
??? }?
}
?
[root@A keepalived]# cat relserver.sh?
#!/bin/bash?
#description: Config realserver
VIP=10.0.0.15
. /etc/rc.d/init.d/functions
case "$1" in
start)
?????? /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
?????? /sbin/route add -host $VIP dev lo:0
?????? echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
?????? echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
?????? echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
?????? echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
?????? sysctl -p >/dev/null 2>&1
?????? echo "RealServer Start OK"
?????? ;;
stop)
?????? /sbin/ifconfig lo:0 down
?????? /sbin/route del $VIP >/dev/null 2>&1
?????? echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
?????? echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
?????? echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
?????? echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
?????? echo "RealServer Stoped"
?????? ;;
*)
?????? echo "Usage: $0 {start|stop}"
?????? exit 1
esac
exit 0
[root@A keepalived]#
?
[root@A keepalived]# cat check_http_port?
#!/bin/bash?
#思路:1、使用curl檢查本地nginx可用性?
#????? 2、檢查失敗嘗試啟動(dòng)nginx?
#????? 3、仍失敗,則關(guān)閉本地keepalived
NGINX=/usr/local/nginx/sbin/nginx?
PORT="80"
#curl -v -I -m 10 -o /dev/null -s -w %{http_code}"\n"?http://127.0.0.1/?
curl?http://127.0.0.1:$PORT?
if [ $? -ne 0 ]; then?
??????? #重啟nginx?
??????? /etc/init.d/nginx restart?
#?????? $NGINX -s stop?
#?????? $NGINX?
??????? sleep 3?
??????? curl?http://127.0.0.1/?
??????? [ $? -ne 0 ] && /etc/init.d/keepalived stop?
fi
exit 0?
[root@A keepalived]#
?
2、3個(gè)客戶(hù)端,依次訪(fǎng)問(wèn)。就能重現(xiàn)流量異常。
[root@tsm-test-centos6 ~]# curl 10.0.0.15?
<!DOCTYPE html>?
<html>?
<head>?
<title>Welcome to tengine!</title>?
<style>?
??? body {?
??????? 35em;?
??????? margin: 0 auto;?
??????? font-family: Tahoma, Verdana, Arial, sans-serif;?
??? }?
</style>?
</head>?
<body>?
Welcome to tengine! B?
If you see this page, the tengine web server is successfully installed and?
working. Further configuration is required.
For online documentation and support please refer to?
<a href="http://tengine.taobao.org/">tengine.taobao.org.
<em>Thank you for using tengine.</em>
</body>?
</html>?
[root@tsm-test-centos6 ~]#
?
?
[root@tsm-app-dev1 ~]# curl 10.0.0.15?
<!DOCTYPE html>?
<html>?
<head>?
<title>Welcome to tengine!</title>?
<style>?
??? body {?
??????? 35em;?
??????? margin: 0 auto;?
??????? font-family: Tahoma, Verdana, Arial, sans-serif;?
??? }?
</style>?
</head>?
<body>?
Welcome to tengine! A?
If you see this page, the tengine web server is successfully installed and?
working. Further configuration is required.
For online documentation and support please refer to?
<a href="http://tengine.taobao.org/">tengine.taobao.org.
<em>Thank you for using tengine.</em>
</body>?
</html>?
[root@tsm-app-dev1 ~]#
?
10.0.0.8(我的筆記本)
?
?
原因不得而知,在此記錄。便日后尋得原因。
本文轉(zhuǎn)自 ygqygq2 51CTO博客,原文鏈接:http://blog.51cto.com/ygqygq2/1785087,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Keepalived+nginx造成流量异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP编译遇到的问题
- 下一篇: 3年,感谢你与几维安全一起经历的风风雨雨