lvs通常是和keepalived一塊兒組合使用的,雖然也能夠單獨使用lvs,但配置比較繁瑣,且可用性也沒有前者高。html
lvs和keepalived組合使用後,配置lvs的VIP和負載均衡就都在keepalived中進行配置,只是在keepalived中調用lvs算法
配置:【keepalived.conf】session
global_defs { notification_email { edisonchou@hotmail.com } notification_email_from sns-lvs@gmail.com smtp_server 192.168.80.1 smtp_connection_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER #指定Keepalived的角色,MASTER爲主,BACKUP爲備 interface eth1 #指定Keepalived的角色,MASTER爲主,BACKUP爲備 virtual_router_id 51 #虛擬路由編號,主備要一致 priority 100 #定義優先級,數字越大,優先級越高,主DR必須大於備用DR advert_int 1 #檢查間隔,默認爲1s authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.80.200 #定義虛擬IP(VIP)爲192.168.2.33,可多設,每行一個 } } # 定義對外提供服務的LVS的VIP以及port virtual_server 192.168.80.200 80 { delay_loop 6 # 設置健康檢查時間,單位是秒 lb_algo wrr # 設置負載調度的算法爲wlc lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式 nat_mask 255.255.255.0 #NAT模式會用到 persistence_timeout 0 #會話保持時間,單位是秒(能夠適當延長時間以保持session) protocol TCP #轉發協議類型,有tcp和udp兩種 sorry_server 127.0.0.1 80 #若是全部realserver都出現問題,vip指向本機80端口 real_server 192.168.80.102 80 { # 指定real server1的IP地址 weight 3 # 配置節點權值,數字越大權重越高 TCP_CHECK { #經過tcpcheck判斷RealServer的健康狀態,檢測健康狀態的方法還有HTTP_GET:經過檢測url狀態進行健康判斷 connect_timeout 10 #超時時間,單位是秒 nb_get_retry 3 #重連次數 delay_before_retry 3 #重連間隔時間 connect_port 80 #檢測端口 } } real_server 192.168.80.103 80 { # 指定real server2的IP地址 weight 3 # 配置節點權值,數字越大權重越高 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
配置:【keepalived.conf】架構
global_defs { notification_email { edisonchou@hotmail.com } notification_email_from sns-lvs@gmail.com smtp_server 192.168.80.1 smtp_connection_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP #指定Keepalived的角色,MASTER爲主,BACKUP爲備 interface eth1 #指定Keepalived的角色,MASTER爲主,BACKUP爲備 virtual_router_id 51 #虛擬路由編號,主備要一致 priority 99 #定義優先級,數字越大,優先級越高,主DR必須大於備用DR advert_int 1 #檢查間隔,默認爲1s authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.80.200 #定義虛擬IP(VIP)爲192.168.2.33,可多設,每行一個 } } # 定義對外提供服務的LVS的VIP以及port virtual_server 192.168.80.200 80 { delay_loop 6 # 設置健康檢查時間,單位是秒 lb_algo wrr # 設置負載調度的算法爲wlc lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式 nat_mask 255.255.255.0 #NAT模式會用到 persistence_timeout 0 #會話保持時間,單位是秒(能夠適當延長時間以保持session) protocol TCP #轉發協議類型,有tcp和udp兩種 sorry_server 127.0.0.1 80 #若是全部realserver都出現問題,vip指向本機80端口 real_server 192.168.80.102 80 { # 指定real server1的IP地址 weight 3 # 配置節點權值,數字越大權重越高 TCP_CHECK { #經過tcpcheck判斷RealServer的健康狀態,檢測健康狀態的方法還有HTTP_GET:經過檢測url狀態進行健康判斷 connect_timeout 10 #超時時間,單位是秒 nb_get_retry 3 #重連次數 delay_before_retry 3 #重連間隔時間 connect_port 80 #檢測端口 } } real_server 192.168.80.103 80 { # 指定real server2的IP地址 weight 3 # 配置節點權值,數字越大權重越高 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
配置腳本:realserver.sh負載均衡
SNS_VIP=192.168.80.200 /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/sys/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 "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
參考資料:tcp