使用Heartbeat实现高可靠
Heartbeat介绍:
Heartbeat是Linux-HA工程的一个组件,自1999年开始到现在,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内得到了广泛的应用。官方网站:http://www.linux-ha.org
Heartbeat的作用:
当出现故障时,heartbeat可以将资源从一台故障的计算机快速地转移到另一台正常的计算机上从而继续对外提供服务,功能和keepalived类似。但是heartbeat自带了很多功能脚本给我们使用
Heartbeat工作原理
为实现高可靠,heartbeat高可靠服务通常由两台装有heartbeat程序的服务器组成,我们可以通过配置文件来指定其中一台为主服务器,另外一台自动成为备服务器,主服务器对外提供服务,备服务器上运行着heartbeat的守护进程,通过心跳机制来监听主服务器的状态,如果备服务器在指定的时间内未监听到来自主服务器的心跳,就会触发并启动故障转移程序,并取得主服务器上的相关资源。接替出现故障服务器的职能,由备份状态切换为主,进而继续提供服务,从而达到服务高可用的目的。
heartbeat和keepalived的应用场景和区别
1.对web或db做负载均衡(nginx、haproxy、lvs)的高可用业务,二者都可以实现,但是lvs最好与keepalived结合
2.需要数据同步的高可用业务,最好使用heartbeat,如:mysql双主多从集群,NFS存储集群等,因为他们的特点是都需要数据同步,这样的业务最好使用heartbeat,因为heartbeat自带了drbd的脚本
目标:
1.使用heartbeat创建vip实现对两台机器的httpd高可靠。
准备:
1.两台机器(192.168.32.50/kvm1,192.168.32.51/kvm2),这里用我原来整kvm的机器来测吧(Centos6.6)。
2.安装heartbeat
yum -y install heartbeat
测试开始:
1.安装好heartbeat会有配置模版文件,将其拷贝到/etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
cd /etc/ha.d/
2.修改配置文件
2.1 修改 authkeys,默认提供了3种认证方式,我这里用的是md5。修改完之后,记得要把这个文件的权限设置为600
chmod 600 authkeys
2.2 修改ha.cf,加入高可靠配置项
#修改配置文件,添加如下配置
vi /etc/ha.d/ha.cf
#heartbeat日志文件
logfile /var/log/ha-log
#注掉syslog日志设施
#logfacility local0
#设置心跳时间
keepalive 2
#使用广播经行心跳检测,网卡根据自己实际ip所在调整
bcast eth1
#master节点故障恢复后是否自动切换
auto_failback on
#定义heartbeat集群有哪些节点(主机名必须与uname -n返回的值一致)
node kvm1
nod kvm2
#网络检测,我这里配置的是网关
ping 192.168.32.2
2.3 安装httpd并启动,用作测试
yum -y install httpd
service httpd start
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
2.4 修改haresources,配置需要高可靠的资源。我们这里是配置的httpd,直接打开该文件在尾部追加下面这行
# 在eth1上添加一个vip 为httpd提供支持
kvm1 IPaddr::192.168.32.160/24/eth1 httpd
2.5 配置文件修改完了,需要开放通讯端口
#heartbeat 默认使用udp 694端口进行心跳监测,如果系统有使用iptables 做防火墙,需把这个端口打开,不然会脑裂
iptables -I INPUT -p udp --dport 694 -j ACCEPT
2.6 手动切换主从的命令(这个不需要执行)
#将当前节点从active状态转换为standby状态
/usr/share/heartbeat/hb_standby
#将当前节点从standby状态转换为active状态
/usr/share/heartbeat/hb_takeover