ldirectord簡介:爲了從主Director將LVS負載均衡資源故障轉移到備用Director,並從集羣中自動移除節點,我們需要使用ldirectord程序,這個程序在啓動時自動建立IPVS表,然後監視集羣節點的健康情況,在發現失效節點時將其自動從IPVS表中移除。
ldirectord監視集羣(真實服務器):ldirectord守護進程通過向每臺真實服務器真實IP(RIP)上的集羣資源發送訪問請求來實現對真實服務器的監控,這對所有類型的LVS集羣都是成立的:LVS-DR,LVS-NAT和LVS-TUN。正常情況下,爲每個Director上的VIP地址運行一個ldirectord守護進程,當真實服務器不響應運行在Director上的ldirectord守護進程時,ldirectord守護進程運行適當的ipvsadm命令將VIP地址從IPVS表中移除。(以後,當真實服務器回到在線狀態時,ldirectord使用適當的ipvsadm命令將真實服務器重新添加到IPVS表中)
案例:在前端架設兩臺director主機,互爲備份,實現ipvs羣集的高可用性。後端架設兩臺web服務器實現負載均衡LB,在realserver上使用DR模式
ip地址規劃:
VIP:192.168.145.101
director1:eth0:192.168.145.99
eth1:192.168.10.1 (心跳線)
director2:eth0:192.168.145.100
eth1:192.168.10.2(心跳線)
realserver1:eth0:192.168.145.200
realserver2:eth0:192.168.145.201
拓撲方案:
配置director1部分:
一:修改director1的主機名:
[root@node1 ~]# vim /etc/sysconfig/network
二:給director1配置靜態ip地址
三:編譯本地yum:
[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
四:安裝相關關鍵包:
[root@node1 ~]# mkdir /mnt/cdrom
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/ #掛載光盤,在使用
yum localinstall中需要用到光盤上的軟件包
[root@node1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-
10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck #使用localinstall可以安裝外部軟件包以及調用系統光盤軟件包,—nogpgcheck取消簽名測
五:安裝ipvs的管理工具ipvsadm:
[root@node1 ~]# yum install ipvsadm -y
[root@node1 ~]# ipvsadm -A -t 192.168.145.101:80 -s rr #定義羣集,rr表示
採用輪詢調度,監聽httpd服務的80端口
[root@node1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 –g
#當監聽到有訪問80端口的,轉換到真實的ip地址上,-g表示DR模型
[root@node1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 –g
#當監聽到有訪問80端口的,轉換到真實的ip地址上,-g表示DR模型
[root@node1 ~]# service ipvsadm save #保存配置的規則
[root@node1 ~]# service ipvsadm stop #將ipvsadm停止
六:編輯配置心跳參數,羣集資源等文件
[root@node1 ~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@node1 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/#將ha.cf調整心跳探測參數
[root@node1 heartbeat-2.1.4]# cp haresources /etc/ha.d/ #haresources
文件定義羣集資源的資源管理器
[root@node1 heartbeat-2.1.4]# cp authkeys /etc/ha.d/ #authkeys實現
心跳線雙方的身份驗證
[root@node1 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/ #將ipvsadm的控制腳本拷貝到resource.d目錄下
[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node1 ha.d]# vim ha.cf #編輯定義心跳探測參數的文件
[root@node1 ha.d]# dd if=/dev/random bs=512 count=1 |openssl md5 #利用隨機文件random產生一段字符,一塊512字節,數量是1,通過md5加密後輸出
[root@node1 ha.d]# vim authkeys #編輯心跳雙方的身份驗證文件
[root@node1 ha.d]# chmod 600 authkeys #根據文件內提示將authkeys的
權限改爲600
[root@node1 ha.d]# vim haresources #定義羣集的搶奪資源
[root@node1 ha.d]# service heartbeat start #啓動heartbeat服務
[root@node1 ha.d]# chkconfig heartbeat on #將該服務設置爲開機自動啓動
[root@node1 ha.d]# ifconfig #使用該命令查看ip地址情況
配置director2部分:
一:修改director2的主機名:
[root@node2 ~]# vim /etc/sysconfig/network
二:給director2配置靜態ip地址:
三:編輯本地yum:
[root@node2 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
四:安裝相關軟件包:
[root@node2 ~]# mkdir /mnt/cdrom
[root@node2 ~]# mount /dev/cdrom /mnt/cdrom/ #掛載光盤,在下一步中需要使用自帶的光盤軟件,解決依賴性問題
[root@node2 ~]# yum localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm
libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm -y –nogpgcheck #使用localinstall可以安裝外部軟件包以及調用系統光盤軟件
包,—nogpgcheck取消簽名檢測
五:安裝ipvs的管理工具ipvsadm:
[root@node2 ~]# yum install ipvsadm -y
[root@node2 ~]# ipvsadm -A -t 192.168.145.101:80 -s rr #定義羣集,rr表示採用輪詢調度,監聽httpd服務的80端口
[root@node2 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 –g #當監聽到有訪問80端口的,轉換到真實的ip地址上,-g表示DR模型
[root@node2 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 –g #當監聽到有訪問80端口的,轉換到真實的ip地址上,-g表示DR模型
[root@node2 ~]# service ipvsadm save #保存配置的規則
[root@node2 ~]# service ipvsadm stop #將ipvsadm停止
六:編輯配置心跳參數,羣集資源等文件
[root@node2 ~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@node2 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/ #將ha.cf調整心跳探測參數
[root@node2 heartbeat-2.1.4]# cp haresources /etc/ha.d/ #haresources文件定義羣集資源的資源管理器
[root@node2 heartbeat-2.1.4]# cp authkeys /etc/ha.d/ #authkeys實現心跳線雙方的身份驗證
[root@node2 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/ #將ipvsadm的控制腳本拷貝到resource.d目錄下
[root@node2 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node2 ha.d]# vim ha.cf #編輯心跳探測的配置文件
[root@node2 ha.d]# vim authkeys #心跳雙方的身份驗證文件
[root@node2 ha.d]# chmod 600 authkeys #根據文件內提示將authkeys的權限改爲600
[root@node2 ha.d]# vim haresources #定義羣集的搶奪資源
[root@node2 ha.d]# service heartbeat start
[root@node2 ha.d]# chkconfig heartbeat on #將該服務設置爲開機自動啓動
[root@node2 ha.d]# ifconfig #使用該命令並沒有查看到搶佔的VIP
配置realserver 1:
一:配置內核參數:
[root@lyt ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">>/etc/sysctl.conf
[root@lyt ~]# echo "net.ipv4.conf.all.arp_announce = 2">>/etc/sysctl.conf
[root@lyt ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">>/etc/sysctl.conf
[root@lyt ~]# echo "net.ipv4.conf.all.arp_ignore = 1">>/etc/sysctl.conf
[root@lyt ~]# sysctl –p #使新編輯的內核文件生效
[root@lyt ~]# service network restart #重啓網絡服務
[root@lyt ~]# route add -host 192.168.145.101 dev lo:0 #添加一條路由,保證數據包返回時使用VIP地址192.168.145.101,出口是lo:0
二:安裝web服務器:
[root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安裝httpd
[root@lyt Server]# service httpd start
[root@lyt Server]# chkconfig httpd on
[root@lyt Server]# echo "realserver1 web1">/var/www/html/index.html #編輯網頁文件index.html
配置realserver 2:
一:配置內核參數:
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2">>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1">>/etc/sysctl.conf
[root@localhost ~]# sysctl –p #使剛配置的內核參數生效
[root@localhost ~]# service network restart
[root@localhost ~]# route add -host 192.168.145.101 dev lo:0 #添加一條路由,使返回的數據包從VIP—192.168.145.101出去,出口是lo:0
二:安裝web服務器
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安裝httpd服務器
[root@localhost Server]# service httpd start #啓動httpd
[root@localhost Server]# chkconfig httpd on #開機自動啓動
[root@localhost Server]# echo "realserver2 web2">/var/www/html/index.html #編輯網頁文件
測試:
在director1上查看:
[root@node1 ha.d]# ipvsadm –ln
在director2上查看:
[root@node1 ha.d]# cd /usr/lib/heartbeat/ #在node1.a.com上切換目錄
[root@node1 heartbeat]# ./hb_standby #將node1.a.com設置爲備份
在director1上查看:
在director2上查看:
[root@node1 heartbeat]# ./hb_takeover #將node1.a.com設置爲主節點
在director1上查看:
在director2上查看:
在上個案例中實現的手工方式建立ipvs表,也可以使用ldirectord自動創建ipvs表,當節點失效時,自動清除ipvs表。在上個案例中,如果要實現ldirectord,可以作如下修改:
節點一node1.a.com
[root@node1 ~]# yum localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm -y --nogpgcheck #安裝ldirectord
[root@node1 ~]# rpm -ql heartbeat-ldirectord #查看安裝路徑
[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
[root@node1 ~]# cd /etc/ha.d/
[root@node1 ha.d]# vim ldirectord.cf #編輯資源
[root@node1 ha.d]# vim haresources
節點二:node.a.com
[root@node2 ~]# yum localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm -y --nogpgcheck
[root@node2 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
[root@node2 ~]# cd /etc/ha.d/
[root@node2 ha.d]# vim haresources
[root@node2 ha.d]# vim ldirectord.cf #編輯資源