案例要求:
1、通過HA主備模式實作對lvs群集(web伺服器)的高可用性,并實作對内部web伺服器線上狀态進行探測。
案例拓撲:
<a href="http://blog.51cto.com/attachment/201212/162909685.jpg" target="_blank"></a>
ha-1配置
環境準備:
a、用hostname修改主機名,
#hostname ha1.abc.com
b、并修改/etc/sysconfig/network
HOSTNAME=ha1.abc.com
c、因沒有配置dns,是以直接hosts檔案,
#vim /etc/hosts/
ha1.abc.com 192.168.2.60
ha2.abc.com 192.168.2.61
1.安裝 heartbeat 相關軟體包,有依賴關系,推薦使用yum安裝
heartbeat-2.1.4-11.el5.i386.rpm
heartbeat-pils-2.1.4-11.el5.i386.rpm
heartbeat-stonith-2.1.4-11.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
額外依賴包:libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
2.關閉相關服務,
# service ipvsadm stop 關閉服務并禁止開機啟動,由ha來控制操作
# chkconfig ipvsadm off
#service ldirectord stop 關閉ldirectord服務并禁止開機啟動
#chkconfig ldirectord off
3.拷貝配置檔案
/usr/share/doc/heartbeat-2.1.4
# cp -p haresources ha.cf authkeys /etc/ha.d/
4.編輯配置檔案
a、 # vim /etc/ha.d/ha.cf
95 bcast eth1
96 node ha1.abc.com
97 node ha2.abc.com
b、身份驗證
[root@ha1 ~]# dd if=/dev/random bs=512 count=1| openssl md5
0+1 records in
0+1 records out
ec92b27792a008b420ec5adfe0a34ea0
17 bytes (17 B) copied, 6.1088e-05 seconds, 278 kB/s
# vim /etc/ha.d/authkeys
auth 3
3 md5 ec92b27792a008b420ec5adfe0a34ea0 //為剛才借助dd産生的随機md5加密值
# chmod 600 /etc/ha.d/authkeys //修改權限
c、資源
# vim /etc/ha.d/haresources
ha1.abc.com 192.168.2.254/24/eth0 ldirectord:ldirectord.cf //ha1.abc.com為首先要激活的
<a href="http://blog.51cto.com/attachment/201212/163035585.jpg" target="_blank"></a>
#ll /etc/ha.d/resource.d/ldir* //檢視該目錄是否有ldirectord服務的控制腳本,若沒有執行複制:#cp -p /etc/init.d/ldirectord /etc/ha.d/resource.d/
<a href="http://blog.51cto.com/attachment/201212/163101734.jpg" target="_blank"></a>
d、複制并編輯配置檔案ldirectord.cf
#cp -p /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
#vim /etc/ha.d/ldirectord.cf
<a href="http://blog.51cto.com/attachment/201212/163119924.jpg" target="_blank"></a>
4、啟動heartbeat服務
# service heartbeat start //啟動heartbeat服務
ha-2配置
環境準備:
#hostname ha2.abc.com
HOSTNAME=ha2.abc.com
1、安裝 heartbeat 相關軟體包,
依賴包:libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
2、也要關閉相關服務
# service ipvsadm stop 關閉ipvsadm服務并禁止開機啟動
3、ha-1與ha-2的配置相同,是以直接使用scp指令實作安全拷貝,将ha-1的相應修改内容拷貝到ha-2中,
#scp ha1.abc.com:/etc/ha.d/ha.cf authkeys haresources ldirectord.cf /etc/ha.d/
<a href="http://blog.51cto.com/attachment/201212/163320318.jpg" target="_blank"></a>
# service heartbeat start //啟動heartbeat服務。
server1配置、server2配置相同(server2自形配置)
#解決arp不響應的問題
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore //隻回答目标IP位址是來訪網絡接口本地位址的ARP查詢請求
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce //對查詢目标使用最适當的本地位址
[root@server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@server1 ~]# ifconfig lo:0 192.168.2.254 netmask 255.255.255.255 //lo:0的位址
#添加一條路由
[root@server1 ~]# route add -host 192.168.2.254 dev lo:0
注:對于server的配置是臨時性的,重新開機配置消失,
下面為在ha-1上的操作:
正常啟動heartbeat服務後,測試會發現可以正常高可用性,并且添加了eth0:0接口與位址
<a href="http://blog.51cto.com/attachment/201212/163341707.jpg" target="_blank"></a>
檢視日志可以看出,可以接收資源,啟動相應接口、服務。
<a href="http://blog.51cto.com/attachment/201212/163405280.jpg" target="_blank"></a>
當然實驗過程中,遇到錯誤時也可以通過檢視日志來解決……
檢視ipvsadm政策規則表:發現web伺服器的權重為0,因為沒有建立web伺服器的測試頁,
<a href="http://blog.51cto.com/attachment/201212/163444592.jpg" target="_blank"></a>
在web伺服器上建立相應測試後(#echo "ok" > /var/www/html/.index.html),權重變為1,表示可以探測到,
<a href="http://blog.51cto.com/attachment/201212/163531358.jpg" target="_blank"></a>
現在我們關閉一台web伺服器,會發現權重值變為0,而我們采用的是rr排程算法,權重值的大小是不會影響輪循的,我們再次設定/etc/ha.d/ldirectord.cf,不再采用靜默模式,配置檔案儲存退出後,不需要重新開機heartbeat服務,是自動加載的,
<a href="http://blog.51cto.com/attachment/201212/163550122.jpg" target="_blank"></a>
注意:也要對ha-2下的/etc/ha.d/ldirectord.cf做同樣配置。
現在再來測試一下,關閉一個web伺服器,service httpd stop後,發現ipvsadm的政策規則表中馬上就消失了關于該伺服器的政策配置設定語句。
<a href="http://blog.51cto.com/attachment/201212/163606976.jpg" target="_blank"></a>
通過ha1作為主模式測試正常,并可以探測到内部web伺服器的運作狀态。
現在将ha1通過指令實作成為備份模式,來測試ha2的工作情況:
ha-1上執行:
#/usr/share/heartbeat/hb_standby
2012/12/28_19:43:49 Going standby [all].
再次檢視ha1的ipvsadm政策規則時,發現已經沒有了,
<a href="http://blog.51cto.com/attachment/201212/163629162.jpg" target="_blank"></a>
檢視ha2的ipvsadm政策表,會發現已經存在了,并成功探測到了内部web伺服器,
<a href="http://blog.51cto.com/attachment/201212/163640525.jpg" target="_blank"></a>
對web伺服器的探測也是正常的,不再附圖。
在ha1執行:# /usr/share/heartbeat/hb_takeover 重新變為主動模式。
實驗注意項:
1、ha群集中,兩個node點的共享資源要相同,
2、心跳探測時,兩個node點交流時,身份驗證的的配置檔案authkeys的權限值一定要修改,
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Authentication configuration error.
heartbeat[24576]: 2012/12/29_16:45:50 ERROR: Configuration error, heartbeat not started.
#chmod 600 /etc/ha.d/authkeys
3、其他錯誤,檢視日志一般可以解決了,祝你好運!
實驗結束。
本文轉自 劉園 51CTO部落格,原文連結:http://blog.51cto.com/colynn/1104057