Keepalived管理LVS負載均衡實戰
阿新 • • 發佈:2018-05-04
Keepalived LVS Linux 負載均衡
眾所周知,早期LVS軟件,需要通過命令行或腳本實現管理,而且沒有針對LVS節點的健康檢查功能。為了解決LVS的這些使用不便問題,Keepalived便誕生。
Keepalived服務的三大重要功能
arp_announce 對網絡接口上,本地IP地址發出的ARP回應,作出相應級別的限制
0-默認值在任意網絡接口(eth0,eth1,lo)上的任何本地地址
1-盡量避免不在該網絡接口子網段的本地地址做出arp回應,當大氣arp請求的源IP地址是被設置應該經過由路由達到次網絡接口的時候很有用。此時會檢查來訪IP是否為所有接口上的子網段內IP之一。如果該來訪IP不屬於各個網絡接口上的子網段內,那麽將采用級別2的方式來進行處理。
2-對查詢目標使用最適當的本地地址,在此模式下將忽略這個IP數據包的源地址並嘗試選擇能與該地址通信的本地地址,首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址。如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP回應的網絡接口來進行發送,限制了使用本地的vip地址作為優先網絡接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
眾所周知,早期LVS軟件,需要通過命令行或腳本實現管理,而且沒有針對LVS節點的健康檢查功能。為了解決LVS的這些使用不便問題,Keepalived便誕生。
Keepalived服務的三大重要功能
- 管理VLS負載均衡
- 實現對LVS集群node健康檢查
-
作為系統網絡服務的高可用**
閑話不多說,直接上實例**
LB端Keepalived配置
[root@lb01 keepalived]# ip addr del 10.0.0.3/24 dev eth0 label eth0:0 [root@lb02 keepalived]# ipvsadm -C 修改keepalived主配置文件 [root@lb01 keepalived]# cat keepalived.conf+lvs_master ! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.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 { 10.0.0.3/24 dev eth0 label eth0:1 } } #ipvsadm -A -t 10.0.0.3:80 -s wrr ?LVS命令配置示例與Keepalived對比 virtual_server 10.0.0.3 80 { ?-lvs中的VIP delay_loop 6 ?延遲 lb_algo rr ?輪詢調度算法 lb_kind DR ?直接路由模式 nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP ?調度協議 #ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1 ?LVS命令配置示例與Keepalived對比 real_server 10.0.0.7 80 { weight 1 TCP_CHECK { connect_timecout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } #ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1 ?LVS命令配置示例與Keepalived對比 real_server 10.0.0.8 80 { weight 1 TCP_CHECK { connect_timecout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [root@lb01 ~]# /etc/init.d/keepalived restart ?重啟keepalived
Real server節點實例也一起奉上
[root@web02 ~]# lsmod |grep ip_vs ip_vs_wrr 2179 0 ip_vs 126534 2 ip_vs_wrr libcrc32c 1246 1 ip_vs ipv6 335589 277 ip_vs [root@web02 ~]# ip addr add 10.0.0.3/32 dev lo label lo:0 [root@web02 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore [root@web02 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce [root@web02 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore [root@web02 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
遇到的問題:
lsmod |grep ip_vs 查詢時沒反饋如下圖
解決辦法:[root@web02 ~]# ipvsadm或modprode ip_vs
如果ln沒有發現內核,那是因為Kernels-devel沒安裝
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Arp抑制說明
arp_ignore 定義對目標地址為本地IP的ARP詢問不同的應答模式
0-默認值:回應任何網絡接口上對任何本地IP地址的arp查詢請求。
1-只目標IP地址是來訪網絡接口本地地址的ARP查詢請求
2-只回答目標IP地址是來訪網絡接口本地地址的arp查詢請求,且來訪IP必須在該網絡接口的子網段
0-默認值在任意網絡接口(eth0,eth1,lo)上的任何本地地址
1-盡量避免不在該網絡接口子網段的本地地址做出arp回應,當大氣arp請求的源IP地址是被設置應該經過由路由達到次網絡接口的時候很有用。此時會檢查來訪IP是否為所有接口上的子網段內IP之一。如果該來訪IP不屬於各個網絡接口上的子網段內,那麽將采用級別2的方式來進行處理。
2-對查詢目標使用最適當的本地地址,在此模式下將忽略這個IP數據包的源地址並嘗試選擇能與該地址通信的本地地址,首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址。如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP回應的網絡接口來進行發送,限制了使用本地的vip地址作為優先網絡接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Keepalived管理LVS負載均衡實戰