日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keepalived+nginx造成流量异常

發(fā)布時(shí)間:2025/6/16 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Keepalived+nginx造成流量异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、使用虛擬機(jī)搭建環(huán)境

也是A、B 2臺機(jī)器,使用一樣的配置和軟件。

環(huán)境:CentOS6.5 2臺虛擬機(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è)置多個,每行一個。 需開啟本機(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ù)器的一個標(biāo)識。發(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)測網(wǎng)絡(luò)的接口?
??? virtual_router_id 51????? #虛擬路由標(biāo)識,這個標(biāo)識是一個數(shù)字,同一個vrrp實(shí)例使用唯一的標(biāo)識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的?
??? priority 100?????????????? #定義優(yōu)先級,數(shù)字越大,優(yōu)先級越高,在同一個vrrp_instance下,MASTER的優(yōu)先級必須大于BACKUP的優(yōu)先級?
??? advert_int 1????????????? #設(shè)定MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒?
??? nopreempt???????????????? #設(shè)置 nopreempt 防止搶占資源,只生效BACKUP節(jié)點(diǎn)?
??? authentication {????????? #設(shè)置驗(yàn)證類型和密碼?
??????? auth_type PASS??????? #設(shè)置驗(yàn)證類型,主要有PASS和AH兩種?
??????? auth_pass 1111??????? #設(shè)置驗(yàn)證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信?
??? }?
??? virtual_ipaddress {?????? #設(shè)置虛擬IP地址,可以設(shè)置多個虛擬IP地址,每行一個?
??????? 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è)置多個,每行一個。 需開啟本機(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ù)器的一個標(biāo)識。發(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)測網(wǎng)絡(luò)的接口?
??? virtual_router_id 51????? #虛擬路由標(biāo)識,這個標(biāo)識是一個數(shù)字,同一個vrrp實(shí)例使用唯一的標(biāo)識。即同一vrrp_instance下,MASTER和BACKUP必須是一致的?
??? priority 99?????????????? #定義優(yōu)先級,數(shù)字越大,優(yōu)先級越高,在同一個vrrp_instance下,MASTER的優(yōu)先級必須大于BACKUP的優(yōu)先級?
??? advert_int 1????????????? #設(shè)定MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒?
??? nopreempt???????????????? #設(shè)置 nopreempt 防止搶占資源,只生效BACKUP節(jié)點(diǎn)?
??? authentication {????????? #設(shè)置驗(yàn)證類型和密碼?
??????? auth_type PASS??????? #設(shè)置驗(yàn)證類型,主要有PASS和AH兩種?
??????? auth_pass 1111??????? #設(shè)置驗(yàn)證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信?
??? }?
??? virtual_ipaddress {?????? #設(shè)置虛擬IP地址,可以設(shè)置多個虛擬IP地址,每行一個?
??????? 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、檢查失敗嘗試啟動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個客戶端,依次訪問。就能重現(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)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的Keepalived+nginx造成流量异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。