衆所周知,早期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必須在該網絡接口的子網段
arp_announce 對網絡接口上,本地IP地址發出的ARP迴應,作出相應級別的限制
0-默認值在任意網絡接口(eth0,eth1,lo)上的任何本地地址
1-儘量避免不在該網絡接口子網段的本地地址做出arp迴應,當大氣arp請求的源IP地址是被設置應該經過由路由達到次網絡接口的時候很有用。此時會檢查來訪IP是否爲所有接口上的子網段內IP之一。如果該來訪IP不屬於各個網絡接口上的子網段內,那麼將採用級別2的方式來進行處理。
2-對查詢目標使用最適當的本地地址,在此模式下將忽略這個IP數據包的源地址並嘗試選擇能與該地址通信的本地地址,首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址。如果沒有合適的地址被發現,將選擇當前的發送網絡接口或其他的有可能接受到該ARP迴應的網絡接口來進行發送,限制了使用本地的vip地址作爲優先網絡接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++