在伺服器叢集中還有一項就是服務的高可用性,為了保證我們的服務不被成為單點故障,為此我們使用heartbeat來解決這一點,簡單點說,就是當我們的主伺服器掉線的時候,我們的輔助節點伺服器能夠快速接管主節點伺服器的服務,這樣就保證了我們的服務不會出現單點故障了。(當然我們一下做的只是針對單點故障做的一個小實驗而已,具體到應用的時候,心跳通訊通道不會只有一條,還有伺服器通常還會有共用存放裝置,好了,不多說了,開始準備一下實驗環境吧)
我們需要準備三台虛擬機器:一台客戶機,兩台heartbeat伺服器,其中這兩個伺服器先配置一個,另外一個根據以下步驟再配置)實驗拓撲圖如下: 實驗步驟:1先配置一下主節點:主機名稱設為:node1.example.com #vim /etc/hosts192.168.0.165. node1.example.com node1192.168.0.166 node2.example.cm node2#vim /etc/sysconfig/networkHOSTNAME=node1.example.com#hostname node1.example.com#uname –n (查看一下現在的主機名稱)1. 配置一下ip地址外網為192.168.0.165 心跳通道地址192.168.10.20 2. 安裝並配置httpd服務#yum install httpd.conf#vim /var/www/html/index.html#service httpd start #elinks 192.168.0.220(測試一下www服務)3. 開始配置heartbeat了:先安裝八個包:libnet-1.4.3-el5.i386heartbeat-2.1.4-9.el5.i386heartbeat-devel-2.1.4.9.el5.i386heartbeat-gui-2.1.4-9.el5.i386heartbeat-ldirectord-2.1.4-9.el5.i386heartbeat-pils-2.1.4.-10.el5.i386heartbeat-stonith-2.1.4-10.el5.i386perl-MailTools-1.77-1.el5.noarch #yum - -nogpgcheck install *.rpm 可以將這幾個包一起安裝 (使用rpm來安裝的話會有好多依賴關係要解決,建議還是使用yum來安裝)4.#cd /etc/ha.d/ (接下來拷貝幾個重要的檔案到該目錄下)#cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./#cp /usr/share/doc/heartbeat-2.1.4/haresources ./#cp /usr/share/doc/heartbeat-2.1.4/authkeys ./#ls (查看一下是否複製完全)#vim authkeys 在最後添加兩行auth 11 sha1(以上也可以使用以下命令來配置authkeys這個檔案)#echo -ne “auth 1/n1 sha1” >> /etc/ha.d/authkeys#dd if=/dev/urandom bs=512 count=1 | openssl md5 >> /etc/ha.d/authkeys (追加密鑰)#cat authkeys (查看一下,看密鑰是否追加上了,密鑰要跟1 sha1在同一行)#chmod 0600 authkeys (修改一下許可權)#vim ha.cf確保以下幾行沒有被注釋掉debugfile /var/log/ha-debuglogfacility local0keepalive 2deadtime 30warntime 10initdead 120udpport 694auto_failback onbcast eth1接著在最後添加以下兩行node node1.example.comnode node2.example.com #vim haresources (設定浮動的ip和服務)在檔案中添加一下一行資訊:node1.example.com 192.168.0.169 httpd#cd /etc/ha.d ( 將我們的httpd服務添加軟串連到resource.d中:)#ln -s /etc/init.d/httpd /etc/ha.d/resource.d/#cd resource.d/#ls (查看一下連結建立成功了沒) (為了讓我們的實驗簡化,我們複製一個虛擬機器來做backup server輔節點吧。)將主節點關機,然後複製一個輔節點,不過我們要對輔節點修改一下,具體修改如下:修改它的主機名稱#vim /etc/hosts#vim /etc/sysconfig/network#hostname node2.example.com#uname -n修改它的ip地址設定外網ip地址為192.168.0.166內網心跳通訊地址為192.168.10.30#service network restart測試一下整個網路的聯通性:#ping 192.168.0.165#ping 192.168.0.166#ping 192.168.10.20#ping 192.168.10.30 最好在主節點和輔節點上都測試一下,看80服務開了沒,#netstat -tnlp | grep 80 這個時候主節點和輔節點80連接埠應該都是沒有開的 在主節點和輔節點上開啟心跳服務#service heartbeat start#ifconfig (在主節點上看一下,eth0:0這個浮動ip地址已經出現了) 在主節點上查看80連接埠現在已經是開啟的了 這個時候在客戶機上訪問來測試一下
在主節點上#cd /usr/lib/heartbeat #./hb_standby將節點停掉,這樣httpd服務就轉移到輔節點了 在輔節點上查看: 在客戶機上訪問一下192.168.0.169 (呵呵,輔節點就順利的接替了主節點的資源) 使用抓包工具來測試一下:瞭解一下它們的心跳#tcpdump -i eth1 udp port 694