(轉)LVS+Keepalived使用總結
二、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使用總結