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
拓撲方案:
<a href="http://blog.51cto.com/attachment/201210/214448822.png" target="_blank"></a>
配置director1部分:
一:修改director1的主機名:
[root@node1 ~]# vim /etc/sysconfig/network
二:給director1配置靜态ip位址
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567696ZPIk.png"></a>
三:編譯本地yum:
[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567701Hcwy.png"></a>
四:安裝相關關鍵包:
[root@node1 ~]# mkdir /mnt/cdrom
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/ #挂載CD光牒,在使用
yum localinstall中需要用到CD光牒上的軟體包
[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可以安裝外部軟體包以及調用系統CD光牒軟體包,—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
[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 #編輯定義心跳探測參數的檔案
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567703o8Fm.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677045qVB.png"></a>
[root@node1 ha.d]# dd if=/dev/random bs=512 count=1 |openssl md5 #利用随機檔案random産生一段字元,一塊512位元組,數量是1,通過md5加密後輸出
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567706UPqd.png"></a>
[root@node1 ha.d]# vim authkeys #編輯心跳雙方的身份驗證檔案
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567707EHGl.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567708GVKH.png"></a>
[root@node1 ha.d]# chmod 600 authkeys #根據檔案内提示将authkeys的
權限改為600
[root@node1 ha.d]# vim haresources #定義群集的搶奪資源
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567710mhKA.png"></a>
[root@node1 ha.d]# service heartbeat start #啟動heartbeat服務
[root@node1 ha.d]# chkconfig heartbeat on #将該服務設定為開機自動啟動
[root@node1 ha.d]# ifconfig #使用該指令檢視ip位址情況
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567711IoY6.png"></a>
配置director2部分:
一:修改director2的主機名:
[root@node2 ~]# vim /etc/sysconfig/network
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567712Lv57.png"></a>
二:給director2配置靜态ip位址:
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567713WKJ6.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567715vX6v.png"></a>
三:編輯本地yum:
[root@node2 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567716vssR.png"></a>
四:安裝相關軟體包:
[root@node2 ~]# mkdir /mnt/cdrom
[root@node2 ~]# mount /dev/cdrom /mnt/cdrom/ #挂載CD光牒,在下一步中需要使用自帶的CD光牒軟體,解決依賴性問題
[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可以安裝外部軟體包以及調用系統CD光牒軟體
包,—nogpgcheck取消簽名檢測
[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 #編輯心跳探測的配置檔案
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567718dIqT.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567719sJwx.png"></a>
[root@node2 ha.d]# vim authkeys #心跳雙方的身份驗證檔案
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567720HSCP.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567721I7IR.png"></a>
[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:
一:配置核心參數:
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567722Xp9N.png"></a>
[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 #使新編輯的核心檔案生效
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567723aXUn.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567724fMjw.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677253ON9.png"></a>
[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:
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567726GZA1.png"></a>
[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 #使剛配置的核心參數生效
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_135056772840rz.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567728y2vK.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677323978.png"></a>
[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 #編輯網頁檔案
測試:
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567737ydkQ.png"></a>
在director1上檢視:
[root@node1 ha.d]# ipvsadm –ln
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567740sYf4.png"></a>
在director2上檢視:
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567742ulXk.png"></a>
[root@node1 ha.d]# cd /usr/lib/heartbeat/ #在node1.a.com上切換目錄
[root@node1 heartbeat]# ./hb_standby #将node1.a.com設定為備份
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567747vJqm.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677501YtX.png"></a>
[root@node1 heartbeat]# ./hb_takeover #将node1.a.com設定為主節點
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567752QeFb.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567755Sla5.png"></a>
在上個案例中實作的手工方式建立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 #檢視安裝路徑
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567759ta3G.png"></a>
[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 #編輯資源
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677633Qxs.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567764Y8e7.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567768wI4f.png"></a>
[root@node1 ha.d]# vim haresources
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567771ZSs2.png"></a>
節點二: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
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_13505677735HWj.png"></a>
[root@node2 ha.d]# vim ldirectord.cf #編輯資源
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567774PZ4K.png"></a>
<a href="http://5493845.blog.51cto.com/attachment/201210/18/5493845_1350567776tEHP.png"></a>
本文轉自 liuyatao666 51CTO部落格,原文連結:http://blog.51cto.com/5503845/1031019,如需轉載請自行聯系原作者