keepalived對后端服務器的監測方式實戰案例
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.keepalived節點配置TCP監測
1>.編輯keepavlied的子配置文件
[root@node102.yinzhengjie.org.cn ~]# mkdir -pv /etc/keepalived/conf.d mkdir: created directory ‘/etc/keepalived/conf.d’ [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# vim /etc/keepalived/conf.d/web.conf [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# cat /etc/keepalived/conf.d/web.conf virtual_server 172.30.1.200 80 { #檢查后端服務器的時間間隔 delay_loop 6 #定義調度方法 lb_algo wrr #定義集群的工作模式 lb_kind DR #持久連接時長,即會話保持時間 persistence_timeout120 #指定服務協議 protocol TCP #所有RS故障時,備用服務器地址 sorry_server 172.30.1.108 80 #定義后端服務器的IP地址,如果工作在lvs的DR工作模式下,vip的訪問端口必須和rip的訪問端口要一致. real_server 172.30.1.106 80 { #RS權重 weight 1 #傳輸層檢測 TCP_CHECK { #連接請求的超時時長 connect_timeout 5 #重試次數 nb_get_retry 3 #重試之前的延遲時長 delay_before_retry 3 #向當前RS的哪個PORT發起健康狀態檢測請求 connect_port 80 } } real_server 172.30.1.107 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } [root@node102.yinzhengjie.org.cn ~]#
2>.編輯keepalived主配置文件
[root@node102.yinzhengjie.org.cn ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived #上一行是注釋信息,global_defs則定義全局配置。 global_defs { #聲明虛擬路標識符,一般會寫當前主機名稱 router_id node102.yinzhengjie.org.cn #所有報文都檢查比較消耗性能,此配置為如果收到的報文和上一個報文是同一個路由器發出的則跳過檢查報文中的源地址。 vrrp_skip_check_adv_addr #禁用防火牆策略,keepalived默認啟動時會自動生成iptables策略,因此我們啟用此項就可以不生成iptables的策略。 vrrp_iptables #嚴格遵守VRRP協議,即不允許以下三種狀況: # 1>.沒有VIP地址; # 2>.單播鄰居; # 3>.在VRRP版本2中有IPv6地址; # #由於我下面配置基於單播地址發送消息,因此我這里手動禁用了嚴格模式,直接注釋即可。 #vrrp_strict #ARP報文發送延遲時間,0表示不延遲。 vrrp_garp_interval 0 #消息發送延遲,0表示不延遲。 vrrp_gna_interval 0 } #使用vrrp_instance指令定義一個VIP實例名稱,我這里自定義VIP實例的名稱為"VIP01",生產環境建議該名稱和業務相結合。 vrrp_instance VIP01 { #指定當前實例默認角色,當前節點在此虛擬路由器上的初始狀態,狀態為MASTER或者BACKUP state BACKUP #定義工作模式為非搶占模式(即當master重啟,VIP會飄移到其它節點,重啟完成后並不會將vip搶過來),需要兩個keepalived的state的值均為"BACKUP",讓它們根 據個節點的優先級選擇對應的master nopreempt #定義VIP綁定的本地接口的名稱(該接口名稱必須在當前節點存在喲~),即綁定為當前虛擬路由器使用的物理接口 interface eth1 #定義當前虛擬路由器惟一標識,該id的范圍是0-255,注意,用一組keepalived的id編號必須要一致喲~ virtual_router_id 27 #當前物理節點在此虛擬路由器中的優先級;范圍1-254 priority 150 #定義vrrp通告的時間間隔,默認1s advert_int 2 #指定單播地址的源地址,需要禁用嚴格模式"vrrp_strict" unicast_src_ip 172.30.1.102 #指定單播地址的對端地址 unicast_peer { 172.30.1.103 } #定義認證機制 authentication { #指定認證類型 auth_type PASS #指定認證密碼,僅前8位有效喲~ auth_pass yinzhengjie } #指定具體的虛擬IP地址,可以指定多個。 virtual_ipaddress { 172.30.1.100 dev eth1 label eth1:0 172.30.1.200 dev eth1 label eth1:1 } #定義通知腳本,當前節點成為主節點時觸發的腳本 notify_master "/etc/keepalived/notify.sh master" #定義通知腳本,當前節點轉為備節點時觸發的腳本 notify_backup "/etc/keepalived/notify.sh backup" #定義通知腳本,當前節點轉為“失敗”狀態時觸發的腳本 notify_fault "/etc/keepalived/notify.sh fault" } #導入keepalived的子配置文件 include /etc/keepalived/conf.d/*.conf [root@node102.yinzhengjie.org.cn ~]#
3>.重啟keepalived使得配置生效

[root@node102.yinzhengjie.org.cn ~]# yum -y install ipvsadm Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * epel: mirrors.njupt.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================= Package Arch Version Repository Size ================================================================================================================================================= Installing: ipvsadm x86_64 1.27-7.el7 base 45 k Transaction Summary ================================================================================================================================================= Install 1 Package Total download size: 45 k Installed size: 75 k Downloading packages: ipvsadm-1.27-7.el7.x86_64.rpm | 45 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : ipvsadm-1.27-7.el7.x86_64 1/1 Verifying : ipvsadm-1.27-7.el7.x86_64 1/1 Installed: ipvsadm.x86_64 0:1.27-7.el7 Complete! [root@node102.yinzhengjie.org.cn ~]#
[root@node102.yinzhengjie.org.cn ~]# systemctl restart keepalived [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.30.1.200:80 wrr -> 172.30.1.106:80 Route 1 0 0 -> 172.30.1.107:80 Route 1 0 0 [root@node102.yinzhengjie.org.cn ~]#
二.keepalived節點配置HTTP監測
1>.
2>.
3>.
4>.
5>.