Lvs + keepalived實現高可用負載均衡集羣
環境:
Lvs--master centos6.4 | eth0:192.168.1.1 |
|
Lvs--backup centos6.4 | eth0:192.168.1.2 | |
Web1 centos5.5 | eth0:192.168.1.3 | |
Web2 centos5.5 | eth0:192.168.1.4 | |
xp | eth0:192.168.1.5 |
在lvs--master上面執行以下操作
yum install -y gcc kernel-devel openssl-devel popt-devel 安裝ipvsadm工具 rpm -ivh ipvsadm-1.25-10.el6.i686.rpm 安裝keepalive tar -zxf keepalived-1.2.8.tar.gz ./configure --sysconfdir=/etc/ --with-kerne-dir=/usr/src/kernels/2.6.32-358.el6.i686/ 注意:這個參數並不是要把Keepalived編譯進內核,而是指定使用內核源碼裏面的頭文件,就是include目錄,不然系統可能無法調用ipvs的模塊 make && make install ln -s /usr/local/sbin/keepalived /sbin/ chkconfig --add keepalived chkconfig keepalived on |
##############################keepalived配置文件如下########################### ! Configuration File for keepalived global_defs { notification_email { [email protected] #設置報警郵件地址,可以設置多個,每行一個,注意,如果要開啓郵件報警,需要開啓本機的sendmail服務 } notification_email_from keepalived@localhost #設置郵件的發送地址 smtp_server 127.0.0.1 #smtp server地址 smtp_connect_timeout 30 #設置連接smtp服務器超時時間 router_id LVS_DEVEL #運行keepalived機器的標識 } vrrp_instance VI_1 { state MASTER #指定keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示備用服務器 注意:備用節點上要改成BACKUP interface eth0 #指定監測的網絡的接口 virtual_router_id 51 #虛擬路由標識,這個標識是一個數字,兩個節點必須一樣,以指明各個節點屬於同一vrrp組 advert_int 1 #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication { #設置驗證類型和密碼 auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 #設置虛擬ip地址,可以設置多個虛擬ip地址,每行一個 } } virtual_server 192.168.1.100 80 { #設置虛擬服務器,需要指定虛擬ip地址和服務端口,ip與端口之間用空格隔開 delay_loop 6 #設置健康檢查時間,單位是秒 lb_algo rr #設置lvs的調度算法,這裏設置的是rr算法,即輪循算法 lb_kind DR #設置LVS實現負載均衡的機制,可以有NAT、TUN、DR三個模式可選 nat_mask 255.255.255.0 persistence_timeout 50 #會話保持時間,單位是秒 protocol TCP #指定轉發協議類型,有tcp和udp兩種 real_server 192.168.1.3 80 { #設置服務節點1,需要指定real server的真實ip和端口,ip和端口之間用空格隔開 weight 3 #權重值,數字越大,權重越高 TCP_CHECK { #tcp健康檢查 connect_timeout 3 #3秒無響應超時 nb_get_retry 3 #重試次數 delay_before_retry 3 #重試間隔 connect_port 80 #健康檢查端口 } { real_server 192.168.1.4 80 { #設置服務節點2,需要指定real server的真實ip和端口,ip和端口之間用空格隔開 weight 3 #權重值,數字越大,權重越高 TCP_CHECK { #tcp健康檢查 connect_timeout 3 #3秒無響應超時 nb_get_retry 3 #重試次數 delay_before_retry 3 #重試間隔 connect_port 80 #健康檢查端口 } } } |
注意:將以上操作在lvs--backup執行一遍
注意:keepalived配置在backup上面要修改兩處1: state MASTER 要改成state BACKUP 2:修改優先級
然後在後端的web1 和web2上面做以下操作(需要有web服務,最好將這兩個web的index.html測試文件寫成不同內容,方便測試驗證,安裝過程略)
######################################################################################### 分別在realserver上執行realserver.sh這個腳本,腳本內容如下 #!/bin/bash SNS_VIP=192.168.1.100 ./etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP /sbin/route add -host $SNS_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/suys/net/ipv4/conf/all/arp_announce sysctl -p > /dev/null 2>&1 echo "RealServer Start OK" ;; stop) ifconfig lo:0 down route del $SNS_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 "Usage: $0 {start |stop}" exit 1 esac exit 0 ######################################################################################################### 然後做以下操作 mkdir /sh cp realserver.sh /sh chmod +x /sh/realserver.sh 加入開機啓動 echo “bash /sh/realserver.sh start “ >> /etc/rc.loacl 啓動腳本: bash /sh/realserver.sh start |
##########################################################################################################
然後分別在lvs--master和lvs-backup啓動keepalived
service keepalived start
chkconfig keepalived on
然後用ip addr 命令查看vip是否已經存在
測試:1:通過xp客戶看訪問VIP地址,看看是否能訪問正常,有沒有輪循的效果
2:測試keepalived,將lvs--master關機或者斷網,然後去lvs---backup上面是不是有了VIP地址,如果有,則說明成功,否則錯誤
報錯信息
1:configure: error: Popt libraries is required
解決辦法:yum install popt-devel