




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 一个Heartbeat配置样本上一章介绍了三个用于控制Heartbeat操作的配置文件:ha.cf,haresources和authkeys。这一章描述如何在两个服务器或两个节点上使用这三个文件,以便Heartbeat能够使用一个高可用配置部署资源。在一个普通的Heartbeat配置中,在主服务器和备用服务器上这些文件都是相同的(如果不相同将会在你的高可用配置中引入错综复杂的问题),本章用一个实验练习来说明Heartbeat如何启动资源,以及出现故障时如何转移到备用服务器上。7.1 实验方法原料清单:两台运行Linux的服务器(每台都配备两个网卡接口并接上网线)一条交叉线(或标准网线和一个小型集线器)和/或一条串口线一份Heartbeat软件包(从/download下载或从CD-ROM拷贝)7.2 准备工作这个实验中,其中一台Linux服务器将作为主服务器而其他的将作为备用服务器,使用交叉线或小型集线器,或串口线进行连接,我们将使用网络连接或串口连接专门传输心跳消息(如图7-1)。图7-1:Heartbeat网络配置如果你正在使用以太网心跳连接,使用RFC 1918中定义的ip地址分配给主服务器和备用服务器,例如:主服务器分配,备用服务器分配,如图7-1所示。(这些ip地址只有主服务器和备用服务器知道)RFC1918定义了下面的专用ip地址范围:到55(10/8)到55(172.16/12)到55(192.168/16)在这个实验中,我们将使用作为主服务器的心跳ip地址,作为第二个服务器的心跳ip地址。在继续后面的步骤前,先在这两个系统上互相ping一下,看网络是否连通,也就是说,当你在主服务器上输入ping 以及在备用服务器上ping 时你应该收到一个应答。7.3 步骤1:安装Heartbeat7.3 步骤1:安装Heartbeat本书附带的CD-ROM包括了Heartbeat的RPM安装包,你可以使用下面的命令安装这些版本。(也许你想从/download下载最新的版本进行安装)#mount /mnt/cdrom#rpm -ivh /mnt/cdrom/chapter7/heartbeat-pils-*.rpm1#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.rpm1PILS包自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.cf2、使用下面的命令将样本配置文件复制到适当的位置:#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/ttyS0baud 192004、同时,取消keepalive,deadtime和initdead这三行的注释符号:keepalive 2deadtime 30initdead 120initdead行指出heartbeat守护进程首次启动后应该等待120秒后再启动主服务器上的资源,keepalive行指出心跳消息(状态消息,在第6章中有描述)之间应该间隔多少秒,deadtime行指出备用服务器在由于主服务器出故障而没有收到心跳消息时,应该等待多长时间,Heartbeat可能会发送警告消息指出你设置了不正确的值(例如:你可能设置deadtime的值非常接近keepalive的值以确保一个安全配置)。5、将下面两行添加到/etc/ha.d/ha.cf文件的末尾:node node 或者,使用一行表示两个节点:node 这里的 和应该替换成你自己的主、备用服务器的名字(uname -n命令返回的值)。主、备用服务器的主机名通常与它们提供的服务没什么关系,例如:你的主服务器的主机名可能是,虽然它托管了应该web服务器叫做。注意:在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/test12、按I键进入插入模式,然后输入下面的内容:#!/bin/bashlogger $0 called with $1case $1 instart)# 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/test5、使用下面的命令运行这个脚本:#/etc/ha.d/resource.d/test start6、你应该返回到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(其实现在它只包括了被注释掉的记录),将下面的行添加到文件的末尾: test在这个例子中,应该用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.d2、编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号:auth11 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资源,因此这个命令的输出只有一行:test7.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 statusprimary heartbeat4410: info: *primary heartbeat4410: info: Configuration validated. Starting heartbeatprimary heartbeat4411: info: heartbeat: version primary heartbeat2882: WARN: No Previous generation - starting at 15primary heartbeat4411: info: Heartbeat generation: 1primary heartbeat4411: info: UDP Broadcast heartbeat started on port 694(694) interface eth1primary heartbeat4414: info: pid 4414 locked in memory.primary heartbeat4415: info: pid 4415 locked in memory.primary heartbeat4416: info: pid 4416 locked in memory.primary heartbeat4416: info: Local status now set to: upprimary heartbeat4411: info: pid 4411 locked in memory.primary heartbeat4416: info: Local status now set to: activeprimary logger: test called with statusprimary last message repeated 2 timesprimary heartbeat: info: Acquiring resource group: testprimary heartbeat: info: Running /etc/init.d/test startprimary logger: test called with startprimary heartbeat4417: info: Resource acquisition completed.primary heartbeat4416: info: Link :eth1 up本章早先创建的test脚本在加了status参数时没有返回单词OK,Running或running,因此Heartbeat认为守护进程没有运行,并使用参数start运行这个脚本以获得test资源(至此它没有真正做过任何事情),可以在先前的输出中看到,注意这一行: heartbeat2886: WARN: node : is deadHeartbeat警告你备用服务器死掉了,因为备用服务器上的heartbeat守护进程还没有启动。注意:Heartbeat消息不会包括单词ERROR或CRIT(即使在故障转移过程中也不会出现),如果你从Heartbeat看到了ERROR或CRIT消息,你需要正确第做出解决这个问题的行动。7.9.2 在备用服务器上启动Heartbeat一旦主服务器上的Heartbeat运行起来后,登陆到备用服务器,使用下面的命令启动Heartbeat:# /etc/init.d/heartbeat start备用服务器上的/var/log/messages应该很快就包括下面的内容了:backup heartbeat4650: info: *backup heartbeat4650: info: Configuration validated. Starting heartbeatbackup heartbeat4651: info: heartbeat: version backup heartbeat4651: info: Heartbeat generation: 9backup heartbeat4651: info: UDP Broadcast heartbeat started on port 694(694) interface eth1backup heartbeat4654: info: pid 4654 locked in memory.backup heartbeat4655: info: pid 4655 locked in memory.backup heartbeat4656: info: pid 4656 locked in memory.backup heartbeat4656: info: Local status now set to: upbackup heartbeat4651: info: pid 4651 locked in memory.backup heartbeat4656: info: Link :eth1 up.backup heartbeat4656: info: Node : status activebackup heartbeat: info: Running /etc/ha.d/rc.d/status statusbackup heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstatbackup heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstatbackup heartbeat4656: info: No local resources /usr/lib/heartbeat/ResourceManager listkeys heartbeat4656: 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 heartbeat2886: info: Heartbeat restart on node primary heartbeat2886: info: Link :eth2 up.primary heartbeat2886: info: Node : status upprimary heartbeat: info: Running /etc/ha.d/rc.d/status statusprimary heartbeat: info: Running /etc/ha.d/rc.d/ifstat ifstatprimary heartbeat2886: info: Node : status activeprimary 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)。5Heartbeat“代”号,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文件看起来象: heartbeat5725: WARN: node : is heartbeat5725: info: Link : heartbeat: info: Running /etc/ha.d/rc.d/status heartbeat: info: Running /etc/ha.d/rc.d/ifstat heartbeat: info: Taking over resource group test* /etc/ha.d/resource.d/test called with heartbeat: info: Acquiring resource group: heartbeat: info: Running /etc/ha.d/resource.d/test start* /etc/ha.d/resource.d/test called with heartbeat: info: mach_down takeover complete/etc/ha.d/resource.d/test资源或脚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年桂林市临桂区吾悦幼儿园招聘教师考试笔试试题(含答案)
- 动物骨骼在文物保护与修复中的应用创新创业项目商业计划书
- 物体识别AR购物体验创新创业项目商业计划书
- 动物专用止痒产品创新创业项目商业计划书
- 2025年直播电商主播影响力与直播广告营销策略研究报告
- 2025年工业互联网平台数字水印技术在数据安全治理中的应用与效果评估
- 2025年干细胞治疗神经系统疾病临床应用创新案例解析报告
- 2025年城市河道生态修复项目生态修复效果与生态修复实施
- 2026届内蒙古赤峰市宁城县化学高二上期末综合测试试题含答案
- 民法典物业培训课件
- 2025年吉林省中考语文真题(含答案)
- 2025高级会计师考试试题及答案
- 工地建筑钢板租赁合同范本
- 光传输业务配置课件
- (标准)便利店转让合同协议书带烟证
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- GB∕T 40753-2021 供应链安全管理体系 ISO 28000实施指南
- GA∕T 1577-2019 法庭科学 制式枪弹种类识别规范
- 福州市长乐区农村宅基地及房屋确权登记
评论
0/150
提交评论