1. 程式人生 > >lvs+keepalived+ipvsadm 完整搭建筆記

lvs+keepalived+ipvsadm 完整搭建筆記

原文 :http://www.safecdn.cn/2018/12/lvs-keepalived-ipvsadm/ 1、環境介紹: 系統:centos 6.7 keepalived VIP1 :10.0.5.155 keepalived VIP2:10.0.5.156

 

Lvs:節點 node-5-150: 10.0.5.150 node-5-152: 10.0.5.152 Real-Server節點: node-5-153: 10.0.5.153 node-5-154: 10.0.5.154   2、lvs+keepalived軟體部署 #安裝epel源 yum install -y epel-release #安裝keepalived ipvsadm yum install -y keepalived ipvsadm #檢視安裝資訊 yum info keepalived ipvsadm #檢視是否安裝完成以及顯示檔案路徑 rpm -ql keepalived ipvsadm   3、keepalived-lvs配置檔案 Lvs:節點 node-5-150: 10.0.5.150   VIP主:10.0.5.155 VIP備:10.0.5.156 [
[email protected]
keepalived]#cat /etc/keepalived/keepalived.conf
#全域性定義部分 global_defs { notification_email { #設定報警郵件地址,可以設定多個 [email protected] #每行一個。注意,如果要開啟郵件報警 [email protected] #需要開啟本機的 Sendmail 服務 [email protected] } notification_email_from
[email protected]
#設定郵件的傳送地址 smtp_server 127.0.0.1 #設定smtp server地址 smtp_connect_timeout 30 #設定連線 smtp server 的超時時間 router_id node_05 #表示執行 Keepalived伺服器的一個標識。發郵件時顯示在郵件主題中的資訊 }   #vrrp 例項定義部分 vrrp_instance VI_1 { state MASTER    #指定 Keepalived 的角色,MASTER表示此主機是主伺服器,BACKUP表示此主機是備用伺服器. interface eth0    #指定監測網路的介面 virtual_router_id 51   #虛擬路由標識,這個標識是一個數字,同一個 vrrp 例項使用唯一的標識,即同一個vrrp_instance下,MASTER和BACKUP 必須是一致的 priority 100   #定義優先順序,數字越大,優先順序越高。在一個vrrp_instance下,MASTER的優先順序必須大於BACKUP的優先順序 advert_int 1   #設定MASTER與BACKUP 負載均衡器之間同步檢查的時間間隔,單位是秒 authentication {   #設定驗證型別和密碼 auth_type PASS   #設定驗證型別,主要有PASS和AH兩種 auth_pass 1111   #設定驗證密碼,在一個vrrp_instance下,MASTER與BACKUP 必須使用相同的密碼才能正常通訊 } virtual_ipaddress { 10.0.5.155   #設定虛擬IP地址,可以設定多個虛擬IP地址,每行一個 } }   vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 52 priority 60 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 10.0.5.156 } }   #虛擬伺服器定義部分 virtual_server 10.0.5.155 80 {   #設定虛擬伺服器,需要指定虛擬IP地址和服務埠IP與埠之間用空格隔開 delay_loop 6   #設定健康檢查的時間間隔,單位是秒 lb_algo rr   #設定負載排程演算法,這裡設定為rr,即輪詢演算法 lb_kind DR   #設定LVS實現負載均衡的機制,有 NAT、TUN和DR三個模式可選 nat_mask 255.255.255.0 persistence_timeout 0 #會話保持時間,單位是秒。這個選項對動態網頁是非常有用的,為集群系統中的 session共享提供了一個很好的解決方案。有了這個會話保持功能,使用者的請求會被一直分發到某個服務節點,直到超過這個會話的保持時間。需要注意的是,這個會話保持時間是最大無響應超時時間,也就是說,使用者在操作動態頁面時,如果在 50秒內沒有執行任何操作,那麼接下來的操作會被分發到另外節點,但是如果使用者一直在操作動態頁面,則不受50秒的時間限制。 protocol TCP #指定轉發協議型別,有TCP和UDP兩種 #sorry_server 127.0.0.1 80 real_server 10.0.5.153 80 { #配置服務節點 1,需要指定 real server的真實IP地址和埠,IP與埠之間用空格隔開 weight 1 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設定權值的大小可以為不同效能的伺服器分配不同的負載,可以為效能高的伺服器設定較高的權值,而為效能較低的伺服器設定相對較低的權值,這樣才能合理地利用和分配了系統資源 TCP_CHECK { #realserve的狀態檢測設定部分,單位是秒 connect_timeout 3 #表示3秒無響應超時 nb_get_retry 3 #表示重試次數 delay_before_retry 3 #表示重試間隔 connect_port 80 #檢查80埠 } }   real_server 10.0.5.154 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }   virtual_server 10.0.5.156 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP #sorry_server 127.0.0.1 80   real_server 10.0.5.153 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }   real_server 10.0.5.154 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
#################################### Lvs:節點 node-5-152: 10.0.5.152   VIP主:10.0.5.156 VIP備:10.0.5.155 [[email protected] keepalived]# cat /etc/keepalived/keepalived.conf  
global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node_05 }   vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 60 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.5.155 } }   vrrp_instance VI_2 { state MASTER interface eth0 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 2222 } virtual_ipaddress { 10.0.5.156 } }   virtual_server 10.0.5.155 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP #sorry_server 127.0.0.1 80 real_server 10.0.5.153 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }   real_server 10.0.5.154 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }   virtual_server 10.0.5.156 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP #sorry_server 127.0.0.1 80   real_server 10.0.5.153 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }   real_server 10.0.5.154 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }  
  ######################################## 4、Real-Server節點配置檔案 node-5-153: 10.0.5.153 node-5-154: 10.0.5.154 節點配置和路徑一樣 [[email protected] ~]# cat /etc/init.d/lvsrs
#!/bin/bash sh /etc/rc.d/init.d/functions   VIP1=10.0.5.155 VIP2=10.0.5.156 case “$1” in start) ifconfig lo:1 $VIP1 netmask 255.255.255.255 broadcast $VIP1 /sbin/route add -host $VIP1 dev lo:1 ifconfig lo:2 $VIP2 netmask 255.255.255.255 broadcast $VIP2 /sbin/route add -host $VIP2 dev lo:2 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 “Real Server Start OK”   ;; stop) ifconfig lo:1 down route del $VIP1 >/dev/null 2>&1 ifconfig lo:2 down route del $VIP2 >/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 “Real Server Stoped” ;; status)   status1=`/sbin/ifconfig lo:1 | grep $VIP1` status2=`netstat -rn | grep “lo:1” | grep $VIP1` if [ ! “$status1” -o ! “status2” ];then echo “Lvs-DR real server Stopped.” else echo “LVS-DR Running.” fi status1=`/sbin/ifconfig lo:2 | grep $VIP2` status2=`netstat -rn | grep “lo:2” | grep $VIP2` if [ ! “$status1” -o ! “status2” ];then echo “LVS-DR real server Stopped.” else echo “LVS-DR Running.” fi ;; *) # Invalid entry. echo “$0: Usage: $0 {start|status|stop}” exit 1 ;; esac exit 0
  5、LVS節點:watch ipvsadm -Ln Real Server節點: