使用Heartbeat实现双机热备

使用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相互连接用来检测网络连接情况。
网络拓扑结构图如下:

二,安装配置
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用来设置当主服务器出现问题时heartbeat的执行机制。其内容为:当主服务器宕机后,该怎样进行切换操作。切换内容通常有IP地址的切换、服务的切换、共享存储的切换,从而使从服务器具有和主服务器同样的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启动将失败
[[email protected] ~]#chmod 600 /etc/ha.d/authkeys

2.6,配置从节点的heartbeat
将主节点上的heartbeat配置文件拷贝到从节点,并确保两个节点上的配置文件权限相同:
-----------------------------------------------
scp /etc/ha.d/ha.cf [email protected]:/etc/ha.d/
scp /etc/ha.d/haresources [email protected]:/etc/ha.d/
scp /etc/ha.d/authkeys  [email protected]:/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,其具体信息如下:
-----------------------------------------------
[[email protected] 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。
同时查看主节点日志:主节点让出资源
[[email protected] 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

时间: 2024-10-26 04:09:57

使用Heartbeat实现双机热备的相关文章

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

centos实现heartbeat 双机热备

centos实现heartbeat 双机热备 双机热备就是使用两台服务器共同执行同一服务,在运行过程中实时相互备份,当一台服务器出现故障时候,另一台可以立即发现故障并接管那天服务器的服务,从而在不需要人工干预的情况下自动保证系统能持续提供服务.常见的有两种情况:使用共同存储设备.使用不同存储设备(需要通过软件保持同步),在同一时间内主服务器保持激活状态,备份服务器处于监听状态,当主服务器出现故障无法启动时候,备份服务器会通过心跳诊断将备份服务器激活,保证服务正常使用.这里主要是用在提供web服务

mysql双机热备+heartbeat集群+自动故障转移

环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为 192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.200 备注:heartbeat 本身是不能做到服务不可用自动切换的,所以用结合 额外的脚本才可以做到,本文中提到的moniter 脚本即为实现某个 mysql 服务不可用的时候自动切换的还可以自动报警 安装和配置过程分为如下几步: 第一部分:mysql 的安装配置 1 安装 1.1. 添加mysql

两台linux完美实现双机热备【来源网络尚未实践】

[来源:http://rainbird.blog.51cto.com/211214/225541/] 一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以实现双机热备.直到一个月以前设计存储方案的时候部门老大给了一个国外的链接介绍drbd+nfs实现nfs的热备方案的时候,我的眼前一亮,这不就是我一直想做的不依靠存储实现热备的解决方案吗? 先来纠正一

keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可以阅读本章,即使部分读者使用Nginx负载均衡,但是在大流量下性能相对于工作在链路层的LVS真是不能同日而语,并且LVS不仅可以实现WEB方面的负载均衡,其他诸如数据库.FTP.Mail等都可以实现. 通常对于小型网站,很多都使用单台服务器,顶多在弄个缓存服务器.数据库服务器.但是一旦流量上来,单台

HA-集群(High available)高可用性集群(双机热备)菜鸟入门级

HA(High available)高可用性集群(双机热备)   1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务.当主机恢复正常后,按照使用者设定的自动或手动切换到主机上运行,数据一致性通过共享存储系统解决. 2.实现该功能的软件有:Heartbeat , keepalived(具有负载均衡的能力) 3.结构图 HA-Heartbeat 实验:以hearbeat为例,来做HA集群,并把nginx服务作为HA对应的服务 关闭防火墙:iptabl

非常强悍并实用的双机热备+负载均衡线上方案

Heartbeat+DRBD+NFS+Keepalived+Lnmp 对于网站服务器来说,可靠性之重要不用我多说,但要想做到可靠性一般需要昂贵的设备,这里最主要是就是数据同步用的共享磁盘了,磁盘柜+磁盘一共下来是20多万,这对于追求最高性价比的双机负载热备方案来说是极其不靠谱的,尤其是中小型企业,私有企业,一般经理是不会考虑这么高的成本的.我们通常做都是四台服务器+一个磁盘柜子+千兆交换机,那么这个成本下来将近30万了,而且这个方案有个弊端就是 存储依然存在单点故障,除非使用双控制+双电源+双主

heartbeat实现nginx热备

heartbeat实现热备原理: 与keepalived运用vrrp协议不同,heartbeat利用串口和ip实现心跳监控,节点会检查配置文件中的网络联通性,如果网络不通,则主节点的ipfail会执行切换,关闭主节点上的 nginx并释放虚拟ip:此时备用节点将接管虚拟ip,并将此节点上的nginx启动,这样就实现了nginx的热备. 虚拟ip:192.168.3.233 主节点: hostname usvr-124 eth0:192.168.3.124 eth0:0:192.168.8.124

Mycat+Mysql主从复制实现双机热备

Mycat+Mysql主从复制实现双机热备 一.mysql主从配置原理 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致. 这样做有如下几点好处: 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量. 对于异地热备,尤其适合灾备. 二.mysql 主从备份工作原理 简单的说就是把 一个服务器上执行过的sql语句在别的服务器上也重复执行一