LVS實現健康性檢查功能


LVS高可用性

Director不可用,整個系統將不可用;SPoF Single Point of Failure

解決方案:高可用

keepalived heartbeat/corosync

某RS不可用時,Director依然會調度請求至此RS

解決方案: 由Director對各RS健康狀態進行檢查,失敗時禁用,成功時啟用

keepalived heartbeat/corosync ldirectord

檢測方式:

(a) 網絡層檢測,icmp
(b) 傳輸層檢測,端口探測
(c) 應用層檢測,請求某關鍵資源

RS全不用時:backup server, sorry server

ldirectord

ldirectord:監控和控制LVS守護進程,可管理LVS規則

包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm

下載:http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/x86_64/

文件:

/etc/ha.d/ldirectord.cf 主配置文件
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版
/usr/lib/systemd/system/ldirectord.service 服務
/usr/sbin/ldirectord 主程序,Perl實現
/var/log/ldirectord.log 日志
/var/run/ldirectord.ldirectord.pid pid文件

 ldirectord實戰演練: 

1、在LVS服務器上下載ldirectord包,並安裝此包

[root@lvsdata]#wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/x86_64/ldirectord-3.9.6-0rc1.1.2.x86_64.rpm
[root@lvsdata]#yum install ldirectord-3.9.6-0rc1.1.2.x86_64.rpm -y 

 2、查看安裝后的包

[root@lvsdata]#rpm -ql ldirectord-3.9.6-0rc1.1.2
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/lib/systemd/system/ldirectord.service
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.6
/usr/share/doc/ldirectord-3.9.6/COPYING
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz

 3、在LVS服務器上,將配置文件復制到/etc/ha.d目錄下

[root@lvsdata]#cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/

 4、在LVS服務器上安裝httpd服務,並啟動

[root@lvsha.d]#yum install httpd -y
[root@lvsha.d]#echo Sorry Server > /var/www/html/index.html
[root@lvsha.d]#systemctl start httpd

 5、在原有搭建好的LVS負載均衡調度基礎上,修改此配置文件

virtual=10.0.0.100:80  添加VIP地址
        real=192.168.37.19:80 gate  添加RS1IP地址
        real=192.168.37.20:80 gate  添加RS2IP地址
        fallback=127.0.0.1:80 gate 
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        #receive="Test Page"   注釋掉
        #virtualhost=www.x.y.z 注釋掉

 6、刪除原有綁定在lo網卡上的IP地址以及ipvsadm規則,並手動添加新的IP地址,綁定在回環網卡上。

[root@lvs~]#bash lvs_dr_vs.sh  stop
[root@lvs~]#ifconfig lo:1 10.0.0.100/24

 7、啟動ldirectord,此時就會自動添加ipvsad規則。

[root@lvsdata]#systemctl start ldirectord
[root@lvsdata]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.100:80 rr
  -> 192.168.37.19:80             Route   1      0          0         
  -> 192.168.37.20:80             Route   1      0          0     

  8、此時停止RS1服務器的httpd服務

[root@rs1~]#systemctl stop httpd

  9、在LVS服務器上查看掉線之后被踢掉的ipvsadm調度規則

[root@lvsdata]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.100:80 rr
  -> 192.168.37.20:80             Route   1      0          35 

 10、此時在客戶端查看訪問頁面是RS2的頁面

[root@centos6 network-scripts]# while : ;do curl 10.0.0.100;sleep 0.5;done
192.168.37.20 RS2
192.168.37.20 RS2
192.168.37.20 RS2
192.168.37.20 RS2

 11、此時再恢復RS1服務器的httpd服務

[root@rs1~]#systemctl start httpd

 12、ldirectord軟件會自動啟動RS1的ipvsadm規則。

[root@lvsdata]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.100:80 rr
  -> 192.168.37.19:80             Route   1      0          71        
  -> 192.168.37.20:80             Route   1      0          97 

   13、在客戶端訪問的httpd服務頁面,此時就會恢復兩個RS服務器的信息。

[root@centos6 network-scripts]# while : ;do curl 10.0.0.100;sleep 0.5;done
192.168.37.19 RS1
192.168.37.20 RS2
192.168.37.19 RS1

   14、此時RS1和RS2的httpd服務都停掉

[root@rs2~]#systemctl stop httpd
[root@rs1~]#systemctl stop httpd

 15、此時的ipvsadm規則的回環網卡就會顯示。

[root@lvsdata]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.100:80 rr
  -> 127.0.0.1:80                 Route   1      0          0  

 16、此時客戶端就會顯示LVS調度器httpd服務里邊的index.html信息。

[root@centos6 network-scripts]# while : ;do curl 10.0.0.100;sleep 0.5;done
Sorry Server
Sorry Server
Sorry Server
Sorry Server

 17、修改LVS服務器的ldirectord配置文件,重啟服務,就會將開啟httpd服務的作為優先級高的在客戶端進行訪問。

[root@lvsdata]#vim /etc/ha.d/ldirectord.cf 
quiescent=yes
[root@lvsdata]#systemctl restart ldirectord.service 

 

 18、此時查看ipvsadm規則優先級情況,此時RS2的服務是開啟的,就會只訪問RS2服務器。

 

  19、在客戶端訪問LVS調度器,此時調度訪問的是RS2服務器。

[root@centos6 network-scripts]# while : ;do curl 10.0.0.100;sleep 0.5;done
192.168.37.20 RS2
192.168.37.20 RS2
192.168.37.20 RS2

 20、而如果此時RS1的httpd服務開啟之后,此時LVS服務器的ipvsadm規則中RS服務器兩者的優先級就會一樣,兩個權重一致,就會都去訪問。

[root@rs1~]#systemctl start httpd

  21、在客戶端訪問LVS調度器的IP地址。

[root@centos6 network-scripts]# while : ;do curl 10.0.0.100;sleep 0.5;done
192.168.37.20 RS2
192.168.37.19 RS1
192.168.37.20 RS2
192.168.37.19 RS1

  

 

  

 

 

  

 

  

  

  

  

  

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM