最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Heartbeat配置

来源:动视网 责编:小OO 时间:2025-10-02 07:28:37
文档

Heartbeat配置

第7章一个Heartbeat配置样本上一章介绍了三个用于控制Heartbeat操作的配置文件:ha.cf,haresources和authkeys。这一章描述如何在两个服务器或两个节点上使用这三个文件,以便Heartbeat能够使用一个高可用配置部署资源。在一个普通的Heartbeat配置中,在主服务器和备用服务器上这些文件都是相同的(如果不相同将会在你的高可用配置中引入错综复杂的问题),本章用一个实验练习来说明Heartbeat如何启动资源,以及出现故障时如何转移到备用服务器上。7.1实验方
推荐度:
导读第7章一个Heartbeat配置样本上一章介绍了三个用于控制Heartbeat操作的配置文件:ha.cf,haresources和authkeys。这一章描述如何在两个服务器或两个节点上使用这三个文件,以便Heartbeat能够使用一个高可用配置部署资源。在一个普通的Heartbeat配置中,在主服务器和备用服务器上这些文件都是相同的(如果不相同将会在你的高可用配置中引入错综复杂的问题),本章用一个实验练习来说明Heartbeat如何启动资源,以及出现故障时如何转移到备用服务器上。7.1实验方
第7章 一个Heartbeat配置样本

上一章介绍了三个用于控制Heartbeat操作的配置文件:ha.cf,haresources和authkeys。这一章描述如何在两个服务器或两个节点上使用这三个文件,以便Heartbeat能够使用一个高可用配置部署资源。

在一个普通的Heartbeat配置中,在主服务器和备用服务器上这些文件都是相同的(如果不相同将会在你的高可用配置中引入错综复杂的问题),本章用一个实验练习来说明Heartbeat如何启动资源,以及出现故障时如何转移到备用服务器上。

7.1 实验方法

原料清单:

两台运行Linux的服务器(每台都配备两个网卡接口并接上网线)

一条交叉线(或标准网线和一个小型集线器)和/或一条串口线

一份Heartbeat软件包(从http://www.linux-ha.org/download下载或从CD-ROM拷贝)

7.2 准备工作

这个实验中,其中一台Linux服务器将作为主服务器而其他的将作为备用服务器,使用交叉线或小型集线器,或串口线进行连接,我们将使用网络连接或串口连接专门传输心跳消息(如图7-1)。

 

图7-1:Heartbeat网络配置

如果你正在使用以太网心跳连接,使用RFC 1918中定义的ip地址分配给主服务器和备用服务器,例如:主服务器分配10.1.1.1,备用服务器分配10.1.1.2,如图7-1所示。(这些ip地址只有主服务器和备用服务器知道)

RFC1918定义了下面的专用ip地址范围:

10.0.0.0到10.255.255.255(10/8)

172.16.0.0到172.31.255.255(172.16/12)

192.168.0.0到192.168.255.255(192.168/16)

在这个实验中,我们将使用10.1.1.1作为主服务器的心跳ip地址,10.1.1.2作为第二个服务器的心跳ip地址。

在继续后面的步骤前,先在这两个系统上互相ping一下,看网络是否连通,也就是说,当你在主服务器上输入ping 10.1.1.2以及在备用服务器上ping 10.1.1.1时你应该收到一个应答。

7.3 步骤1:安装Heartbeat

7.3 步骤1:安装Heartbeat

本书附带的CD-ROM包括了Heartbeat的RPM安装包,你可以使用下面的命令安装这些版本。(也许你想从http://www.linux-ha.org/download下载最新的版本进行安装)

#mount /mnt/cdrom

#rpm -ivh /mnt/cdrom/chapter7/heartbeat-pils-*.rpm[1]

#rpm -ivh /mnt/cdrom/chapter7/hearbeat-stonith-*.rpm

#rpm -ivh /mnt/cdrom/chapter7/hearbeat-*i386.rpm
注意:这个实验中你不需要源(src)RPM文件。

一旦安装好RPM包,你应该拥有一个/etc/ha.d目录,它存放Heartbeat配置文件和脚本,同时,还将有一/usr/share/doc/packages/heartbeat目录,它包括样本配置文件和文档。

万一出错了怎么办

在安装Stonith RPM包的时候,如果你收到加密软件依赖失效的错误消息,输入下面的命令确定是否安装了openssl和openssl-devel软件包:

rpm -q -a | grep openssl
这些软件包仅有Stonith设备使用SSL通讯时需要,但是因为RPM的依赖机制,这个软件包将被标记为所有安装都需要。

如果遇到SNMP依赖失效,输入下面的命令:

rpm -q -a | grep snmp
如果这些命令返回的软件版本号低于Stonith要求的版本号,请升级你的软件包。[2]

如果安装程序还报出依赖失效,甚至你知道你已经安装了最新版本,你可以使用下面的命令进行强制安装而忽略错误信息:

#rpm -ivh --nodeps /usr/local/src/heartbeat/heartbeat-*i386.rpm
如果你收到有关lib.so或GLIBC的错误信息,请查看附录D。

注意:除了使用这个方法安装Heartbeat之外,你还可以使用src.rpm格式的包进行安装,安装命令是:

#rpm --rebuild /usr/local/src/heartbeat/heartbeat-*src.rpm
[1]PILS包自Heartbeat 0.4.9d版本时开始引入,PILS是Heartbeat常用的插件和接口载入系统,普通的Heartbeat操作需要用到它。

[2]注意SNMP包叫做ucd-snmp,但是它已经被重新命名为net-snmp。

7.4 步骤2:配置/etc/ha.d/ha.cf

现在你需要告诉heartbeat守护进程你想让它们使用新的以太网(或交叉网络或串口线)发送和接收心跳数据包。

1、 使用下面的命令查找Heartbeat RPM包安装后释放的ha.cf样本配置文件:

#rpm -qd heartbeat | grep ha.cf
2、 使用下面的命令将样本配置文件复制到适当的位置:

#cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
3、 编辑/etc/ha.d/ha.cf文件,取消下面这些行的注释符号:

#udpport           694

#bcast      eth0          # Linux

注意:旧版本的Heartbeat使用udp代替bcast。

例如:要使用eth1在你的主服务器和备用服务器之间发送心跳消息,第二行应该是下面这样:

bcast  eth1
如果你使用两个物理网络连接传输心跳消息,修改第二行为:

bcast  eth0  eth1
如果你使用一个串口连接和一个以太网连接,取消下面这两行的注释符号:

serial  /dev/ttyS0

baud  19200

4、 同时,取消keepalive,deadtime和initdead这三行的注释符号:

keepalive 2

deadtime 30

initdead 120

initdead行指出heartbeat守护进程首次启动后应该等待120秒后再启动主服务器上的资源,keepalive行指出心跳消息(状态消息,在第6章中有描述)之间应该间隔多少秒,deadtime行指出备用服务器在由于主服务器出故障而没有收到心跳消息时,应该等待多长时间,Heartbeat可能会发送警告消息指出你设置了不正确的值(例如:你可能设置deadtime的值非常接近keepalive的值以确保一个安全配置)。

5、 将下面两行添加到/etc/ha.d/ha.cf文件的末尾:

node primary.mydomain.com

node backup.mydomain.com

或者,使用一行表示两个节点:

node primary.mydomain.com backup.mydomain.com
这里的primary.mydomain.com 和backup.mydomain.com应该替换成你自己的主、备用服务器的名字(uname -n命令返回的值)。

主、备用服务器的主机名通常与它们提供的服务没什么关系,例如:你的主服务器的主机名可能是primary.mydomain.com,虽然它托管了应该web服务器叫做mystuff.mydomain.com。

注意:在Red Hat系统上,主机名是由/etc/sysconfig/network文件中的hostname变量指定的,在系统启动时就指定了主机名。(但是在系统运行时可以使用hostname命令修改主机名)

7.5 步骤3:配置/etc/ha.d/haresources

正常情况下/etc/ha.d/haresources文件将包括主服务拥有的资源的名字,Heartbeat通常使用来自你使用的发行版自带的开关(init)脚本来控制资源,或使用你自己建立的脚本,如第6章展示的iptakeover脚本,现在我们将使用一个非常简单的测试脚本查看它们是如何工作的,按照下面的步骤执行:

1、 在/etc/ha.d/haresource.d目录使用下面的命令建立一个名叫test1的脚本(这个脚本也包括在CD-ROM中的chapter7子目录中):

#vi /etc/ha.d/resource.d/test1
2、 按I键进入插入模式,然后输入下面的内容:

#!/bin/bash

logger $0 called with $1

case "$1" in

start)

# Start commands go here

;;

stop)

# Stop commands go here

;;

status)

# Status commands go here

;;

esac

这里的logger命令用于给syslog守护进程发送消息,然后syslog基于/etc/syslog.conf文件中的配置将接收到消息写入到适当的日志文件中。

注意:这个脚本中的case语句不做任何事情,这里只是为你将来自己开发资源脚本时提供一个样本,以便可以处理start,stop,status参数。

3、 退出并保存你的改变(按ESC键,然后输入:wq)。

4、 使用下面的命令将这个脚本置为可执行:

#chmod 755 /etc/ha.d/resource.d/test
5、 使用下面的命令运行这个脚本:

#/etc/ha.d/resource.d/test start
6、 你应该返回到shell提示符,输入下面的命令查看消息的末尾:

#tail /var/log/messages
/var/log/messages文件的最后一行看起来应该象:

[timestamp] localhost root: /etc/ha.d/resource.d/test called with start
这一行象征着测试资源脚本使用start参数被调用,在脚本内部正确地使用了case语句。

配置haresources文件

你可以使用这个简单的测试脚本查看Heartbeat使用资源做什么,使用下面的命令查找并复制样本haresources文件到合适的位置:

#rpm -qd heartbeat | grep haresources

#cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d

现在编辑/etc/ha.d/haresources(其实现在它只包括了被注释掉的记录),将下面的行添加到文件的末尾:

primary.mydomain.com test
在这个例子中,primary.mydomain.com应该用uname -n返回的值进行替换。

haresources文件告诉Heartbeat程序哪个机器拥有某个资源,资源名实际上是/etc/init.d目录或/etc/ha.d/resource.d目录下的一个脚本。(这个脚本的副本必须同时存在于主服务器和备用服务器上)

Heartbeat使用haresources配置文件决定它首次启动时做些什么,例如:如果你指定httpd脚本(/etc/init.d/httpd)为一个资源,当你在主服务器上启动heartbeat守护进程时,Heartbeat将运行这个脚本并将start命令传递给它,如果你告诉Heartbeat停止(用命令/etc/init.d/heartbeat stop或service heartbeat stop),Heartbeat将运行/etc/init.d/httpd脚本并发送stop命令,因此,如果Heartbeat没有运行,资源守护进程(本例中是httpd)将也不会运行。

如果你使用一个之前存在的开关(init)脚本(来自/etc/init.d目录),确保要系统知道在启动时不启动这个脚本,使用chkconfig --del <脚本名>命令删除。(参考第1章了解chkconfig命令的详细信息)

注意:如果你不是使用的Red Hat或SuSE,你还应该确定在传递status参数给脚本时,应该返回OK,Running或running。参考第6章详细了解使用开关(init)脚本作为Heartbeat资源脚本的信息。

第8章中将涉及到haresources文件控制资源的能力和灵活性的论述。

使用Heartbeat重新启动守护进程

你可以告诉Heartbeat它每次启动时启动一个守护进程,如果该守护进程停止运行时就启动重新启动,要实现这样的功能,在/etc/ha.d/ha.cf中使用下面这样一行:

respawn userid /usr/bin/mydaemon
注意,该守护进程(这个例子中叫做/usr/bin/mydaemon)将不会故障转移到备用服务器,如果你使用这个方法启动一个守护进程,它在Heartbeat运行时将总是一直运行着,因此这个技术可能仅对需要运行在主服务器和备用服务器上的守护进程有用[3]。(第9章描述的ipfail守护进程就是这样一个例子)

对于高可用守护进程正常情况下是从带有respawn选项的init启动的,要从主服务器故障转移到备用服务器(如类似Hylafax的串口通讯程序),你必须使用包括在Heartbeat包中的cl_respawn程序,或的包,如与Heartbeat联合使用的Daemontools(第8章中描述)。

[3]在一个好的高可用配置中,ha.cf,haresources和authkeys文件在主服务器和备用服务器上将是相同的。

7.6 步骤4:配置/etc/ha.d/authkeys

这一章中我将安装安全配置文件/etc/ha.d/authkeys,包括在Heartbeat中的样本配置文件需要修改以保护你的配置文件免受黑客攻击,具体步骤如下:

1、 使用下面的命令定位样本authkeys文件,并将其复制到适当的位置:

#rpm -qd heartbeat | grep authkeys

#cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d

2、 编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号:

auth1

1 sha1 testlab

注意:在这些行里,不要将数字1错误地弄为字母l了,第一行是auth跟数字1,第二行是数字1跟sha,数字1,然后是testlab。

在这个例子中,testlab是数字签名密钥,用于对心跳数据包进行数字签名,使用的是安全哈希算法1(sha1)作为数字签名算法,修改testlab为你创建的密码,并确定在两个系统上都是一样的。

3、 确保authkeys文件只能由root读取:

#chmod 600 /etc/ha.d/authkeys
警告:如果你不能使用chmod命令修改这个文件的安全属性,Heartbeat程序将不能启动,它会在/var/log/messages文件中产生记录,提示你没有正确设置这个文件的安全属性。

7.7 步骤5:在备用服务器上安装Heartbeat

在备用服务器上安装Heartbeat的RPM包的方法与本章中“步骤1:安装Heartbeat”描述的一样,或使用第5章中描述的SystemImager克隆主服务器,然后在主服务器上执行下面的命令复制所有配置文件到备用服务器上:

#scp -r /etc/ha.d backupnode:/etc/ha.d
这里的backupnode【备用节点】是备用服务器的ip地址或主机名(在主服务器上的/etc/hosts中定义的),scp命令是安全复制命令,它使用SSH协议在两个节点之间复制数据,-r选项指定scp复制主服务器上/etc/ha.d目录下的所有文件和所有子目录。

你第一次运行这个命令时,在开始复制前你需要确定是否运行连接,同时,如果你在主服务器上的SSH配置文件中没有插入备用服务器root账号的私钥,在备用服务器上将提示你输入root密码。(参考第4章了解关于SSH协议的详细信息)

7.8 步骤6:设置系统时间

由于Heartbeat不要求主服务器和备用服务器同步系统时间,它们之间可能会相差几分钟,某些高可用服务可能在某种环境下表现异常,因此在两个系统上启动Heartbeat前,你应该手动检查和设置系统时间(使用date命令)。

注意:长远来看,你应该使用NTP软件来同步两个系统的时钟。

7.9 步骤7:启动Heartbeat

在启动Heartbeat守护进程前,先在主服务器和备用服务器上运行下面的ResourceManager测试你设置的配置文件是正确的:

#/usr/lib/heartbeat/ResourceManager listkeys `/bin/uname -n`
这个命令查找/etc/ha.d/haresources文件并从这个文件返回资源(或资源密钥)列表,我们只定义了一个资源就是test资源,因此这个命令的输出只有一行:

test
7.9.1 在主服务器上启动Heartbeat

只要你在主服务器上正确地配置了test资源脚本,启动Heartbeat程序,观察/var/log/messages文件里的记录确定发生了什么。

启动Heartbeat(在主服务器上)的命令可以是:

#/etc/init.d/heartbeat start
或者

#service heartbeat start
然后再使用下面的命令查看系统日志:

#tail /var/log/messages
为了避免每隔几秒重新输入这个命令,使用-f选项告诉tail当/var/log/messages文件有变化就在屏幕上显示新的信息:

#tail -f /var/log/messages
按CTRL-C中断这个命令。

注意:要改变Heartbeat使用其他的日志文件,只要将你的/etc/ha.d/ha.cf文件中下面这一行的注释符号取消掉就可以了。

logfile        /var/log/ha-log
然后你可以使用tail -f /var/log/ha-log命令观察Heartbeat最近都做了些什么,然而,本实验中的例子将总是使用/var/log/messages文件[4]。(这样不改变日志位置的数量)

Heartbeat在它完成启动过程前将等待在/etc/ha.d/ha.cf文件中设置的initdead参数的值那么长时间,因此在Heartbeat启动好前你不得不等待至少2分钟(在这个测试配置文件中initdead被设置为120秒)。

当Heartbeat成功启动后,你应该查看/var/log/messages文件中的下列信息(我已经将每一行前面的时间戳信息移除了以便于阅读):

primary root: test called with status

primary heartbeat[4410]: info: **************************

primary heartbeat[4410]: info: Configuration validated. Starting heartbeat

primary heartbeat[4411]: info: heartbeat: version 

primary heartbeat[2882]: WARN: No Previous generation - starting at 1[5]

primary heartbeat[4411]: info: Heartbeat generation: 1

primary heartbeat[4411]: info: UDP Broadcast heartbeat started on port 694

(694) interface eth1

primary heartbeat[4414]: info: pid 4414 locked in memory.

primary heartbeat[4415]: info: pid 4415 locked in memory.

primary heartbeat[4416]: info: pid 4416 locked in memory.

primary heartbeat[4416]: info: Local status now set to: 'up'

primary heartbeat[4411]: info: pid 4411 locked in memory.

primary heartbeat[4416]: info: Local status now set to: 'active'

primary logger: test called with status

primary last message repeated 2 times

primary heartbeat: info: Acquiring resource group: primary.mydomain.com test

primary heartbeat: info: Running /etc/init.d/test  start

primary logger: test called with start

primary heartbeat[4417]: info: Resource acquisition completed.

primary heartbeat[4416]: info: Link primary.mydomain.com:eth1 up

本章早先创建的test脚本在加了status参数时没有返回单词OK,Running或running,因此Heartbeat认为守护进程没有运行,并使用参数start运行这个脚本以获得test资源(至此它没有真正做过任何事情),可以在先前的输出中看到,注意这一行:

primary.mydomain.com heartbeat[2886]: WARN: node backup.mydomain.com: is dead
Heartbeat警告你备用服务器死掉了,因为备用服务器上的heartbeat守护进程还没有启动。

注意:Heartbeat消息不会包括单词ERROR或CRIT(即使在故障转移过程中也不会出现),如果你从Heartbeat看到了ERROR或CRIT消息,你需要正确第做出解决这个问题的行动。

7.9.2 在备用服务器上启动Heartbeat

一旦主服务器上的Heartbeat运行起来后,登陆到备用服务器,使用下面的命令启动Heartbeat:

# /etc/init.d/heartbeat start
备用服务器上的/var/log/messages应该很快就包括下面的内容了:

backup heartbeat[4650]: info: **************************

backup heartbeat[4650]: info: Configuration validated. Starting heartbeat

backup heartbeat[4651]: info: heartbeat: version 

backup heartbeat[4651]: info: Heartbeat generation: 9

backup heartbeat[4651]: info: UDP Broadcast heartbeat started on port 694

(694) interface eth1

backup heartbeat[4654]: info: pid 4654 locked in memory.

backup heartbeat[4655]: info: pid 4655 locked in memory.

backup heartbeat[4656]: info: pid 4656 locked in memory.

backup heartbeat[4656]: info: Local status now set to: 'up'

backup heartbeat[4651]: info: pid 4651 locked in memory.

backup heartbeat[4656]: info: Link backup.mydomain.com:eth1 up.

backup heartbeat[4656]: info: Node primary.mydomain.com: status active

backup heartbeat: info: Running /etc/ha.d/rc.d/status status

backup heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstat

backup heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstat

backup heartbeat[4656]: info: No local resources [/usr/lib/heartbeat/

ResourceManager listkeys backup.mydomain.com]

backup.mydomain.com heartbeat[4656]: info: Resource acquisition completed

注意这个输出中Heartbeat声明这台机器(备用服务器)在/etc/ha.d/haresources文件中没有任何本地资源,这台机器将充当备用服务器,保持空闲状态,简单地监听来自主服务器的心跳,直到服务器失效,Heartbeat不需要运行test脚本(/etc/ha.d/resource.d/test), Resource acquisition completed消息有点容易使人误解,因为Heartbeat还没有获得资源。

注意:所有在haresources中引用的资源脚本文件都必须存在,并且在Heartbeat启动前有执行它们的许可[6]。

7.9.3 检查主服务器上日志文件

现在,备用服务器启动并处于运行之中,主服务器上的Heartbeat应该被备用服务器检测心跳,在/var/log/messages文件的末尾你应该看到下面的内容:

primary heartbeat[2886]: info: Heartbeat restart on node backup.mydomain.com

primary heartbeat[2886]: info: Link backup.mydomain.com:eth2 up.

primary heartbeat[2886]: info: Node backup.mydomain.com: status up

primary heartbeat: info: Running /etc/ha.d/rc.d/status status

primary heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstat

primary heartbeat[2886]: info: Node backup.mydomain.com: status active

primary heartbeat: info: Running /etc/ha.d/rc.d/status status

如果主服务器没有自动认出备用服务器正在运行,检查并确定这两台机器都处于同一个网络之中,它们有相同的广播地址,没有防火墙规则过滤掉数据包。(在两个系统上使用ifconfig命令并对比bcast数字,两个系统上的数字应该相同),如果心跳广播抵达了这两个节点,你也可以使用tcpdump命令:

#tcpdump -i all -n -p udp port 694
这个命令应从主服务器或备用服务器该捕获并显示心跳广播数据包。

[4]本章的实验使用这个方法以便你可以使用单个命令就能从注意脚本中观察消息(tail -f /var/log/messages)。

[5]Heartbeat“代”号,Heartbeat每次启动该号码自动增加,如果Heartbeat注意到它的父服务器修改了代号,依据情况它能做出正确的反应。(例如:如果Heartbeat认为某个节点死掉了,然后接收到了来自相同节点的心跳,它将查看代号,如果代号没有增加,Heartbeat将认为处于隔离状态,并强制重启本地服务)

[6]正常情况下,脚本文件属于用户root,它们有权限位,可以使用chmod 755 <脚本名>进行配置。

7.10 停止和启动Heartbeat

现在是实践在主服务器和备用服务器上启动和停止Heartbeat查看会发生什么的好时机。

在主服务器上停掉Heartbeat,可以使用命令:

#/etc/init.d/heartbeat stop
或者

#service heartbeat stop
你应该看到备用服务器宣布主服务器已经失效了,然后它将加start参数运行/etc/ha.d/resource.d/test脚本,备用服务器上的/var/log/messages文件看起来象:

backup.mydomain.com heartbeat[5725]: WARN: node primary.mydomain.com: is dead

backup.mydomain.com heartbeat[5725]: info: Link primary.mydomain.com:eth1

dead.

backup.mydomain.com heartbeat: info: Running /etc/ha.d/rc.d/status status

backup.mydomain.com heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstat

backup.mydomain.com heartbeat: info: Taking over resource group test

*** /etc/ha.d/resource.d/test called with status

backup.mydomain.com heartbeat: info: Acquiring resource group:

primary.mydomain.

com test

backup.mydomain.com heartbeat: info: Running /etc/ha.d/resource.d/test start

*** /etc/ha.d/resource.d/test called with start

backup.mydomain.com heartbeat: info: mach_down takeover complete

/etc/ha.d/resource.d/test资源或脚本首先用status参数调用,然后用start参数完成故障转移。

一旦完成,尝试再次启动主服务器上的Heartbeat,并观察发生了什么,备用服务器上的test脚本应该调用stop参数,主服务器上应该调用start参数。[7]

一旦你执行了这些测试,你可能还想测试其他的启动一个故障转移的方法(如拔出主服务器的电源或网络连接)。

注意:如果心跳数据包继续抵达备用服务器将不会发生故障转移,因此,如果你在/etc/ha.d/ha.cf文件中为心跳指定了两条路径(如一条没有moden的串口线和一条交叉网线),拔出其中一条物理路径将不会引发故障转移,只有两条物理路径都不通时才会由备用服务器启动故障转移。

[7]假设你已经启用了auto_failback,它将在第9章中论述。

7.11 监视资源

Heartbeat目前不监视它启动的资源,查看它们是否正在运行,健康状态如何,以及客户端计算机是否能够抵达,要监视这些资源,你需要使用一个的软件包,叫做Mon(第17章中会详细讨论)。

一些系统管理员将Heartbeat放在它们的生产网络中,使用单个网络传输心跳数据包,客户端计算机也使用这个网络访问资源,听起来好像是个好主意,因为主计算机的连接失效意味着客户端计算机不能访问资源,故障转移到备用服务器可能恢复对资源的访问,然而,这种故障转移可能是不需要的(如果问题出在网络而不是主服务器),它可能不会产生任何的改进,或者,情况更糟糕,它可能导致一个隔离状态。

例如:如果资源共享一块SCSI磁盘,如果与备用服务器之间的生产网线断开,将引发一个隔离状态,意味着这两个服务器不能正确判断谁有独占写入共享磁盘的权限,可能破坏掉共享分区上的数据,按照高可用设计原则,如果主服务器不再健康,Heartbeat应该只故障转移到备用服务器,在生产网络中仅使用一条路径是一个坏的实践,应该避免。

注意:正常情况下,使用Heartbeat软件包的唯一理由是确保独占访问运行在单个计算机上的资源,如果服务同时可以由多台计算机提供(独占访问不是必须的),你应该避免Heartbeat高可用故障转移配置的复杂性。

7.12 本章小结

本章是一个“test”资源脚本说明Heartbeat如何启动一个资源,以及主服务器出现故障时如何转移到备用服务器,我们用了三个配置文件/etc/ha.d/ha.cf,,/etc/ha.d/haresources和 /etc/ha.d/authkeys查看了样本配置,这些配置文件在主服务器和备用服务器上应该总是相同的,避免冲突和Heartbeat错误的行为。

Heartbeat软件包被设计为主服务器不再健康时将所有资源转移到备用服务器,最佳实践指导我们应该为心跳状态消息建立多条物理路径,以避免不必要的故障转移,不要在生产环境中在主服务器和备用服务器之间为心跳消息只使用一条路径。

本章中的例子不包括ip地址作为资源的一部分的配置,因此没有使用ARP欺骗广播,也没有测试客户端计算机连接到服务器上运行的服务。

只要你测试了本章描述的资源故障转移(以及知道资源脚本是如何调用Heartbeat程序的),你就可以在/etc/ha.d/haresources文件中插入ip地址(或第6章中引入的iptakeover脚本),这是第8章要讨论的主题,关于/etc/ha.d/haresources文件更详细的论述。

文档

Heartbeat配置

第7章一个Heartbeat配置样本上一章介绍了三个用于控制Heartbeat操作的配置文件:ha.cf,haresources和authkeys。这一章描述如何在两个服务器或两个节点上使用这三个文件,以便Heartbeat能够使用一个高可用配置部署资源。在一个普通的Heartbeat配置中,在主服务器和备用服务器上这些文件都是相同的(如果不相同将会在你的高可用配置中引入错综复杂的问题),本章用一个实验练习来说明Heartbeat如何启动资源,以及出现故障时如何转移到备用服务器上。7.1实验方
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top