天天看點

Keepalived+nginx造成流量異常1、使用虛拟機搭建環境2、3個用戶端,依次通路。就能重制流量異常。

也是A、B 2台機器,使用一樣的配置和軟體。

環境:CentOS6.5 2台虛拟機

keepalived版本1.2.19

tengine版本2.1.2

節點A :

[root@A keepalived]# cat keepalived.conf

! Configuration File for keepalived

global_defs { 

   notification_email { 

     [email protected]             #設定報警郵件位址,可以設定多個,每行一個。 需開啟本機的sendmail服務 

   } 

   notification_email_from  [email protected]        #設定郵件的發送位址 

   smtp_server 127.0.0.1                                #設定smtp server位址 

   smtp_connect_timeout 30                              #設定連接配接smtp server的逾時時間 

   router_id LVS_DEVEL                                  #表示運作keepalived伺服器的一個辨別。發郵件時顯示在郵件主題的資訊 

}

vrrp_script check_nginx { 

    script "/etc/keepalived/check_http_port" 

    interval 2                  #檢查間隔 

    weight 5                    #權重 

vrrp_instance VI_1 { 

    state BACKUP              #指定keepalived的角色,MASTER表示此主機是主伺服器,BACKUP表示此主機是備用伺服器 

    interface eth0            #指定HA監測網絡的接口 

    virtual_router_id 51      #虛拟路由辨別,這個辨別是一個數字,同一個vrrp執行個體使用唯一的辨別。即同一vrrp_instance下,MASTER和BACKUP必須是一緻的 

    priority 100               #定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級 

    advert_int 1              #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,機關是秒 

    nopreempt                 #設定 nopreempt 防止搶占資源,隻生效BACKUP節點 

    authentication {          #設定驗證類型和密碼 

        auth_type PASS        #設定驗證類型,主要有PASS和AH兩種 

        auth_pass 1111        #設定驗證密碼,在同一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信 

    } 

    virtual_ipaddress {       #設定虛拟IP位址,可以設定多個虛拟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 { 

節點B:

[root@B keepalived]# cat keepalived.conf

    priority 99               #定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER的優先級必須大于BACKUP的優先級 

[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 

#思路:1、使用curl檢查本地nginx可用性 

#      2、檢查失敗嘗試啟動nginx 

#      3、仍失敗,則關閉本地keepalived

NGINX=/usr/local/nginx/sbin/nginx 

PORT="80"

if [ $? -ne 0 ]; then 

        #重新開機nginx 

        /etc/init.d/nginx restart 

#       $NGINX -s stop 

#       $NGINX 

        sleep 3 

        [ $? -ne 0 ] && /etc/init.d/keepalived stop 

fi

exit 0 

[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 

<em>Thank you for using tengine.</em>

</body> 

</html> 

[root@tsm-test-centos6 ~]#

[root@tsm-app-dev1 ~]# curl 10.0.0.15 

Welcome to tengine! A 

[root@tsm-app-dev1 ~]#

10.0.0.8(我的筆記本)

<a href="http://s3.51cto.com/wyfs02/M01/82/88/wKiom1dX5Fyh5zA9AAAi3QQX8VQ400.png"></a>

<a href="http://s3.51cto.com/wyfs02/M02/82/88/wKiom1dX5F2wdpjOAACanpKG8f8392.png"></a>

原因不得而知,在此記錄。便日後尋得原因。

本文轉自 ygqygq2 51CTO部落格,原文連結:http://blog.51cto.com/ygqygq2/1785087,如需轉載請自行聯系原作者

繼續閱讀