lvs(dr)+keepalived

LVS原理請看:http://ixdba.blog.51cto.com/2895551/552947


LVS-MASTER   192.168.100.113

LVS-BACKUP   192.168.100.116

REALSERVER1  192.168.100.114

REALSERVER2  192.168.100.115

VIP          192.168.100.125

一. 在LVS-MASTER跟LVS-BACKUP安裝keepalived跟ipvsadm,我選擇yum安裝

[root@localhost ~]# yum install -y ipvsadm keepalived

安裝完成後配置keepalived

LVS-MASTER配置:

[root@localhost ~]# cd /etc/keepalived/

[root@localhost keepalived]# > keepalived.conf

[root@localhost keepalived]# vim keepalived.conf 

將此段代碼複製進去

global_defs {

   notification_email {

         [email protected]

   }

   notification_email_from [email protected]

   smtp_server 192.168.80.1

   smtp_connection_timeout 30

   router_id LVS_DEVEL  # 設置lvs的id,在一個網絡內應該是唯一的

}

vrrp_instance VI_1 {

    state MASTER   #指定Keepalived的角色,MASTER爲主,BACKUP爲備

    interface eth0  #設置對外服務的接口

    virtual_router_id 51  #虛擬路由編號,主備要一致

    priority 100  #定義優先級,數字越大,優先級越高,主DR必須大於備用DR

    advert_int 1  #檢查間隔,默認爲1s

    authentication {  #設置驗證類型和密碼,master和buckup一定要設置一樣

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.100.125  #定義虛擬IP(VIP)爲192.168.100.125,可多設,每行一個

    }

}

# 定義對外提供服務的LVS的VIP以及port

virtual_server 192.168.100.125 80 {

    delay_loop 6 # 設置健康檢查時間,單位是秒

    lb_algo wrr # 設置負載調度的算法爲wlc

    lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式

    nat_mask 255.255.255.0                

    persistence_timeout 0     #會話保持時間,單位秒

    protocol TCP      

    real_server 192.168.100.114 80 {  # 指定real server1的IP地址

        weight 3   # 配置節點權值,數字越大權重越高

        TCP_CHECK {  

        connect_timeout 10     #連接超時時間

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.100.115 80 {  # 指定real server2的IP地址

        weight 3  # 配置節點權值,數字越大權重越高

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

啓動keepalived 服務

[root@localhost ~]# service keepalived start

正在啓動 keepalived:                                      [確定]

[root@localhost ~]# chkconfig keepalived on 

[root@localhost ~]# chkconfig --list | grep keepalived

keepalived     0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

LVS-BACKUP配置:

只需要將LVS-MASTER配置修改兩處即可

state BACKUP   #指定Keepalived的角色,MASTER爲主,BACKUP爲備

priority 90  #定義優先級,數字越大,優先級越高,主DR必須大於備用DR

REALSERVER1跟REALSERVER2 配置

[root@localhost ~]# vi /etc/rc.d/init.d/realserver     把以下腳本貼到realserver裏去     

#!/bin/bash
#cription: config realserver lo  and  apply noarp

WEB_VIP=192.168.100.125  #虛擬vip,也就是虛擬ip
. /etc/rc.d/init.d/functions

case "$1" in

start)
   ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
   /sbin/route add -host $WEB_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
   echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
   echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce
   echo "1" > /proc/sys/net/ipv4/conf/default/arp_ignore
   echo "2" > /proc/sys/net/ipv4/conf/default/arp_announce
   sysctl -p >/dev/null 2>&1
   echo "RealServer Start OK"
   ;;
stop)
   ifconfig lo:0 down
   route del $WEB_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 "0" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
   echo "0" > /proc/sys/net/ipv4/conf/eth0/arp_announce
   echo "0" > /proc/sys/net/ipv4/conf/default/arp_ignore
   echo "0" > /proc/sys/net/ipv4/conf/default/arp_announce
   echo "RealServer Stoped"
   ;;
status)
       # Status of LVS-DR real server.
       islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
       isrothere=`netstat -rn | grep "lo:0" | grep $WEB_VIP`
       if [ ! "$islothere" -o ! "isrothere" ];then
         # Either the route or the lo:0 device
         # not found.
         echo "LVS-DR real server Stopped."
       else
         echo "LVS-DR Running."
       fi
;;
*)
       # Invalid entry.
       echo "$0: Usage: $0 {start|status|stop}"
       exit 1
;;
esac
exit 0


開啓服務

測試------------------------------------------------------------------------------------

輸入192.168.100.125

wKioL1izk_7wxs65AAA6anFlPGc732.png

刷新一下顯示192.168.100.114 配置成功

wKioL1izk__ROw4LAAA-6dh6dN0936.png


[root@localhost ~]# service realserver start

RealServer Start OK

測試。。。。。。。。。。。。。。。。。。。。。。。。。

關閉192.168.100.115  REALSERVER2 的nginx 服務器

LVS-MASTER上 查看日誌

[root@localhost ~]# tail -f /var/log/messages

wKiom1ivBnvz86E8AAAJ13NlllY327.png-wh_50

然後再開啓服務,看看日誌

wKiom1ivBvnhXM3sAAALt2TM8Ys797.png-wh_50


模擬LVS-MASTER 宕機  在LVS-BACKUP 查看日誌

關閉keepalived 服務

wKioL1ivC1WDapcEAAA2LA0yq3E961.png-wh_50

然後開啓服務

wKioL1ivC1WhgiKxAAAnbR7uT6w995.png-wh_50


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章