LVS+Keepalived負載均衡配置

簡介

lvs通常是和keepalived一塊兒組合使用的,雖然也能夠單獨使用lvs,但配置比較繁瑣,且可用性也沒有前者高。html

lvs和keepalived組合使用後,配置lvs的VIP和負載均衡就都在keepalived中進行配置,只是在keepalived中調用lvs算法

 

架構圖

 

 

配置

LVS+Keepalived MASTER

配置:【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  
        }  
     }  
}

 

 


LVS+Keepalived BACKUP

配置:【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  
        }  
     }  
}

 

 

Real Server

配置腳本: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

http://www.cnblogs.com/edisonchou/p/4281978.htmloop

 http://www.tuicool.com/articles/Vz2qYjui

相關文章
相關標籤/搜索