我是靠谱客的博主 感动皮皮虾,最近开发中收集的这篇文章主要介绍Heartbeat,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Hearbeat和keepalived区别
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机
heartbeat的目的是用户service的双机
lvs的高可用建议用keepavlived
业务的高可用用heartbeat

Heartbeat高可用介绍
Heartbeat,心跳的意思,这里是Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。 heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务

keepalived主要控制IP飘移,配置应用简单,而且分层,L3,4,5,各自配置极为简单
heartbeat不但可以控制IP飘移,更擅长对资源服务的控制,配置,应用比较复杂

Heartbeat工作原理
通过修改Heartbeat的配置文件,可以指定哪台Heartbeat服务器作为主服务器,则另一台服务器自动成为热备服务器,然后在热备服务器上配置Heartbeat守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定的时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源及服务高可用性的目的。

以上描述是heartbeat主备的模式,heartbeat还支持主主模式,即两台服务器互为主备,这时它们之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者宕机了,这每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者服务,继续为用户提供服务。一般情况下,可以较好的实现一台主机故障后,企业业务仍能不间断的持续运行。注意:所谓的业务不间断,在故障转移期间也是需要切换时间的<例如:停止数据库及存储服务等>heartbeat的主备高可用的切换时间一般是在5-20秒左右(服务器宕机的切换比人工切换要快)

heartbeat高可用heartbeat高可用是操作系统级别的,不是服务(软件)级别的
切换的常见条件
1 服务器宕机
2 heartbeat服务本身故障
3 心跳连接故障
要想实现服务级别切换,可以利用脚本监控服务健康状态,如果服务出现故障就关闭掉heartbeat服务实现切换

Hearbeat端口
TCP/UDP的694号端口

安装及配置
这里使用的是yum安装
源码包下载地址
http://www.linux-ha.org/wiki/Download

主机规划
heart01 外网10.0.0.7 内网172.16.1.7 心跳线 10.0.10.7
heart02 外网10.0.0.8 内网172.16.1.8 心跳线 10.0.10.8

vim /etc/hosts
172.16.1.7 heart01
172.16.1.8 heart02

添加主机路由 让心跳数据走eth2
heart01 10.0.0.7上添加
route add -host 10.0.10.8 dev eth2
heart02 10.0.0.8上添加
route add -host 10.0.10.7 dev eth2

更新yum源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

yum安装heartbeat
yum -y install heartbeat*

/usr/share/doc/heartbeat-3.0.4
heartbeat 主要配置文件
ha.cf heartbeat参数配置文件
authkey heartbeat认证文件
haresource heartbeat资源配置文件,如配置ip资源及脚本程序

heartbeat配置脚本路径(控制资源和服务的启动和关闭)
/etc/ha.d/resource.d/

heartbeat三个最重要的配置文件模板位置
/usr/share/doc/heartbeat-3.0.4/

以下三个配置文件内容主从必须一样
vim /etc/ha.d/ha.cf (不去拷贝模板,自己手动创建)
debugfile /var/log/ha-debug #调试信息日志
logfile /var/log/ha-log #工作当中可以只留这一个日志
logfacility local1 #rsyslog

keepalive 2 #指定心跳时间单位秒
deadtime 30 #指定若备节点在30内没有收到主节点的心跳信号,则立即接管
warntime 10 #指定心跳延迟的时间,当10秒内备节点没有收到主节点心跳信号,就会向日志中写入警告日志,但此时不会接管服务
initdead 60 #启动多长时间后才被判定为正常,才会启动服务器的任何资源,初始化时间要是keepalive(死亡时间)的2倍

#bcast eth1 #指明心跳使用以太网广播方式在eth1上进行广播
mcast eth2 225.0.0.7 694 1 0 #表示使用多播的方式 网卡 广播地址(最后一位建议用IP的最后一位) 端口 ttl loop 广播地址为D类 范围:224.0.0.0-239.255.255.255

auto_failback off #宕机修复后是否自动加入,主节点是否自动拿回资源(工作中最好人为控制)
node heart01 #heartbeat主机名
node heart02 #heartbeat主机名
crm no #集群管理功能

vim /etc/ha.d/authkeys #自己手动创建文件 添加下面两行
auth 1
1 sha1 4d938cac55da691c4eb9d70ba3aa531f012858a6

chmod 600 /etc/ha.d/authkeys #必须设置为600
注:sha1加密生成方法
echo heartbeattest|sha1sum

vim /etc/ha.d/haresources #手动创建文件,主主模式
heart01 IPaddr::10.0.0.200/24/eth0 #优先在主heartbeat上启动 主机名 VIP地址 绑定网卡设备
heart02 IPaddr::10.0.0.201/24/eth0
如果要配置多VIP继续按这种格式写 主heartbeat主机名 VIP地址 主备都要一致
注:IPaddr就是/etc/ha.d/resource.d/下的一个脚本 以后自定义的脚本也要放在这个目录中,resource.d目录下的文件要支持start/stop模式

启动heartbeat
/etc/init.d/heartbeat start
启动后检查VIP是否生效
ip a |egrep “10.125.192.200|10.125.192.201”

端口
694

不修改配置文件增加VIP临时生效
/etc/ha.d/resource.d/IPaddr 10.0.0.22/24/eth0 start (stop删除)

不关闭服务的情况下把本地vip交给对端服务器接管
完全释放vip
/usr/share/heartbeat/hb_standby
完全接管vip
/usr/share/heartbeat/hb_takeover local #只接受本地的vip如果不加则默认接受所有 就会把10.0.0.201也抢过来

web服务高可用 http双机高可用vip漂移
1 两边事先起好httpd服务,通过ip漂移实现(方法同keepalived)

2让httpd服务随heartbeat启动和关闭
vim /etc/ha.d/haresources
heart01 IPaddr::10.0.0.200/24/eth0 httpd
后面接的httpd脚本必须存在于/etc/init.d/ 或 /etc/ha.d/resource.d/ 其中的任何一个之内才能被控制且有可执行权限

最后

以上就是感动皮皮虾为你收集整理的Heartbeat的全部内容,希望文章能够帮你解决Heartbeat所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部