天天看點

lvs+keepalived實作高可用負載均衡

四台機器環境:

IP位址            lvs版本      keepalived版本     系統版本            用途

192.168.15.67      1.2.4        1.1.15            redhat4.8(64位)     MASTER

192.168.15.91      1.2.4        1.1.15            redhat4.8(64位)     BACKUP

192.168.15.93      無需安裝     無需安裝          redhat4.8(64位)     Realserver

192.168.15.94      無需安裝     無需安裝          redhat4.8(64位)     Realserver

192.168.15.120                                                        VIP

拓撲圖:

lvs+keepalived實作高可用負載均衡

1、lvs軟體ipvsadm下載下傳安裝(主機和備機上面都必須安裝)

tar zxvf ipvsadm-1.24.tar.gz

ln -s /usr/src/kernels/2.6.9-89.EL-smp-x86_64 /usr/src/linux //注釋:這一步針對自己的系統做,否則一會安裝ipvsadm會報錯。

cd ipvsadm-1.24

make

make install

2、keepalived下載下傳安裝(主機和備機上面都必須安裝)

tar zxvf keepalived-1.1.15.tar.gz

cd keepalived-1.1.15

//注釋:如果系統rhel版本低于5.0以下安裝報錯,這裡要修改系統配置

//vi /usr/src/linux/include/linux/types.h 将下面2行紅色字型用/* */注釋掉,如下圖

/*

typedef __u16 __bitwise __sum16;

typedef __u32 __bitwise __wsum;

*/

./configure

3、将keepalived做成服務啟動(主機和備機上面都必須安裝)

cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/            注釋:拷貝服務啟動檔案

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/     

mkdir /etc/keepalived/                                   注釋:建立配置檔案目錄

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/   注釋:拷貝配置檔案

cp /usr/local/sbin/keepalived /usr/sbin/                     注釋:拷貝可執行檔案

service keepalived start                                  注釋:測試服務啟動與關閉

service keepalived stop

4、主機上配置keeplived(配置前備份好keepalived.conf檔案然後再清空即可)

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

echo “” > /etc/keepalived/keepalived.conf

增加如下内容:

! Configuration File for keepalived

global_defs {

   notification_email {

       [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   router_id LVS_DEVEL

}

vrrp_instance VI_1 {

   state MASTER                             狀态是MASTER

   interface eth0                             監聽網卡切換

   virtual_router_id 51

   priority 100                               優先級100

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 1111

virtual_ipaddress {

      192.168.15.120                          虛拟IP位址,即VIP

virtual_server 192.168.15.120 80{

   delay_loop 6

   lb_algo wlc

   lb_kind DR                                       DR模式

   persistence_timeout 1

   protocol TCP

   real_server 192.168.15.94 80{

       weight 1                                     權重,權重越高處理的請求越多

       TCP_CHECK {

       connect_timeout 1

       nb_get_retry 3

       delay_before_retry 3

       connect_port 80

       }

   real_server 192.168.15.93 80{

       weight 1

virtual_server 192.168.15.120 1099{

   lb_kind DR

   real_server 192.168.15.94 1099{

       connect_port 1099

   real_server 192.168.15.93 1099{

5、備機上配置keeplived(配置前備份好keepalived.conf檔案然後再清空即可)

增加如下内容:(隻有兩處和主機上的不一樣,下面已用紅色字型标出)

   state BACKUP                                     注意狀态是BACKUP

   interface eth0

   priority 99                                       優先級是99,比主機低

      192.168.15.120

       connect_timeout 1

6、兩台realserver上啟動腳本,腳本内容如下:

#!/bin/bash

VIP=192.168.15.120

. /etc/rc.d/init.d/functions

case "$1" in

start)

        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

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

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

        sysctl -p > /dev/null 2>&1

        echo "realserver start OK"

        ;;

stop)

        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

        ifconfig lo:0 down

        /sbin/route del $VIP > /dev/null 2>&1         

        echo "realserver stoped"

*)

        echo "Usage:$0 {start|stop}"

        exit 1

esac

exit 0

7、測試工作:

1)啟動主機和備機的keepalived服務,ip a确認是否有vip位址?

2)輸入ipvsadm -Ln檢視是否有如下内容輸出?

ipvsadm -Ln

IP Virtual Server version 1.2.0 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.15.120:80 wlc persistent 1

  -> 192.168.15.94:80             Route   1      122        4        

  -> 192.168.15.93:80             Route   1      124        6        

TCP  192.168.15.120:1099 wlc persistent 1

  -> 192.168.15.94:1099           Route   1      0          0        

  -> 192.168.15.93:1099           Route   1      0          0    

3)停止主機的keepalived服務,備機上确認是否接管vip位址?

4)備機上輸入ipvsadm -Ln檢視ActiveConn和InActConn對應的值不為0?主機上反而為0了。

5)啟動主機的keepalived服務,确認主機再次接管vip位址繼續服務?

我這裡就不做測試了!!!有問題請留言!

繼續閱讀