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查看能否打开网页