千家信息网

heartbeat中怎么自动切换网络参数

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,heartbeat中怎么自动切换网络参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、环境node0eth0:192.168.32.
千家信息网最后更新 2026年10月31日heartbeat中怎么自动切换网络参数

heartbeat中怎么自动切换网络参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、环境

node0
eth0:192.168.32.30 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5E
eth2:10.160.100.30 heart RMAC:00:18:8B:8E:04:E2

node1
eth0:192.168.32.31 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5E
eth2:10.160.100.31 heart vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5E RMAC:00:1E:68:1E:19:5E

node2
eth0:192.168.32.32 service vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5E
eth2:10.160.100.32 heart RMAC:00:1E:68:1E:16:7E

实验要求:

1、当node0的网络出现故障时,node1自动切换将自己的ip、hostname、mac地址改成vip1、vman1、 nodevir1;故障恢复后node0自动切换回来,将自己的ip、hostname、mac改成vip1、vman1、nodevir,node1恢 复自身的网络参数

2、当node2的网络出现故障时,node1自动切换将自己的ip、hostname、mac地址改成vip2、vman2、 nodevir2;故障恢复后node0自动切换回来,将自己的ip、hostname、mac改成vip2、vman2、nodevir2,node1 恢复自身的网络参数

二、heartbeat安装(三台node操作一样)

1、安装libnet

[root@node1 ~]# tar -zxvf libnet-1.1.4.tar.gz

[root@node1 ~]# cd libnet-1.1.4

[root@node1 libnet-1.1.4]# ./configure

[root@node1 libnet-1.1.4]# make;make install

#libnet是一个高层次API工具,使用heartbeat需要用到他

2、安装heartbeat

[root@node1 ~]# tar -zxvf heartbeat-2.1.3.tar.gz

[root@node1 ~]# cd heartbeat-2.1.3

[root@node1 heartbeat-2.1.3]# ./ConfigureMe configure --disable-swig --disable-snmp-subagent

[root@node1 heartbeat-2.1.3]# make ; make install

[root@node1 heartbeat-2.1.3]# cp doc/ha.cf doc/haresource doc/anthkeys /etc/ha.d/

[root@node1 heartbeat-2.1.3]# cp ldirectord/ldiretord.cf /etc/ha.d/

[root@node1 heartbeat-2.1.3]# grouadd -g 694 haclient

[root@node1 heartbeat-2.1.3]# useradd -u 694 -g 694 hacluster

#heartbeat的安装包中默认包含ldirectord插件,该插件主要用于管理负载均衡,为保证ldirectord可用还行安装perl-Mailtools

三、配置

1 node0配置

1.1 创建网络参数修改脚本(/etc/ha.d/resource.d/Remac1)

[root@node0 resource.d]# vim /etc/ha.d/resource.d/Remac1 #Remac1也可存放在/etc/rc.d/init.d目录

#!/bin/bash

#discription : Start Real Server

VMAC=00:1E:68:1E:99:5E

RMAC=00:1E:68:1E:19:5E

GATEWAY=192.168.32.254

. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Replace eth0's Real Mac addr to Virtual Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $VMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.21 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname nodevir

/sbin/route add default gw $GATEWAY

;;

stop)

echo "Restore eth0's Real Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $RMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname node1

/sbin/route add default gw $GATEWAY

;;

*)

echo "Usage : $0 {start|stop}"

exit 1

esac

1.2 heartbeat主配置文件(/etc/ha.d/ha.cf)

[root@node1 ha.d]# vim /etc/ha.d/ha.cf

#debugfile /var/log/ha-debug

logfile /var/log/ha-log

#指名heartbeat的日志存放位置。

#crm yes

#是否开启Cluster Resource Manager(集群资源管理)功能。

bcast eth2

#指明心跳使用以太网广播方式,并且是在eth2接口上进行广播。

keepalive 2

#指定心跳间隔时间为2秒(即每两秒钟在eth2上发送一次广播)。

deadtime 60

#指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源。

warntime 20

#指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。

initdead 240

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

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

#baud 19200 #设置串行通信的波特率。

#serial /dev/ttyS0 #选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网。

#ucast eth0 192.168.1.2 #采用网卡eth2的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址。

#mcast eth0 225.0.0.1 694 1 0 #采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。

auto_failback on

#用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有 的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项 设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。

#stonith baytech /etc/ha.d/conf/stonith.baytech

# stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。

#watchdog /dev/watchdog

#该选项是可选配置,是通过Heartbeat来监控系统的运行状态。使用该特性,需要在内核中载入"softdog"内核模块,用来生成实际的设备文件,

如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入"insmod softdog"加载该模块。然后输入"grep misc /proc/devices"(应为10),输入"cat /proc/misc |grep watchdog"(应为130)。最后,生成设备文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。

node node0 #主节点主机名,可以通过命令"uanme –n"查看。

node node1 #备用节点主机名。

ping 192.168.32.254

#选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接。

ping_group group1 192.168.12.251 192.168.12.239 #类似于ping。

#respawn hacluster /usr/local/ha/lib/heartbeat/ipfail

#apiauth pingd gid=haclient uid=hacluster

apiauth pingd gid=root uid=root

respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s

#该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动 重新启动。最常用的进程是pingd,此进程用于检测和监控网卡状态,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动pingd进程的身份。

#下面的配置是关键,也就是激活crm管理,开始使用v2 style格式

crm respawn

#注意,还可以使用crm yes的写法,但这样写的话,如果后面的cib.xml配置有问题

#会导致heartbeat直接重启该服务器,所以,测试时建议使用respawn的写法

#下面是对传输的数据进行压缩,是可选项

compression bz2

compression_threshold 2

#注意,v2 style不支持ipfail功能,须使用pingd代替

1.3 资源文件(/etc/ha.d/haresources)

[root@node0 ha.d]# vim /etc/ha.d/haresources

node0 Remac1

#haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:

node-name network

#node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致,network用于设定集群的IP地址、子网掩码、网络设 备标识等,需要注意的是,这里指定的IP地址就是集群对外服务的IP地址,resource-group用来指定需要heartbeat托管的服务,也就 是这些服务可以由heartbeat来启动和关闭,如果要托管这些服务,必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到 /etc/init.d/或者/etc/ha.d/resource.d/目录下,heartbeat会根据脚本的名称自动去/etc/init.d或者 /etc/ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。

#LSB: Linux标准脚本文件(init script),通常放在/etc/init.d/目录下,heartbeat1.x版本之前的管理脚本一半放在/etc/ha.d /resource.d,在这里是/usr/local/ha/etc/ha.d/resource.d

OCF:Open Cluster Framework,默认放在/usr/lib/resource.d/heartbeat/目录下;在这里是/usr/local/ha/etc/ha.d/resource.d

#下面介绍一下ocf和lsb格式的区别:

LSB格式的脚本必须支持status功能,必须能接收start,stop,status,三个参数;而如果是OCF格式,则必须支持start,stop,monitor三个参数.其中status和monitor参数是用来监控资源的,非常重要.

例如LSB风格的脚本,运行./Mysql status时候, 返回值包含OK或则running则表示资源正常,返回值包含stopped或者No则表示资源不正常。 假如是OCF风格的脚本,运行./Mysql monitor时候, 返回0表示资源是正常的, 返回7表示资源出现问题.

#下面对配置方法进行具体说明:

node1 IPaddr::192.168.60.200/24/eth0/ Filesystem::/dev/sdb5::/webdata::ext3 httpd tomcat

#其中,node1是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚步,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0,IP为192.168.60.200的地址,此IP为heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0,接着,heartbeat将执行共享磁盘分区的挂载操作,"Filesystem::/dev/sdf1::/data1::ext3"相当于在命令行下执行mount操作,即"mount –t ext3 /dev/sdf1 /data1",最后依次启动httpd和tomcat服务。

1.4 认证文件(/etc/ha.d/authkeys)

[root@node0 resource.d]# vim /etc/ha.d/authkeys

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

#authkeys文件用于设定heartbeat的认证方式,共有三种可用的认证方式:crc、md5和sha1,三种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果heartbeat集群运行在安全的网络上,可以使用crc方式,如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高,如果是处于网络安全和系统资源之间,可以使用md5认证方式。这里我们使用crc认证方式,设置如下:

auth 1

1 crc

#2 sha1 sha1_any_password

#3 md5 md5_any_password

#需要说明的一点是:无论auth后面指定的是什么数字,在下一行必须作为关键字再次出现,例如指定了"auth 6",下面一定要有一行"6 认证类型"。最后确保这个文件的权限是600(即-rw-------)。

2 node1配置

2.1 创建网络参数修改脚本(/etc/ha.d/resource.d/Remac1&2)

[root@node1 ~]# vim /etc/ha.d/resource.d/Remac1 #备份node0的网络参数修改脚本

#!/bin/bash

#discription : Start Real Server

VMAC=00:1E:68:1E:99:5E

RMAC=00:1E:68:1E:19:5E #注意:与node0中Remac1中RMAC不一样

GATEWAY=192.168.32.254

. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Replace eth0's Real Mac addr to Virtual Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $VMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.21 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname nodevir

/sbin/route add default gw $GATEWAY

;;

stop)

echo "Restore eth0's Real Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $RMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname node1

/sbin/route add default gw $GATEWAY

;;

*)

echo "Usage : $0 {start|stop}"

exit 1

esac

[root@node1 ~]# cat /etc/ha.d/resource.d/Remac2 #备份node2的网络参数修改脚本

#!/bin/bash

#discription : Start Real Server

VMAC=00:1E:68:1E:88:5E

RMAC=00:1E:68:1E:19:5E #注意:与node中Remac1中RMAC不一样

GATEWAY=192.168.32.254

. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Replace eth0's Real Mac addr to Virtual Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $VMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.22 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname nodevir2

/sbin/route add default gw $GATEWAY

;;

stop)

echo "Restore eth0's Real Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $RMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname node1

/sbin/route add default gw $GATEWAY

;;

*)

echo "Usage : $0 {start|stop}"

exit 1

esac

2.2 主配置文件(/etc/ha.d/ha.cf)

[root@node1 ~]# vim /etc/ha.d/ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 60

warntime 20

initdead 240

udpport 694

auto_failback on

node node0 #主node0,排列顺序越靠前越优先

node node2 #主node2

node node1 #备node1

ping 192.168.32.254

respawn root /usr/lib/heartbeat/ipfail

apiauth ipfail gid=root uid=root

deadping 60

#注意:由于修改网络参数需要重启网卡,需要大量的时间,所以在此将所有时间参数设置比较长。

2.3 资源文件(/etc/ha.d/haresource)

[root@node1 ~]# cat /etc/ha.d/haresources

node0 Remac1

node2 Remac2

#备份nod0用Remac1脚本,备份node2用Remac2脚本

2.4 认证文件(/etc/ha.d/authkeys)

同node0

3 node2配置

3.1 创建网络参数修改脚本(/etc/ha.d/resource.d/Remac2)

[root@node2 ~]# cat /etc/ha.d/resource.d/Remac2

#!/bin/bash

#discription : Start Real Server

VMAC=00:1E:68:1E:88:5E

RMAC=00:1E:68:1E:16:7E

GATEWAY=192.168.32.254

. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Replace eth0's Real Mac addr to Virtual Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $VMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.22 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname nodevir2

/sbin/route add default gw $GATEWAY

;;

stop)

echo "Restore eth0's Real Mac addr"

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 hw ether $RMAC

/sbin/ifconfig eth0 up

/sbin/ifconfig eth0 192.168.32.32 broadcast 192.168.32.255 netmask 255.255.255.0

/bin/hostname node2

/sbin/route add default gw $GATEWAY

;;

*)

echo "Usage : $0 {start|stop}"

exit 1

esac

3.2 主配置文件(/etc/ha.d/ha.cf)

[root@node1 ~]# vim /etc/ha.d/ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 60

warntime 20

initdead 240

udpport 694

auto_failback on

node node2 #主node2,排列顺序越靠前越优先

node node1 #备node1

ping 192.168.32.254

respawn root /usr/lib/heartbeat/ipfail

apiauth ipfail gid=root uid=root

deadping 60

#注意:由于修改网络参数需要重启网卡,需要大量的时间,所以在此将所有时间参数设置比较长。

3.3 资源文件(/etc/ha.d/haresource)

[root@node1 ~]# cat /etc/ha.d/haresources

node2 Remac2

3.4 认证文件(/etc/ha.d/authkeys)

同node0

四、测试heartbeat的高可用功能

如何才能得知HA集群是否正常工作,模拟环境测试是个不错的方法,在把Heartbeat高可用性集群放到生产环境中之前,需要做如下几个步骤的测试,从而确定HA是否正常工作:

1 正常关闭和重启主节点的heartbeat

首先在主节点node1上执行"service heartbeat stop"正常关闭主节点的Heartbeat进程,此时通过ifconfig命令查看主节点网卡信息,正常情况下,应该可以看到主节点已经释放了集群的 服务IP地址,同时也释放了挂载的共享磁盘分区,然后查看备份节点,现在备份节点已经接管了集群的服务IP,同时也自动挂载上了共享的磁盘分区。

在这个过程中,使用ping命令对集群服务IP进行测试,可以看到,集群IP一致处于可通状态,并没有任何延时和阻塞现象,也就是说在正常关闭主节点的情况下,主备节点的切换是无缝的,HA对外提供的服务也可以不间断运行。

接着,将主节点heartbeat正常启动,heartbeat启动后,备份节点将自动释放集群服务IP,同时卸载共享磁盘分区,而主节点将再次接管集 群服务IP和挂载共享磁盘分区,其实备份节点释放资源与主节点绑定资源是同步进行的。因而,这个过程也是一个无缝切换。

2 在主节点上拔去网线

拔去主节点连接公共网络的网线后,heartbeat插件ipfail通过ping测试可以立刻检测到网络连接失败,接着自动释放资源,而就在此时,备用节点的ipfail插件也会检测到主节点出现网络故障,在等待主节点释放资源完毕后,备用节点马上接管了集群资源,从而保证了网络服务不间断持续运行。

同理,当主节点网络恢复正常时,由于设置了"auto_failback on"选项,集群资源将自动从备用节点切会主节点。

3 关闭主节点的系统

在主节点拔去电源后,备用节点的heartbeat进程会立刻收到主节点已经shutdown的消息,备用节点就开始进行资源的接管,这种情况其实和主节点网络故障的现象类似。

4 让主节点系统内核崩溃

当主节点系统崩溃后,网络也就失去了响应,那么备用节点的heartbeat进程就会立刻检测到主节点网络故障,然后进行资源切换,但是由于主节点系统内 核崩溃,导致自身不能卸载所占有的资源,例如共享磁盘分区、集群服务IP等,那么此时如果没有类似Stonith设备的话,就会出现资源争用的情况,但是 如果有Stonith备,Stonith设备会首先将故障的主节点电源关闭或者重启此节点等操作,这样就让主节点释放了集群资源,当Stonith设备 完成所有操作时,备份节点才拿到接管主节点资源的所有权,从而接管主节点的资源。

看完上述内容,你们掌握heartbeat中怎么自动切换网络参数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

节点 资源 网络 集群 服务 文件 参数 备份 脚本 配置 地址 系统 切换 故障 认证 方式 进程 备用 运行 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网科技集团 互联网与科技发展 互联网中国科技 关于新基建和互联网科技 互联网科技革命 丰台科技园 互联网 电子科技大学互联网 科技互联网公司logo 广西互联网科技公司 上游互联网科技 互联网科技素材视频竖屏 现代科技和互联网有关系吗 互联网教育科技公司vipkid 世界互联网科技公司市值排名 保险科技服务互联网营销体系 互联网领先科技宣传片 九思连强互联网电子科技有限公司 北京品多多互联网科技有限公司 科技互联网专业务虚会材料 株洲百竞科技的互联网营销顾问 互联网科技产业 网络科技有限互联网 互联网金融与金融科技 奇酷互联网科技公司 太原新华互联网科技学校怎么样 卫星互联网科技股票 昭通云南众福互联网科技有限公司 常德市电业局互联网科技部 南山科技园互联网公司有哪些 西安小鹰速贷互联网科技有限公司
0