Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。

          主机名                    IP地址
主机1  node1.wang.com   网卡0:192.168.1.10/24
          网卡1:172.16.0.1/24
主机2  node2.wang.com   网卡0:192.168.1.11/24
          网卡1:172.16.0.2/24

说明:此处是用vmware6.0做实验,因此主机1的网卡1和主机2的网卡1在一个隧道内。
IP设置完成后,使用PING命令确保各主机之间是相通的。

主机1上修改主机名
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=localhost.localdomain  修改为  HOSTNAME=node1.wang.com
[root@localhost ~]# hostname node1.wang.com
[root@localhost ~]# hostname
node1.wang.com

主机2上修改主机名
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=localhost.localdomain  修改为  HOSTNAME=node2.wang.com
[root@localhost ~]# hostname node2.wang.com
[root@localhost ~]# hostname
node2.wang.com


说明:主机名修改完成后退出重新登录

在主机1和主机2上的/etc/hosts文件中添加如下两行
[root@node2 ~]# vim /etc/hosts
添加两行
192.168.1.11 node2.wang.com     node2
192.168.1.10 node1.wang.com     node1

准备如下RPM安装包
heartbeat-2.1.4-9.el5.i386.rpm
heartbeat-devel-2.1.4-9.el5.i386.rpm
heartbeat-gui-2.1.4-9.el5.i386.rpm
heartbeat-ldirectord-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

在主机1上安装RPM包
[root@node1 ~]# yum --nogpgcheck -y localinstall *.rpm #安装本地RPM包不做检查
[root@node1 ~]# scp *.rpm node2:/root

在主机2上安装RPM包
[root@node2 ~]# yum --nogpgcheck -y localinstall *.rpm


在主机1上进行配置

heartbeat的所有配置文件都在/etc/ha.d/目录下
heartbeat是非常体贴的已经给我们提搞了配置样本在/usr/share/doc/heartbeat-2.1.4下

[root@node1 ~]# cd /usr/share/doc/heartbeat-2.1.4

[root@node1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/
[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node1 ha.d]# ls
authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs

#authkeys文件的权限必须是600
[root@node1 ha.d]# chmod 600 authkeys 
查看权限是否修改正确
[root@node1 ha.d]# ll
total 48
-rw------- 1 root root   645 Dec 18 06:05 authkeys
-rw-r--r-- 1 root root 10539 Dec 18 06:05 ha.cf
-rwxr-xr-x 1 root root   745 Jul 25  2009 harc
-rw-r--r-- 1 root root  5905 Dec 18 06:05 haresources
drwxr-xr-x 2 root root  4096 Dec 18 05:46 rc.d
-rw-r--r-- 1 root root   692 Jul 25  2009 README.config
drwxr-xr-x 2 root root  4096 Dec 18 05:47 resource.d
-rw-r--r-- 1 root root  7862 Jul 25  2009 shellfuncs

生成随机字符串并使用MD5算法生成随机号
[root@node1 ha.d]# dd if=/dev/urandom bs=512 count=1 | md5sum
[root@node1 ha.d]# vim authkeys
在文件尾部添加如下两行,其中md5后面的字符串是随机的
auth 1
1 md5 b5798d93d0a755f20a688c6419df1d7c

[root@node1 ha.d]# vim ha.cf
在相应位置添加如下行
bcast eth0 eth1
node node1.wang.com
node node2.wang.com

安装http服务进行测试
在主机1上的操作如下
[root@node1 ha.d]# yum install httpd -y
[root@node1 ha.d]# echo "<h1>web1111</h1>" > /var/www/html/index.html
[root@node1 ha.d]# service httpd restart
在物理机上使用浏览器查看网页是否能打开

在主机2上的操作如下
[root@node2 ~]# yum install httpd -y
[root@node2 ~]#  echo "<h1>web2222</h1>" > /var/www/html/index.html
[root@node2 ~]# service httpd restart
在物理机上使用浏览器查看网页是否能打开

在主机1和主机2上都要做同样的如下两步操作:
[root@node2 ~]# service httpd stop
[root@node2 ~]# chkconfig httpd off


[root@node1 ha.d]# cd /usr/lib/heartbeat
[root@node1 heartbeat]# ./ha_propagate
[root@node1 heartbeat]# cd /etc/ha.d/
[root@node1 ha.d]# scp haresources node2:/etc/ha.d/

在主机1和主机2上都要做的如下操作
以实现在node1和node2两个主机不需要密码ssh连接
#生成密钥
[root@node1 ha.d]# ssh-keygen -t rsa
 
[root@node1 ha.d]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
#测试连接
[root@node1 ha.d]# ssh node2
#退回原节点
[root@node2 ~]# exit


在主机1上的操作
[root@node1 ha.d]# /etc/init.d/heartbeat start
[root@node1 ha.d]# ssh node2
[root@node1 ha.d]# tail /var/log/messages
Dec 18 08:14:58 localhost ResourceManager[5121]: info: Acquiring resource group: node1.wang.com 

192.168.1.100/24/eth0/192.168.1.255 httpd
Dec 18 08:14:59 localhost IPaddr[5148]: INFO:  Resource is stopped
Dec 18 08:14:59 localhost ResourceManager[5121]: info: Running /etc/ha.d/resource.d/IPaddr 

192.168.1.100/24/eth0/192.168.1.255 start
Dec 18 08:14:59 localhost IPaddr[5248]: INFO: Using calculated netmask for 192.168.1.100: 255.255.255.0
Dec 18 08:14:59 localhost IPaddr[5248]: INFO: eval ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 broadcast 

192.168.1.255
Dec 18 08:14:59 localhost avahi-daemon[3320]: Registering new address record for 192.168.1.100 on eth0.
Dec 18 08:15:00 localhost IPaddr[5219]: INFO:  Success
Dec 18 08:15:00 localhost ResourceManager[5121]: info: Running /etc/init.d/httpd  start
Dec 18 08:15:13 localhost heartbeat: [4955]: info: Local Resource acquisition completed. (none)
Dec 18 08:15:13 localhost heartbeat: [4955]: info: local resource transition completed.


在物理机上使用浏览器访问http://192.168.1.100查看能否打开网页

[root@node1 ha.d]# ifconfig
会看到如下信息
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:AA:31:10  
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:67 Base address:0x2000

自动降级为备用节点
[root@node1 ha.d]# cd /usr/lib/heartbeat
[root@node1 heartbeat]# ./hb_standby
2011/12/18_08:26:45 Going standby [all].
在物理机上使用浏览器访问http://192.168.1.100查看能否打开网页