HA双机热备的实现(heartbeat)
双机热备的实现环境:
主节点:node1 node1.test.com eth0:192.168.0.20eth1:192.168.1.20
从节点:node2 node2.test.com eth0:192.168.0.99eth1:192.168.1.99
测试机:192.168.0.55
一、安装前的准备
++以下是在node1上的操作:
首先修改/etc/hosts文件,保持两个节点改文件相同。如下:
#vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.99 node2.test.comnode2
192.168.0.20 node1.test.comnode1
192.168.1.99 node2.test.comnode2
192.168.1.20 node1.test.comnode1
拷贝至node2
# scp/etc/hosts 192.168.0.99:/etc/
安装httpd服务
# yum -y install httpd
# echo "node1 test page" > /var/www/html/index.html
# service httpd start
Starting httpd:
#
测试是否可用
http://blog.运维网.com/attachment/201009/221021887.png
关闭httpd服务禁止开机启动
# service httpd stop
Stopping httpd:
# chkconfig httpd off
#
在node2上按照以上步骤进行操作
安装httpd服务
2 ~]# yum -y install httpd
2 ~]# echo "node2 test page" > /var/www/html/index.html
2 ~]# service httpd start
Starting httpd:
2 ~]#
测试是否可用
http://blog.运维网.com/linuxbpm/../../attachment/201009/221123901.png
关闭httpd服务禁止开机启动
# service httpd stop
Stopping httpd:
# chkconfig httpd off
#
二、安装、配置heartbeat
heartbeat需要安装的软件包如下:
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.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
libnet-1.1.4-3.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
perl-MailTools-1.77-1.el5.noarch.rpm
将以上安装包全部安装
1、安装heartbeat
http://blog.运维网.com/linuxbpm/../../attachment/201009/221428363.png
# yum -y --nogpgcheck localinstall *.rpm
http://blog.运维网.com/attachment/201009/221541769.png
2 ~]# yum -y --nogpgcheck localinstall *.rpm
2、拷贝三个文件到/etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.4/authkeys/etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.4/haresources/etc/ha.d/
# ls
authkeysha.cfharcharesourcesrc.dREADME.configresource.dshellfuncs
#
3、编辑主配置文件
# vimha.cf #打开以下各行或保证有如下行
debugfile /var/log/ha-debug #调试日志(调试时建议打开)
logfile /var/log/ha-log #heartbeat的日志文件
keepalive 2: #心跳的时间间隔,默认时间单位为秒
deadtime 30: #超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10: #超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 120:#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,
#该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
udpport 694 #设置广播通信使用的端口,694为默认使用的端口号。
bcast eth1: #设置广播通信所使用的网络接口卡。(我们这里设置为eth1,专门用来探测心
#跳)
auto_failback on #是否允许主节点恢复时,自动将资源从从节点获取。这里on为开启
node node1 #用于指定主从节点
node node2
4、编辑 haresources
资源文件,指定主节点,VIP,启动的服务等
格式:node-name network-config
node-name指定双机系统的主节点
network-config用于网络设置,包括指定VIP、子网掩码、广播地址
resource-group 指定使用VIP向外提供的服务,可以为多个
# vim haresources
node1192.168.0.100 httpd #在最后一行添加
5、编辑authkeys文件
#vimauthkeys#其中authkeys用于两个节点用来验证的文件,其中有三
auth 3 #种算法如下:
#1 crc
#2 sha1 HI! #三种算法安全性逐渐增强,我们这里选择的md5,Hello为密码,也可以
3 md5 Hello! #自己使用生成的md5密码。
chmod 600 authkeys #一定保证authkeys的权限模型为600
6、将三个文件拷贝到node2
# scpauthkeysharesourcesha.cf192.168.0.99:/etc/ha.d/
7、记得拷贝httpd脚本到/etc/ha.d/resource.d/,以便更快的查找到。
# cp /etc/init.d/httpdresource.d/
# cp /etc/init.d/httpd/etc/ha.d/resource.d/
三、实验的测试
1、启动heartbeat (先主节点后从节点)
# service heartbeat start
# service heartbeat start
2、查看服务
# netstat-tnlp | grep :80
tcp 0 0 :::80 :::* LISTEN 17058/httpd
# netstat-tunlp | grep :694
udp 0 0 0.0.0.0:694 0.0.0.0:* 17200/heartbeat: wr
#
3、查看ip(VIP)这里出现了eth0:0 是我们指定的VIP
# ifconfig
eth0 Link encap:EthernetHWaddr 00:0C:29:75:13:19
inet addr:192.168.0.20Bcast:192.168.0.255Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe75:1319/64 Scope:Link
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
RX packets:38036 errors:0 dropped:0 overruns:0 frame:0
TX packets:246490 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3743400 (3.5 MiB)TX bytes:341326043 (325.5 MiB)
Interrupt:169 Base address:0x2000
eth0:0 Link encap:EthernetHWaddr 00:0C:29:75:13:19
inet addr:192.168.0.100Bcast:192.168.0.255Mask:255.255.255.0
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
Interrupt:169 Base address:0x2000
eth1 Link encap:EthernetHWaddr 00:0C:29:75:13:23
inet addr:192.168.1.20Bcast:192.168.1.255Mask:255.255.255.0
4、访问测试
http://blog.运维网.com/attachment/201009/221713323.png
四、模拟宕机(断开node1网卡)
我在断开网卡后2秒查看node2如下:
1、查看ip(VIP)
# ifconfig
eth0 Link encap:EthernetHWaddr 00:0C:29:50:06:DD
inet addr:192.168.0.99Bcast:192.168.0.255Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe50:6dd/64 Scope:Link
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
RX packets:278657 errors:0 dropped:0 overruns:0 frame:0
TX packets:122244 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:346575843 (330.5 MiB)TX bytes:13084319 (12.4 MiB)
Interrupt:169 Base address:0x2000
eth0:0 Link encap:EthernetHWaddr 00:0C:29:50:06:DD
inet addr:192.168.0.100Bcast:192.168.0.255Mask:255.255.255.0
UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
Interrupt:169 Base address:0x2000
eth1 Link encap:EthernetHWaddr 00:0C:29:50:06:E7
inet addr:192.168.1.99Bcast:192.168.1.255Mask:255.255.255.0
2、查看端口
# netstat-tnlp | grep :80
tcp 0 0 0.0.0.0:802 0.0.0.0:* LISTEN 1892/rpc.statd
tcp 0 0 :::80 :::* LISTEN 16765/httpd
# netstat-tunlp | grep :694
udp 0 0 0.0.0.0:694 0.0.0.0:* 16397/heartbeat: wr
#
3、访问测试
http://blog.运维网.com/attachment/201009/221816367.png
五、模拟恢复(重新接上node1网线)
等待一段时间后资源又回到了node1上 (略去不写,因为与三中的内容一致)
访问如下:
http://blog.运维网.com/attachment/201009/221926113.png
学习了。
页:
[1]