天天看點

IPvs的高可用性+LVS的DR模式+ldirectord

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

拓撲方案:

IPvs的高可用性+LVS的DR模式+ldirectord

配置director1部分:

一:修改director1的主機名:

[root@node1 ~]# vim /etc/sysconfig/network

IPvs的高可用性+LVS的DR模式+ldirectord

二:給director1配置靜态ip位址

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

三:編譯本地yum:

[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

IPvs的高可用性+LVS的DR模式+ldirectord

四:安裝相關關鍵包:

[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        #編輯定義心跳探測參數的檔案

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# dd if=/dev/random bs=512 count=1 |openssl md5      #利用随機檔案random産生一段字元,一塊512位元組,數量是1,通過md5加密後輸出

IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# vim authkeys        #編輯心跳雙方的身份驗證檔案

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# chmod 600 authkeys        #根據檔案内提示将authkeys的

權限改為600

[root@node1 ha.d]# vim haresources       #定義群集的搶奪資源

IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# service heartbeat start      #啟動heartbeat服務

[root@node1 ha.d]# chkconfig heartbeat on      #将該服務設定為開機自動啟動

[root@node1 ha.d]# ifconfig      #使用該指令檢視ip位址情況

IPvs的高可用性+LVS的DR模式+ldirectord

配置director2部分:

一:修改director2的主機名:

[root@node2 ~]# vim /etc/sysconfig/network

IPvs的高可用性+LVS的DR模式+ldirectord

二:給director2配置靜态ip位址:

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

三:編輯本地yum:

[root@node2 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

IPvs的高可用性+LVS的DR模式+ldirectord

四:安裝相關軟體包:

[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       #編輯心跳探測的配置檔案

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node2 ha.d]# vim authkeys        #心跳雙方的身份驗證檔案

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node2 ha.d]# chmod 600 authkeys #根據檔案内提示将authkeys的權限改為600

[root@node2 ha.d]# vim haresources       #定義群集的搶奪資源

IPvs的高可用性+LVS的DR模式+ldirectord

[root@node2 ha.d]# service heartbeat start

[root@node2 ha.d]# chkconfig heartbeat on       #将該服務設定為開機自動啟動

[root@node2 ha.d]# ifconfig       #使用該指令并沒有檢視到搶占的VIP

配置realserver 1:

一:配置核心參數:

IPvs的高可用性+LVS的DR模式+ldirectord

[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       #使新編輯的核心檔案生效

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[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:

IPvs的高可用性+LVS的DR模式+ldirectord

[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      #使剛配置的核心參數生效

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[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       #編輯網頁檔案

測試:

IPvs的高可用性+LVS的DR模式+ldirectord

在director1上檢視:

[root@node1 ha.d]# ipvsadm –ln

IPvs的高可用性+LVS的DR模式+ldirectord

在director2上檢視:

IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# cd /usr/lib/heartbeat/     #在node1.a.com上切換目錄

[root@node1 heartbeat]# ./hb_standby       #将node1.a.com設定為備份

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 heartbeat]# ./hb_takeover       #将node1.a.com設定為主節點

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

在上個案例中實作的手工方式建立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    #檢視安裝路徑

IPvs的高可用性+LVS的DR模式+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       #編輯資源

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

[root@node1 ha.d]# vim haresources

IPvs的高可用性+LVS的DR模式+ldirectord

節點二: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     

IPvs的高可用性+LVS的DR模式+ldirectord

[root@node2 ha.d]# vim ldirectord.cf      #編輯資源

IPvs的高可用性+LVS的DR模式+ldirectord
IPvs的高可用性+LVS的DR模式+ldirectord

繼續閱讀