Keepalived管理LVS負載均衡實戰

Keepalived管理LVS負載均衡實戰
衆所周知,早期LVS軟件,需要通過命令行或腳本實現管理,而且沒有針對LVS節點的健康檢查功能。爲了解決LVS的這些使用不便問題,Keepalived便誕生。
Keepalived服務的三大重要功能

  1. 管理VLS負載均衡
  2. 實現對LVS集羣node健康檢查
  3. 作爲系統網絡服務的高可用**

    閒話不多說,直接上實例**


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 查詢時沒反饋如下圖
Keepalived管理LVS負載均衡實戰
解決辦法:
[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地址作爲優先網絡接口。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章