使用Heartbeat实现双机热备
heartbeat的工作原理:heartbeat最核心的包含两个部分,心跳监測部分和资源接管部分,心跳监測能够通过网络链路和串口进行,并且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,假设在指定的时间内未受到对方发送的报文,那么就觉得对方失效,这时需启动资源接管模块来接管执行在对方主机上的资源或者服务。
heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并执行全部的服务,遇到故障时把资源交给从节点并由从节点执行服务
一、网络环境设定
每一个主机分别带有两块以太网卡,当中一块用于网络通信,还有一块用于心跳功能。两个节点的网络设置例如以下:
node1: 主机名:srv5.localdomain ( NodeA )
eth0: 192.168.8.5 255.255.255.0 //对外IP地址
eth1: 192.168.9.5 255.255.255.0 //HA心跳使用地址
node2: 主机名:srv6.localdomain ( NodeB )
eth0: 192.168.8.6 255.255.255.0 //对外IP地址
eth1: 192.168.9.6 255.255.255.0 //HA心跳使用地址
vip: 192.168.8.100
同一时候通过网络和还有一台机器192.168.9.7相互连接用来检測网络连接情况。
网络拓扑结构图例如以下:
两台机器的/etc/hosts文件里须要增加例如以下的配置
192.168.8.5 srv5.localdomain
192.168.8.6 srv6.localdomain
主节点的/etc/sysconfig/network文件的HOSTNAME例如以下
HOSTNAME=srv5.localdomain
从节点的/etc/sysconfig/network文件的HOSTNAME例如以下
HOSTNAME=srv6.localdomain
二,安装配置
2.1,在两台机器上分别安装heartbeat
yum -y install heartbeat-stonith heartbeat-pils heartbeat heartbeat-devel heartbeat-gui libnet
2.2,配置heartbeat
Heartbeat的主要配置文件有ha.cf、haresources、authkeys,须要放在/etc/ha.d文件夹下,
在通过yum安装Heartbeat后,默认并没有这三个文件,
yum 安装后能够从/usr/share/doc/heartbeat-2.1.3找到,复制到/etc/ha.d并编辑
cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
2.3,主配置文件:ha.cf
内容设置例如以下:
debugfile /var/log/ha-debug #用于记录heartbeat的调试信息
logfile /var/log/ha-log #用于记录heartbeat的日志信息
logfacility local0 #系统日志级别
keepalive 2 #设定心跳(监測)间隔时间,默认单位为秒
warntime 10 ##警告时间,通常为deadtime时间的一半
deadtime 30 # 超出30秒未收到对方节点的心跳,则觉得对方已经死亡
initdead 120 #网络启动时间,至少为deadtime的两倍。
hopfudge 1 #可选项:用于环状拓扑结构,在集群中总共跳跃节点的数量
udpport 694 #使用udp端口694 进行心跳监測
ucast eth1 192.168.9.6 #採用单播,进行心跳监測,IP为对方主机IP
auto_failback on #on表示当拥有该资源的属主恢复之后,资源迁移到属主上
node srv5.localdomain #设置集群中的节点,节点名须与uname –n相匹配
node srv6.localdomain #节点2
ping 192.168.8.2 192.168.9.7 #ping集群以外的节点,这里是网关和还有一台机器,用于检測网络的连接性
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root #设置所指定的启动进程的权限
2.4,资源文件haresources
ha.cf文件设置了heartbeat的检验机制,没有执行机制。Haresources用来设置当主server出现故障时heartbeat的执行机制。其内容为:当主server宕机后,该如何进行切换操作。切换内容通常有IP地址的切换、服务的切换、共享存储的切换,从而使从server具有和主server同样的IP、SERVICE、SHARESTORAGE,从而使client没有察觉。在两个HA节点上该文件必须全然一致。
cat /etc/ha.d/haresources
srv5.localdomain IPaddr::192.168.8.100/32
2.5,认证文件authkeys
用于配置心跳的加密方式,该文件主要是用于集群中两个节点的认证,採用的算法和密钥在集群中节点上必须同样,眼下提供了3种算法:md5,sha1和crc。当中crc不能够提供认证,它仅仅能够用于校验数据包是否损坏,而sha1,md5须要一个密钥来进行认证。
本次实例中,内容设置例如以下:
-----------------------------------------------
cat /etc/ha.d/authkeys
auth 1
1 crc
-----------------------------------------------
注:须要更改该文件的属性为600,否则heartbeat启动将失败
[root@server01 ~]#chmod 600 /etc/ha.d/authkeys
2.6,配置从节点的heartbeat
将主节点上的heartbeat配置文件复制到从节点,并确保两个节点上的配置文件权限同样:
-----------------------------------------------
scp /etc/ha.d/ha.cf root@srv6.localdomain:/etc/ha.d/
scp /etc/ha.d/haresources root@srv6.localdomain:/etc/ha.d/
scp /etc/ha.d/authkeys root@srv6.localdomain:/etc/ha.d/
-----------------------------------------------
ha.cf文件需改动ucast的内容,将其指向主节点:
ucast eth1 192.168.9.5 #指定对方IP
其它文件内容无需改动。在主备节点上haresources和authkeys文件必须是同样的
三,測试
使用http服务測试 heartbeat
编辑各自主机的測试用文件index.html,放到/var/www/html/文件夹下,内容分别为“NodeA”和“NodeB”
在两机上分别启动httpd服务和heartbeat服务
#service httpd start
#service heartbeat start
先在主节点上启动:
heartbeat为主节点设置虚拟IP地址192.168.8.100。在主节点使用ifconfig能够看到多了个eth0:0,其详细信息例如以下:
-----------------------------------------------
[root@srv5 ha.d]# ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:D8:F1:9C
inet addr:192.168.8.100 Bcast:192.168.8.100 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
-----------------------------------------------
查看日志:
heartbeat[23230]: 2014/10/04_01:28:24 info: Local status now set to: 'up'
heartbeat[23230]: 2014/10/04_01:28:25 info: Link 192.168.8.2:192.168.8.2 up.
heartbeat[23230]: 2014/10/04_01:28:25 info: Status update for node 192.168.8.2: status ping
heartbeat[23230]: 2014/10/04_01:28:25 info: Status update for node 192.168.9.7: status ping
heartbeat[23230]: 2014/10/04_01:28:25 info: Link 192.168.9.7:192.168.9.7 up.
heartbeat[23230]: 2014/10/04_01:30:24 WARN: node srv6.localdomain: is dead //从节点还没有启动
heartbeat[23230]: 2014/10/04_01:30:24 info: Comm_now_up(): updating status to active
heartbeat[23230]: 2014/10/04_01:30:24 info: Local status now set to: 'active'
//从还有一台节点抢占资源
heartbeat[23230]: 2014/10/04_01:30:24 info: Starting child client "/usr/lib/heartbeat/ipfail" (0,0)
heartbeat[23230]: 2014/10/04_01:30:24 WARN: No STONITH device configured.
heartbeat[23230]: 2014/10/04_01:30:24 WARN: Shared disks are not protected.
heartbeat[23230]: 2014/10/04_01:30:24 info: Resources being acquired from srv6.localdomain.
heartbeat[23317]: 2014/10/04_01:30:24 info: Starting "/usr/lib/heartbeat/ipfail" as uid 0 gid 0 (pid 23317)
harc[23318]: 2014/10/04_01:30:24 info: Running /etc/ha.d/rc.d/status status
mach_down[23364]: 2014/10/04_01:30:25 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
IPaddr[23385]: 2014/10/04_01:30:25 INFO: Resource is stopped
//然后在本机启动资源
ResourceManager[23473]: 2014/10/04_01:30:25 info: Acquiring resource group: srv5.localdomain IPaddr::192.168.8.100/32
IPaddr[23500]: 2014/10/04_01:30:25 INFO: Resource is stopped
ResourceManager[23473]: 2014/10/04_01:30:25 info: Running /etc/ha.d/resource.d/IPaddr 192.168.8.100/32 start
其它PC机从浏览器登录http://192.168.8.100/index.html能够看到其页面内容为“NodeA”.
将主节点的eth1断网,刷新页面,内容显示为“NodeB”,表示http服务已交给从节点并由从节点执行。
此时,再在主节点上查看ifconfig,不显示vip的设备及其vip。
同一时候查看主节点日志:主节点让出资源
[root@srv5 ha.d]# tail /var/log/ha-log
ResourceManager[21049]: 2014/10/04_00:52:00 info: Releasing resource group: srv5.localdomain IPaddr::192.168.8.100/32
ResourceManager[21049]: 2014/10/04_00:52:00 info: Running /etc/ha.d/resource.d/IPaddr 192.168.8.100/32 stop
IPaddr[21113]: 2014/10/04_00:52:00 INFO: ifconfig eth0:0 down
IPaddr[21087]: 2014/10/04_00:52:00 INFO: Success
从节点接管资源,查看从节点日志:
IPaddr[20183]: 2014/10/04_01:43:53 INFO: eval ifconfig eth0:0 192.168.8.100 netmask 255.255.255.255 broadcast 192.168.8.100
IPaddr[20157]: 2014/10/04_01:43:53 INFO: Success
mach_down[20038]: 2014/10/04_01:43:53 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
mach_down[20038]: 2014/10/04_01:43:53 info: mach_down takeover complete for node srv5.localdomain.
heartbeat[19467]: 2014/10/04_01:43:53 info: mach_down takeover complete.
ipfail[19495]: 2014/10/04_01:43:53 info: NS: We are still alive!
ipfail[19495]: 2014/10/04_01:43:53 info: Link Status update: Link srv5.localdomain/eth1 now has status dead
还能够利用/usr/share/heartbeat下的hb_standby和hb_takeover命令来模拟资源切换。
使用Heartbeat实现双机热备的更多相关文章
- HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级
HA(High available)--Heartbeat高可用性集群(双机热备) 1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务.当主机恢复 ...
- 两台linux利用heartbeat+drbd 完美实现双机热备
一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...
- heartbeat+DRBD 高可用 双机热备
heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...
- mysql双机热备+heartbeat集群+自动故障转移
环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为 192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.20 ...
- keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群
本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...
- mysql双机热备的实现
转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...
- Nginx+Keeplived双机热备(主从模式)
Nginx+Keeplived双机热备(主从模式) 参考资料: http://www.cnblogs.com/kevingrace/p/6138185.html 双机高可用一般是通过虚拟IP(漂移IP ...
- postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
http://blog.csdn.net/qguanri/article/details/51151974 需求描述 我们有两台centos7的数据库主机A.B.要对A.B实现双机热备,A作为数据库m ...
- (转)mysql双机热备的实现
mysql双机热备的实现 原文:http://www.zjian.me/web/php/mysql%E5%8F%8C%E6%9C%BA%E7%83%AD%E5%A4%87%E7%9A%84%E5%AE ...
随机推荐
- 透过浏览器看HTTP缓存(转)
作为前端开发人员,对于我们的站点或应用的缓存机制我们能做的似乎不多,但这些却是与我们关注的性能息息相关的部分,站点没有做任何缓存机制,我们的页面可能会因为资源的下载和渲染变得很慢,但大家都知道去找前端 ...
- 合作编辑室计费系统(一)-SVN常见错误
联合室已完成,在不到一个月的时间,我们的团队:嗤.陈琛.我.这段时间都挺辛苦的.从心里这次合作,真的让我们学习了非常多,学会了接纳和承担. 在我们開始合作机房的时候,社和师哥就给我们做了功课,说你们好 ...
- Git打补丁常见问题
Git打补丁常见问题 往往觉得得到某个功能的补丁就觉得这个功能我就已经成功拥有了,可是在最后一步的打补丁的工作也是须要相当慎重的,甚至有可能还要比你获取这个补丁花费的时间还要多.看到好多同行遇到这个问 ...
- 每天进步一点点之SQL 获取表中某个时间字段离当前时间最近的几条
实际中用到的SQL: select * from (select top 3 Id, case when startSignup>GETDATE() then '敬请期待' when (star ...
- HR筒子说:程序猿面试那点事
小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的 ...
- hdu 1298 T9(特里+DFS)
pid=1298" target="_blank" style="">题目连接:hdu 1298 T9 题目大意:模拟手机打字的猜想功能.依据概 ...
- Oracle 重建索引脚本
该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...
- W3C DOM 事件模型(简述)
1.事件模型 由于事件捕获与冒泡模型都有其长处和解释,DOM标准支持捕获型与冒泡型,能够说是它们两者的结合体.它能够在一个DOM元素上绑定多个事件处理器,而且在处理函数内部,thiskeyword仍然 ...
- 数据你把它的金额-JAVA分页
数据量你造吗-JAVA分页 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...
- 基于AVR128单纯Modbus协议实施
Modbus通信协议Modicon公司1979在发展中,适用于工业现场总线协议控制.Modbus通信系统包含芯片的节点,并与组合物可编程控制的公共传输线,它的目的是收集和监视多个节点的数据.Modbu ...