LVS+KEEPALIVED負載均衡

 

一、 環境準備

Master-lvs192.168.0.5

Backup-lvs192.168.0.10

App-web01192.168.0.15

App-web02192.168.0.20

VIP192.168.0.50

二、 部署master-lvs服務器

修改內核參數  vi /etc/sysctl.conf 

net.ipv4.conf.lo.arp_ignore = 1

安裝ipvsadm軟件

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

 tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

ln -s /usr/src/kernels/2.6.18-128.el5-PAE-i686   /usr/src/linux

make

make install

安裝Keepalived

ln -s /usr/src/kernels/2.6.18-128.el5-PAE-i686 /usr/src/linux 

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
tar -xvzf keepalived-1.1.17.tar.gz
cd keepalived-1.1.17
./configure --sysconfdir=/etc/ --sbindir=/usr/sbin/

make&make install

修改keepalived.conf

!Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL_1

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1234

    }

    virtual_ipaddress {

        192.168.0.50

    }

}

virtual_server 192.168.0.50 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

    persistence_timeout 50

    protocol TCP

real_server 192.168.0.15 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

real_server 192.168.0.20 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

}

三、 部署Backup-lvs服務器

安裝ipvsadm以及keepalived的包

內核參數需要修改如下值:

net.ipv4.conf.lo.arp_ignore = 1

master-lvs上的配置文件拷貝到Backup-lvs服務器上

master-lvs上運行如下命令拷貝到backup-lvs上面前提是ipvsadmkeepalived已經安裝。

Scp /etc/keepalived/keepalived.conf 192.168.0.10:/etc/keepalived/

Scp /sbin/lvsdr.sh 192.168.0.10:/sbin

可能需要輸入密碼進行文件的傳輸

主要修改keepalived的配置文件,標紅的位置是需要修改的。

!Configuration File for keepalived

global_defs {

   notification_email {

    [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL_2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1234

    }

    virtual_ipaddress {

    192.168.0.50

    }

}

virtual_server 192.168.0.50 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

    persistence_timeout 50

    protocol TCP

real_server 192.168.0.15 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

real_server 192.168.0.20 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

}

分別在masterbackup運行keepalived服務

/etc/init.d/keepalived start

四、 配置後端WEB服務器

        192.168.0.15192.168.0.20上分別建立如下腳本。

       vi /sbin/realdr.sh

        #!/bin/bash

        VIP=172.16.83.126

        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

        /sbin/route add -host $VIP dev lo:0

        echo "1">/proc/sys/net/ipv4/conf/default/arp_ignore

        echo "2">/proc/sys/net/ipv4/conf/default/arp_announce

        echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

        echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

        sysctl -p

配置權限

        chmod 755 /sbin/realdr.sh

在兩臺web服務器上分別執行其指命。

/sbin/realdr.sh start

五、 模擬故障測試

測試keepalived

當我把masterlvs服務關掉的時候,會將用戶請求自動切換到backup上面進行工作。

停止Master-LVSkeepalived服務,人爲造成故障
[root@Master-LVS]# service keepalived stop

這時查看Backup-LVSlog信息
[root@Backup-LVS]# tail -f /var/log/message

?[Copy to clipboard]View Code LOG 

Sep  3 11:23:28 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE

Sep  3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE

Sep  3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.

Sep  3 11:23:29 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.108.180

Sep  3 11:23:29 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.0.50 added

Sep  3 11:23:29 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.0.50 added

Sep  3 11:23:34 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.0.50

由日誌可以看出,Backup-LVS監測到Master-LVS故障後立即將自己的身份切換爲Master然後將VIP設置到自己的eth0端口上併發送ARP廣播。

現在我手動將Master-LVSkeepalived的服務起來,然後再查看Backup-LVSlog信息
[root@Master-LVS]# service keepalived start

[root@Backup-LVS]# tail -f /var/log/message

?[Copy to clipboard]View Code LOG 

Sep  3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert

Sep  3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE

Sep  3 11:30:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.

Sep  3 11:30:44 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.0.50 removed

Sep  3 11:30:44 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.0.50 removed

Backup-LVS的日誌可以看到,其檢測到比自己優先級高的實例後將自己的身份切換成了Backup,然後將VIPeth0端口移除,併發送心跳給Master-LVS

測試lvs

1當我把web服務關掉的時候,lvs上面會顯示web消失,當啓用後,web會自動顯示

Web20關閉後:

[root@localhost ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddressort Scheduler Flags

  -> RemoteAddressort           Forward Weight ActiveConn InActConn

TCP  192.168.0.50:80 wrr

  -> 192.168.0.15:80             Route   10     0          0         

[root@localhost ~]# ipvsadm -ln

Web20啓用後:

root@localhost ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddressort Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.0.50:80 wlc

  -> 192.168.0.15:80             Route   1      0          0         

  -> 192.168.0.20:80             Route   1      0          0     

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