1. 程式人生 > >(轉)LVS+Keepalived使用總結

(轉)LVS+Keepalived使用總結

虛擬ip serve 模式搭建 zxvf instance bug 每次 lag ipaddr

二、lvs和keepalived的安裝

環境規劃

2*(lvs+keepalived服務器)+n*real-server,一般lvs+keepalived是這樣的架構。

開始安裝

1、 下載軟件包

在http://www.linuxvirtualserver.org/ 下載lvs的軟件包

在http://www.keepalived.org/ 下載keepalived軟件包

2、先編譯安裝lvs,再安裝keepalived,安裝lvs需要內核源碼

下載lvs源碼的時候,一定要選擇你內核版本對應的源碼包。

# uname  -r
2.6.18-164.el5PAE
#yum install kernel-devel -y  //安裝內核源碼包
#ln -s /usr/src/kernels/2.6.18-164.el5PAE-i686/ /usr/src/linux
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz  //ipvsadm包就是lvs軟件包,別覺得名字不一樣
# tar -zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
#make && make install

檢查lvs是否安裝成功:

#ipvsadm //查看是否有輸出

#lsmod | grep ip_vs //如果ipvsadm有輸出,那麽使用這個命令查看是否加載ip_vs模塊,如果加載,那麽lvs算安裝成功。

2、 編譯安裝keepalived,一定在安裝完lvs以後在安裝keepalive

#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz //不建議選擇最新的版本
#tar -zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/  --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/linux/
Keepalived version       : 1.1.15
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : Nod

看見如上輸入,註意yes和no的值,如果一樣,證明配置成功,如果lvs為no,那麽證明你的lvs沒有安裝成功,需要從新安裝lvs再安裝keepalived。

#make && make install

如果沒有報錯,那麽就安裝成功了,檢查一下是否生成了keepalived命令。

三、LVS VS/DR模式搭建

環境介紹

主機IP

角色

安裝軟件

122.225.32.134

Lvs+keepalived MASTER

Ipvsadm keepalived

122.225.32.135

Lvs+keepalived BACKUP

Ipvsadm keepalived

122.225.32.136

Real server

Lvs_real腳本

122.225.32.137

Real server

Lvs_real腳本

122.225.32.142

VIP

註意:所有機器都在一個交換機,並且在一個網段。

1、在134和135上安裝ipvsadm和keepalived軟件。

2、修改keepalived的配置文件

122.225.32.134

# cat /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
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        122.225.32.142
    }
}
virtual_server 122.225.32.142 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0             //此值為0,主要是為了方便測試,每次刷新頁面結果會不一樣
    protocol TCP
    real_server 122.225.32.136 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 122.225.32.137 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

122.225.32.135

和122.225.32.134相比,值需要刪除state MASTER 和 修改priority的值小於master的。

real server

在所有real server上添加下面腳本,名執行# cat /sbin/lvs_real

#!/bin/bash
#description:start realserver
vip=122.225.32.157
source /etc/rc.d/init.d/functions
case $1 in
start)
        echo "Start Realserver"
        /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
        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
;;
stop)
        echo "Stop Realserver"
        /sbin/ifconfig lo:0 down
        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 "Usage: $0 (start | stop)"
exit 1
esac

執行腳本以後,使用ip add命令查看lo接口是否添加了虛擬ip地址。

當然,real server上面需要安裝http服務,並啟動,在index.html裏面添加自己的IP地址,方便客戶端訪問時候辨別訪問的是哪個主機。

3、配置完成以後,開始測試:

在122.225.32.134和122.225.32.135上使用ip add檢查,虛擬IP應該配置在134上面。

測試1{主要測試lvs}:訪問虛擬IP是否可以訪問真實服務器,是否輪詢real server

在master上使用 ipvsadm命令查看lvs狀態。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          0        
  -> 122.225.32.136:http          Route   1      0          0

在客戶端訪問虛擬IP 122.225.32.142,看是否可以訪問。每次刷新,應該會換一個real server。訪問數次後,通過ipvsadm觀察lvs狀態。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          6        
  -> 122.225.32.136:http          Route   1      0          6

測試2{主要測試keepalived}:lvs服務器的HA,當keepalived master掛掉後,keepalived backup會不會接管虛擬IP。

關閉master主機上的keepalived進程。

在backup上ip add查看是否添加虛擬IP,通過/var/log/message查看相關轉換日誌。

測試3{測試backup的lvs}:使用客戶端訪問現在虛擬ip,查看是否一切正常

測試完成後,開啟master的keepalived進程,等虛擬ip轉移到master以後,在從客戶端訪問,查看是否存在問題。

(轉)LVS+Keepalived使用總結