千家信息网

Mysql DBA 高级运维学习之路-heartbeat高可用软件的安装及配置

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1.部署Heartbeat高可用需求1.1 操作系统[root@heartbeat-1-114 ~]# cat /etc/redhat-release CentOS release 6.9 (Fina
千家信息网最后更新 2026年11月01日Mysql DBA 高级运维学习之路-heartbeat高可用软件的安装及配置

1.部署Heartbeat高可用需求

1.1 操作系统

[root@heartbeat-1-114 ~]# cat /etc/redhat-release CentOS release 6.9 (Final)

1.2 Heartbeat服务主机资源准备

主服务器A:

主机名:heartbeat-1-114

eth0网卡地址:192.168.136.114(管理IP)

eth2网卡地址:10.0.10.4/255.255.255.0 (心跳IP)

从服务器B:

主机名:heartbeat-1-115

eth0网卡地址:192.168.136.115(管理IP)

eth2网卡地址:10.0.10.5/255.255.255.0(心跳IP)

虚拟VIP:

虚拟VIP在主服务器heartbeat-1-114上,VIP:192.168.136.116

仲裁主机:10.0.10.6

2.Heartbeat高可用实施准备

2.1 搭建虚拟真实环境

2.2 给虚拟机配置IP和主机名

配置IP就省略了,设置两台主机的主机名分别为heartbeat-1-114和heartbeat-1-115。分别编译两台机器的/etc/sysconfig/network配置文件,设置HOSTNAME=heartbeat-1-114和HOSTNAME=heartbeat-1-115。然后在命令行下执行hostname heartbeat-1-114和hostname heartbeat-1-115使设置马上生效,注意/etc/hosts文件中127.0.0.1对应的主机名不要配置。

提示:可以执行setup命令然后选network configuration-->Edit configuration即可配置机器名,然后logout退出重新登录后生效。

2.3 配置hosts文件(两个节点都要做)

提示:两台机器必须互相能ping通

在heartbeat-1-114主机上配置hosts文件

[root@heartbeat-1-114 ~]# cat >>/etc/hosts< 192.168.136.114 heartbeat-1-114> 192.168.136.115 heartbeat-1-115> EOF

在heartbeat-1-115主机上配置hosts文件

[root@heartbeat-1-115 ~]# cat >>/etc/hosts< 192.168.136.114 heartbeat-1-114> 192.168.136.115 heartbeat-1-115> EOF

通过ping ip地址的方法检查测试,看其返回的IP是不是和/etc/hosts中配置的内容一致。

特别强调:机器名必须是uname -n返回的结果

[root@heartbeat-1-114 ~]# uname -nheartbeat-1-114[root@heartbeat-1-115 ~]# uname -nheartbeat-1-115

提示:hosts文件的配置在heartbeat服务中会用到,后文的drbd及存储高可用也会用到,在生产环境中会把所有的机器名对应上所有的机器IP地址,可以通过分发工具统一分发到所有机器的/etc/hosts中。

2.4 配置服务间的心跳连接

eth2 10.0.10.5和eth2 10.0.10.4两块网卡之间通过普通网线连接的,即不通过交换机,直接用网线将两块网卡连在一起,用于做心跳检测或传数据等。

提示:高可用服务器对上的heartbeat软件会利用这条心跳线来检查对端的机器是否存活,进而决定是否做故障转移,资源切换,来保证业务的连续性。
如果条件允许,以上连接可同时使用,来加大保险系数防止裂脑问题的发生。

本次案例:选用以太网电缆两网卡直连。

选用原因:简单,容易部署、效果也不错。

在两台机器上分别增加一条主机路由,来实现两台机器检查对端时通过这个心跳线线路检查。

(1)在heartbeat-1-114上添加主机主机路由:

[root@heartbeat-1-114 ~]# /sbin/route add -host 10.0.10.4 dev eth2

添加到开机自启动配置文件中

[root@heartbeat-1-114 ~]# echo "/sbin/route add -host 10.0.10.4 dev eth2">>/etc/rc.local

(2)在heartbeat-1-115上增加如下主机路由:

[root@heartbeat-1-115 ~]# /sbin/route add -host 10.0.10.5 dev eth2

添加到开机自启动配置文件中

[root@heartbeat-1-115 ~]# echo "/sbin/route add -host 10.0.10.5 dev eth2">>/etc/rc.local

提示:要确保心跳线路是通的

2.5 配置虚拟VIP

在主服务器上heartbeat-1-114上配置辅助VIP,辅助ip用ip addr命令查看

[root@heartbeat-1-114 ha.d]# ip addr add 192.168.136.116/24 dev eth0:1[root@heartbeat-1-114 ha.d]# ip addr|grep "116"inet 192.168.136.116/24 brd 192.168.136.255 scope global secondary eth0:1

2.6 关闭防火墙和selinux(两台节点都要操作)

[root@heartbeat-1-114 ~]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@heartbeat-1-114 ~]# getenforceDisabled[root@heartbeat-1-115 ~]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@heartbeat-1-115 ~]# getenforceDisabled

3.搭建heartbeat高可用

3.1 安装heartbeat3.0软件

CentOS-6.8-x86_64的rpm包没有heartbeat软件,所以要下载epel包

[root@heartbeat-1-114 ~]# yum search heartbeat已加载插件:product-id, subscription-managerThis system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.rhel-local   | 4.1 kB 00:00 ... 警告:没有匹配 heartbeat 的软件包没有找到匹配的软件包

3.2 下载并安装epel扩展源(两台都要操作)

[root@heartbeat-1-114 ~]# mkdir -p /home/linzhongniao/tools [root@heartbeat-1-114 ~]# cd /home/linzhongniao/tools  [root@heartbeat-1-114 tools]# wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmResolving mirrors.ustc.edu.cn... 218.104.71.170, 2001:da8:d800:95::110Connecting to mirrors.ustc.edu.cn|218.104.71.170|:80... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm [following] --2018-11-02 23:04:38--  http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpmReusing existing connection to mirrors.ustc.edu.cn:80.HTTP request sent, awaiting response... 200 OKLength: 14540 (14K) [application/x-redhat-package-manager]Saving to: "epel-release-6-8.noarch.rpm.1"100%[==================================================================>] 14,540  --.-K/s   in 0.04s   2018-11-02 23:04:38 (371 KB/s) - "epel-release-6-8.noarch.rpm.1" saved [14540/14540][root@heartbeat-1-114 tools]# rpm -ivh epel-release-6-8.noarch.rpmwarning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing...########################################### [100%]   1:epel-release   ########################################### [100%][root@heartbeat-1-114 tools]# rpm -qa|grep epelepel-release-6-8.noarch

3.3 安装heartbeat(两台都要操作)

yum install heartbeat* -y

提示:如果yum安装后想保留rpm包,用下面的方法。

[root@heartbeat-1-114 ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf [root@heartbeat-1-114 ~]# grep keepcache /etc/yum.conf keepcache=1

3.4 主节点配置heartbeat服务

两台机器分别执行安装heartbeat软件后,不出意外就可以安装好heartbeat软件了。前面已经提到了,heartbeat的默认配置文件目录为/etc/ha.d。heartbeat常用的配置文件有三个,ha.cf、authkey和haresource,各自的作用见下面的表格。

3.4.1 配置ha.cf文件及文件说明

(1)先把ha.cf、haresources和authkeys这三个文件拷到/etc/ha.d/目录下

[root@heartbeat-1-114 ~]# ll /usr/share/doc/heartbeat-3.0.4/total 144 -rw-r--r-- 1 root root  1873 Dec  3  2013 apphbd.cf -rw-r--r-- 1 root root   645 Dec  3  2013 authkeys -rw-r--r-- 1 root root  3701 Dec  3  2013 AUTHORS -rw-r--r-- 1 root root 58752 Dec  3  2013 ChangeLog -rw-r--r-- 1 root root 17989 Dec  3  2013 COPYING -rw-r--r-- 1 root root 26532 Dec  3  2013 COPYING.LGPL -rw-r--r-- 1 root root 10502 Dec  3  2013 ha.cf -rw-r--r-- 1 root root  5905 Dec  3  2013 haresources -rw-r--r-- 1 root root  2935 Dec  3  2013 README[root@heartbeat-1-114 ~]# cd /usr/share/doc/heartbeat-3.0.4/[root@heartbeat-1-114 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/

(2)配置ha.cf配置文件

[root@heartbeat-1-114 ha.d]# cat ha.cfdebugfile /var/log/ha-debuglogfile/var/log/ha-loglogfacility local0keepalive 2deadtime 30warntime 10initdead 60udpport 694#bcast  eth2#mcast eth2 225.0.0.114 694 1 0ucast eth2 10.0.10.5auto_failback onnode  heartbeat-1-114node  heartbeat-1-115ping 10.0.10.6respawn root /usr/lib64/heartbeat/ipfailapiauth ipfail gid=root uid=root#crm on

(3)ha.cf文件详细说明

debugfile /var/log/ha-debug:写入调试信息的文件。

logfile /var/log/ha-log:heartbeat的日志文件。

keepalive 2:心跳的时间间隔,默认时间单位为秒s。

deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。

warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。

initdead 60:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。

bcast eth2:指明心跳使用以太网广播方式在eth2接口上进行广播,如使用两个实际网络来传送心跳则#bcast eth0 eth2,用udp进行广播建议副节点不止一个情况下使用

mcast eth2 225.0.0.130 694 1 0 :设置多播通信使用的端口,225.0.0.130为多播ip地址在一个局域网内这个ip地址不能一样,694为默认使用的udp端口号,建议在副节点不止一台使用。

注意:一个局域网内有多组heartbeat服务同时正常使用的前提是多播地址不同(可选多播地址段为224.0.0.0-239.255.255.255),一般路由器、交换机等应该都是多播的方式,建议IP的最后八位作为多播地址的最后8位。当然不用多播也能解决心跳问题。

udpport 694:设置广播通信使用的端口,694为默认使用的端口号。

ucast eth2 10.0.10.5:设置广播通信对方机器心跳检测的网卡和IP和udpport一起用。

auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。

respawn heartbeat /usr/lib64/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。

crm on:是否开启集群资源管理功能(Cluster Resource Manager)

提示:我们可以查看/usr/share/doc/heartbeat-3.0.4/下的ha.cf来详细了解参数信息。

3.4.2 配置authkey文件及文件说明

(1)配置authkey文件

[root@heartbeat-1-114 ha.d]# sha1sum /etc/ha.d/authkeys da39a3ee5e6b4b0d3255bfef95601890afd80709  /etc/ha.d/authkeys[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/authkeys auth 22 sha1 da39a3ee5e6b4b0d3255bfef95601890afd80709

将authkey权限修改为600

[root@heartbeat-1-114 ha.d]# chmod 600 /etc/ha.d/authkeys [root@heartbeat-1-114 ha.d]# ll /etc/ha.d/authkeys  -rw------- 1 root root 20 Nov  3 20:31 /etc/ha.d/authkeys

(2)文件说明

此处提到authkey权限必须为600#   Authentication file.  Must be mode 600#   Must have exactly one auth directive at the front.#   authsend authentication using this method-id##   Then, list the method and key that go with that method-id此处提到可以设置认证方法#   Available methods: crc sha1, md5.  Crc doesn't need/want a key.#   You normally only have one authentication method-id listed in this file#   Put more than one to make a smooth transition when changing auth#   methods and/or keys.这里说明sha1是最好的认证方法,其次md5是最好的#   sha1 is believed to be the "best", md5 next best.#   crc adds no security, except from packet corruption.#   Use only on physically secure networks.#auth 1#1 crc#2 sha1 HI!#3 md5 Hello!                       ##########

注意:authkeys需要的权限默认为600否则heartbeat服务会报错不发打开,两台机器都需要操作

3.4.3 配置haresource文件

[root@heartbeat-1-114 ha.d]# cat /etc/ha.d/haresources heartbeat-1-114 IPaddr::192.168.136.116/24/eth0:1

配置参数说明 :heartbeat-1-114为主节点hostname,192.168.136.116为vip,24为掩码是24位的网段,eth0:1为vip的设备名。IPaddr为heartbeat配置IP的默认脚本,其后的IP等都是脚本参数,脚本放置的位置如下所示:

[root@heartbeat-1-114 ha.d]# ll /etc/ha.d/resource.d/IPaddr  -rwxr-xr-x 1 root root 2273 Dec  3  2013 /etc/ha.d/resource.d/IPaddr

实际上面haresources文件中的内容,相当于在ip为192.168.136.116的机器上执行下面的脚本:

/etc/ha.d/resource.d/IPaddr 192.168.136.116/24/eth0:1 start/stop

IPaddr::192.168.136.116/24/eth0:1:这个语句的结构是脚本::(两个冒号)传参,确切的说这里并不是传参只是在ip为192.168.136.116的机器上执行一个这样的脚本,所以自己开发得到脚本只要能够用start/stop启动和停止并且满足脚本::传参这种格式,就能放到haresources文件中这是脚本要写全路径。

3.5 从节点配置heartbeat服务

把主机上的三个文件拷贝到从上,只需配置ha.cf文件

[root@heartbeat-1-114 ha.d]# scp ha.cf authkeys haresources heartbeat-1-115:/etc/ha.d/The authenticity of host 'heartbeat-1-115 (192.168.136.115)' can't be established.RSA key fingerprint is 66:cc:1a:b8:c6:68:8e:8f:d1:2f:a3:a3:56:23:4a:48.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'heartbeat-1-115,192.168.136.115' (RSA) to the list of known hosts.root@heartbeat-1-115's password: ha.cf   100%  341 0.3KB/s   00:00  

从节点只需要修改ha.cf文件,将10.0.10.5改成10.0.10.4,设置对方机器心跳检测的网卡和IP。

[root@heartbeat-1-115 ha.d]# grep "ucast" ha.cfucast eth2 10.0.10.4

4.启动heartbeat服务

先启动主节点后启动从节点,不要让heartbeat开机自启动

[root@heartbeat-1-130 ~]# /etc/init.d/heartbeat startStarting High-Availability services: INFO:  Resource is stoppedDone.[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeatheartbeat   0:off   1:off   2:on3:on4:on5:on6:off[root@heartbeat-1-114 ~]# chkconfig heartbeat off[root@heartbeat-1-114 ~]# chkconfig --list|grep heartbeatheartbeat   0:off   1:off   2:off   3:off   4:off   5:off   6:off

5.测试heartbeat高可用服务

有两种方法

(1)主节点停止heartbeat服务

/etc/init.d/heartbeat stop

(2)主节点禁ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j DROP

主节点允许ping

[root@heartbeat-1-114 ha.d]# iptables -I INPUT -p icmp -j ACCEPT

我们就会发现虚拟VIP切换到从节点上了,来达到heartbeat高可用功能继续为用户提供服务。

6.测试列脑

两节点都down掉eth2网卡

ifdown eth2

7.查看heartbeat启动及接管资源的过程

可以查看heartbeat日志和系统日志查看heartbeat启动及接管资源的过程

tail -f /var/log/ha-log

tail -f /var/log/messages

配置 文件 节点 服务 主机 机器 地址 网卡 脚本 资源 软件 提示 时间 对方 方法 服务器 系统 广播 检测 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网保险保险科技 互联网通讯科技 盈实互联网科技 互联网 科技创新 高科技与互联网 青岛互联网科技公司 迪茉互联网科技 互联网 视角下的科技创新 深圳前海聚择互联网科技有限公司 互联网软件和科技 洛阳昕诺飞互联网科技有限公司 开一家科技互联网公司需要多少钱 青海科技产业互联网发展 企晟互联网信息科技有限公司 洛阳共同富裕互联网科技有限公司 佛山市拉法互联网科技有限公司 长沙互联网科技 互联网金融科技元年 四川互联网展示科技馆设计 扫呗互联网科技有限公司 互联网科技保险 互联网科技公司怎么样 央行互联网金融科技公司 重庆互联网医院沙龙医盟信息科技 湖北码尼互联网科技有限公司电话 杭州壁岐互联网科技有限公司 健康食品互联网创新科技园项目 卓翼科技产业互联网合作 容联科技互联网电商 求路客互联网科技电话
0