簡介
Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集羣系統。心跳服務和集羣通訊是高可用集羣的兩個關鍵組件,在 Heartbeat 項目裏,由 heartbeat 模塊實現了這兩個功能。
1、前期準備工做
環境說明
主:192.168.011心跳IP:10.0.0.1hostname:node1
備:192.168.0.12心跳IP:10.0..0.2hostname:node2
VIP:192.168.0.100
1.一、修改主機名稱
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1
修改/etc/hosts 文件
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11node1
192.168.0.12node2
1.二、修改selinux
[root@localhost ~]# grep -v "^#" /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
[root@localhost ~]# setenforce 0
1.三、配置IP地址
eth0 192.168.0.11
eth1 10.0.0.1
最後重啓網卡
[root@localhost ~]# service network restart
1.四、安裝rpm依賴包
[root@node1 ~]# yum -y install autoconf automake libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devel libxslt-devel docbook-dtds docbook-style-xsl ncurses-devel *Socket6* *libwww-perl* *URI* *MailTools* *HTML-Parser* perl-IO-Socket-*
[root@node1 Packages]# rpm -ivh libtool-ltdl-devel-2.2.6-15.5.el6.x86_64.rpm
1.五、建立安裝用戶
[root@localhost ~]# groupadd haclient
[root@localhost ~]# useradd -g haclient -M -s /sbin/nologin hacluster
2、安裝heartbeat
2.一、安裝Reusable-Cluster-Components-glue--glue-1.0.9 (1).tar.bz2
[root@node1 Packages]# tar xvf Reusable-Cluster-Components-glue--glue-1.0.9\ \(1\).tar.bz2 -C /usr/local/src/
[root@node1 Packages]# cd /usr/local/src/Reusable-Cluster-Components-glue--glue-1.0.9/
[root@node1 Reusable-Cluster-Components-glue--glue-1.0.9]# ./autogen.sh
[root@node1 Reusable-Cluster-Components-glue--glue-1.0.9]# ./configure LIBS='/lib64/libuuid.so.1'
[root@node1 Reusable-Cluster-Components-glue--glue-1.0.9]# make
[root@node1 Reusable-Cluster-Components-glue--glue-1.0.9]# make install
2.二、安裝ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
[root@node1 Packages]# tar xvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz -C /usr/local/src/
[root@node1 Packages]# cd /usr/local/src/ClusterLabs-resource-agents-b735277/
[root@node1ClusterLabs-resource-agents-b735277]# ./autogen.sh
[root@node1 ClusterLabs-resource-agents-b735277]# ./configure LIBS='/lib64/libuuid.so.1'
[root@node1 ClusterLabs-resource-agents-b735277]# make
[root@node1 ClusterLabs-resource-agents-b735277]# make install
2.三、安裝Heartbeat-3-0-7e3a82377fa8.tar.bz2
[root@node1 Packages]# tar xvf Heartbeat-3-0-7e3a82377fa8.tar.bz2 -C /usr/local/src/
[root@node1 Packages]# cd /usr/local/src/Heartbeat-3-0-7e3a82377fa8/
[root@node1 Heartbeat-3-0-7e3a82377fa8]# ./ConfigureMe configure LIBS='/lib64/libuuid.so.1'
[root@node1 Heartbeat-3-0-7e3a82377fa8]# make
[root@node1 Heartbeat-3-0-7e3a82377fa8]# make install
[root@node1 ~]# cp -a /usr/etc/ha.d/ /etc/
[root@node1 ~]# rm -rf /usr/etc/ha.d/
[root@node1 ~]# ln -s /etc/ha.d/ /usr/etc/
[root@node1 ~]# chkconfig --add heartbeat
[root@node1 ~]# chkconfig heartbeat on
[root@node1 ~]# cp /usr/share/doc/heartbeat/haresources /etc/ha.d/
[root@node1 ~]# cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
[root@node1 ~]# cp /usr/share/doc/heartbeat/ha.cf /etc/ha.d/
[root@node1 ~]# chmod 600 /etc/ha.d/authkeys
3、配置heartbeat
注:將主節點的配置好的文件直接拷貝到備節點上便可
3.一、修改authkeys
[root@node1 ~]# cd /etc/ha.d/
[root@node1 ha.d]# grep -v "^#" authkeys
auth 3
3 md5 Hello!
[root@node1 ha.d]#
(注:auth 後面默認爲1 改成3 兩個數值必須相同, 不然啓動時會報錯)
3.二、修改ha.cf
[root@node1 ~]# cd /etc/ha.d/
[root@node1 ha.d]# grep -v "^#" ha.cf
debugfile /var/log/ha-debug
logfile/var/log/ha-log
logfacilitylocal0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport694
baud19200
bcasteth1# Linux
auto_failback on
nodenode1
nodenode2
ping 192.168.0.253
respawn hacluster /usr/lib64/heartbeat/ipfail
[root@node1 ha.d]#
3.三、修改haresources
[root@node1 ~]# cd /etc/ha.d/
[root@node1 ha.d]# grep -v "^#" haresources
node1 IPaddr::192.168.0.100/24/eth0 httpd
[root@node1 ~]#
(注:中間以空格分割)
4、主背測試
在node1和node2上啓動heartbeart
[root@node1 ~]# /etc/init.d/heartbeat start
[root@node2 ~]# /etc/init.d/heartbeat start
[root@node1 ~]# echo "node1" > /var/www/html/index.html
[root@node2 ~]# echo "node2" > /var/www/html/index.html
在主節點(node1)上查看綁定VIP 網站是否能夠正常訪問。
主背切換說明:默認狀況下主節點對外提供服務,備節點只啓動heartheart不會啓動httpd,只有當主節點出現問題,備節點纔會自動啓動本機的web添加VIP接替主節點對外提供服務。當主節點恢復正常後,會取代備節點的服務。
一、node1 和 node2同時啓動時(node1爲主,提供服務)
[root@node1 ~]# service heartbeat status
heartbeat OK [pid 2326 et al] is running on node1 [node1]...
[root@node2 ha.d]# service heartbeat status
heartbeat OK [pid 2265 et al] is running on node2 [node2]...
二、關閉node1(node2會自動搶佔爲主的來提供服務)
當heartbeat服務或是機器沒法關機沒法ping通會自動切換,可是web服務出現問題不會自動切換。
[root@node1 ~]# service heartbeat status
heartbeat is stopped. No process
[root@node2 ha.d]# service heartbeat status
heartbeat OK [pid 2265 et al] is running on node2 [node2]...
三、node1從新啓動搶佔爲主
[root@node1 ~]# service heartbeat status
heartbeat OK [pid 3076 et al] is running on node1 [node1]...
[root@node2 ha.d]# service heartbeat status
heartbeat OK [pid 2265 et al] is running on node2 [node2]...
3.五、配置文件詳解
3.5.一、heartbeat主配置文件ha.cf
debugfile /var/log/ha-debug用戶記錄heartbeat的調試信息
logfile /var/log/ha-logheartheat的日誌文件
logfacility local0設置日誌級別
keepalive 2心跳(檢測)間隔時間,默認爲秒
deadtime 30超出30秒未收到節點的心跳,則認爲對方死亡
warntime 10警告時間,一般設置爲daetime時間的一半
initdead 120網絡啓動時間,至少爲deadtime的兩倍
baud 19200波特率,串口通訊的速度。
udpport 694使用端口694進行bcast和ucast通訊。這是默認的,而且在IANA官方註冊的端口號。
bcast eth1 發送heartbeat心跳的網卡
auto_failback on用來定義當主節點恢復後,是否將服務自動切回,heartbeat的兩臺主機分別爲主節點和備份節點。主節點在正常狀況下佔用資源並運行全部的服務,遇到故障時把資源交給備份節點並由備份節點運行服務。在該選項設爲on的狀況下,一旦主節點恢復運行,則自動獲取資源並取代備份節點,若是該選項設置爲off,那麼當主節點恢復後,將變爲備份節點,而原來的備份節點成爲主節點
node node1兩個節點的名稱 uname -a查看必須相同
node node2
ping 192.168.0.253集羣之外的節點,測試網絡連通性
3.5.二、資源文件haresources
Haresources文件用於指定雙機系統的主節點、集羣IP、子網掩碼、廣播地址以及啓動的服務等集羣資源,文件每一行能夠包含一個或多個資源腳本名,資源之間使用空格隔開,參數之間使用兩個冒號隔開,在兩個HA節點上該文件必須徹底一致,此文件的通常格式爲
node1(node-name) 192.168.0.100(network) httpd mysqld(resource-group)
node-name表示主節點的主機名,必須和ha.cf文件中指定的節點名一致,network用於設定集羣的IP地址、子網掩碼、網絡設備標識等,須要注意的是,這裏指定的IP地址就是集羣對外服務的IP地址,resource-group用來指定須要heartbeat託管的服務,也就是這些服務能夠由heartbeat來啓動和關閉,若是要託管這些服務,必須將服務寫成能夠經過start/stop來啓動和關閉的腳步,而後放到/etc/init.d/或者/etc/ha.d/resource.d/目錄下,heartbeat會根據腳本的名稱自動去/etc/init.d或者/etc/ha.d/resource.d/目錄下找到相應腳步進行啓動或關閉操做。
3.5.三、認證文件authkeys
authkeys文件用於設定heartbeat的認證方式,共有三種可用的認證方式:crc、md5和sha1,三種認證方式的安全性依次提升,可是佔用的系統資源也依次增長。若是heartbeat集羣運行在安全的網絡上,可使用crc方式,若是HA每一個節點的硬件配置很高,建議使用sha1,這種認證方式安全級別最高,若是是處於網絡安全和系統資源之間,可使用md5認證方式。