Apr 17

[原]使用hb_gui 配置heartbeat 晴

linuxing , 18:22 , 网络服务 » HA , 评论(1) , 引用(0) , 阅读(29600) , Via 本站原创 | |
    前面几天用了不少的篇幅来讲解heartbeat v1和v2的配置,其中也提到,v2 style格式是基于CRM(集群资源管理)程序的,并提供了GUI(图形化)管理工具,可以用于配置和监控HA集群的状态。不过,由于官方关于这部分的说明不是很多,而且该工具也的确比较难用。主要缺少提示性描述和对输入内容的监控。经过几天的摸索,可以实现一些基本的配置,下面就以一个具体例子来说明。

一、架构
由于也是刚开始摸索这块的内容,暂时只能提供基础的功能实现方式,如果其中有描述错误的地方,请谅解,并告知我解决方法,谢谢!
这个架构是沿用我们之前的测试机器:
引用
hatest3 192.168.228.233
hatest4 192.168.228.234

该集群用于实现httpd服务的高可用:
引用
httpd 192.168.228.235

二、功能与限制
从实际的测试来看,heartbeat除能实现高可用的功能外,与红旗HA软件也是有些差异的。
引用
1、这里模拟的是由两台服务器构建的集群,但heartbeat v2实际可以支持多于2个节点;
2、集群可以是对称或非对称模式,使用不同的模式,应用在集群中启动的顺序、位置都是不相同的;
3、hearbeat集群似乎没有严格区分内网和外网心跳,只要心跳是通的,应用就不会发生切换;
4、为此,似乎没有对网卡监控的必要,只有当DC无法与某个节点取得联系时,才会发生切换;
5、当应用出现问题时,会从本地重启,而不会切换到其他机器上。

当然,heartbeat v2还可以构建更复杂的应用集群,实现更复杂的功能,但这次的演示暂时没有提及这方面的内容。

三、基本配置
这部分的内容,在之前的日子中已经提到,这里就不详细说明了,有需要的朋友可以往前看看。
1、配置主机名和IP
首先,给每个节点的机器都设定好相关的主机名和IP地址,并使用uname -n验证。
引用
# uname -n
hatest3

然后,设定heartbeat的基础配置文件。
以下操作在其中一台服务器上进行,以hatest3为例。
2、配置authkeys
内容如下:
引用
# cd /etc/ha.d/
# cat authkeys
auth 2
1 crc
2 sha1 HI!
3 md5 Hello!
# chmod 600 authkeys

3、配置ha.cf
引用
# more /etc/ha.d/ha.cf
keepalive 2
deadtime 30
initdead 30
udpport 694
bcast   eth0               # 不区分内网和外网IP,若需要建立冗余网络心跳,建议使用bond0设备
auto_failback off
node    hatest3
node    hatest4
ping 192.168.228.153 # 用于测试网络连通性,一般设置为网关
use_logd yes
crm respawn
compression     bz2
compression_threshold 2

4、赋值配置文件
引用
# /usr/lib/heartbeat/ha_propagate
Propagating HA configuration files to node hatest4.
ha.cf                                                                                      100%   11KB  10.7KB/s   00:00
authkeys                                                                                   100%  682     0.7KB/s   00:00
Setting HA startup configuration on node hatest4.

※ 与前面日志不一样的地方是,我们这里不用复制cib.xml文件。(实际上该文件还未创建)
因为,后续当我们配置CIB的时候,CRM会帮我们自动同步该文件的。


5、修改heartbeat启动脚本
这步还是不能缺少,详细请见:这里

6、给hacluster用户创建密码
使用hb_gui访问CRM管理界面前,还需要给hacluster用户创建一下密码:

# passwd hacluster

※ 这个用户仅在当前的节点有效,如果您需要从在其他节点上查看HA集群信息的话,需要分别操作。

7、启动heartbeat服务
当上面的工作都完成后,即可分别在各节点上,启动集群服务:

# service heartbeat start

在正式使用配置工具前,请务必确认您的应用已经在各节点上独立的运行。
请手动激活或停止浮动IP,启动或停止需要托管的应用程序。我这里已经默认您已经进行了类似的测试工作。如果您对这方面的内容不了解,建议您看看之前的日子:[原]安装及配置红旗高可用服务器 HA 5.0 [2] - 配置应用环境

四、使用图形配置工具
1、启动和登录
当您首次启动heartbeat v2服务的时候,会打开5560端口,并自动创建默认的cib.xml文件。
接下来,即可使用hb_gui进行配置,在已经给hacluster用户设定了密码的机器上运行:

# hb_gui

输入正确的用户名和密码后,开始登陆:
点击在新窗口中浏览此图片
这是默认的配置内容:
点击在新窗口中浏览此图片

2、配置资源
heartbeat支持独立的资源,或把资源归类到资源组中。
一般具体到某个应用,都会由多个动作组合来完成一个应用的启动过程,这就可以使用资源组来进行。
默认策略是,资源的执行顺序是,同一个资源组中的资源会从上往下执行的。所以,当我们在创建资源的时候,最好可以按该顺序创建。(当然,以后可以修改)
所以,首先是通过邮件点击“资源”,然后选择“添加新元素”:
点击在新窗口中浏览此图片
创建一个资源组:
点击在新窗口中浏览此图片
输入组的名称为group_httpd,并选择一些必要的参数:
点击在新窗口中浏览此图片

3、配置IP资源
接下来,就是配置组中包含的资源。
按照上面提到的顺序,我们需要先添加IP资源:
点击在新窗口中浏览此图片
(需要给出该资源的名称,属于那个资源组,它的运行参数是什么)
至于,克隆资源和主从资源等,这个以后有机会再仔细描述。
下面就是添加后的结果:
点击在新窗口中浏览此图片

4、配置httpd服务资源
按照同样的方法,添加httpd服务资源。
(如果您的Web内容是需要依赖盘柜的话,可能您需要先添加分区挂载的资源FileSystem,方法是相同的)
这个时候,应该选择添加“普通资源”:
点击在新窗口中浏览此图片
正如前面的日子提到的,资源脚本可以由多种方式编写,常用的是LSB和OCF格式的,这可以在图中看到具体的格式。另外,双击某个资源,也会告诉您该资源的作用:
点击在新窗口中浏览此图片
如果您的资源脚本允许使用参数,并且您又需要添加参数的话,可以在这里一起提供。
否则,直接添加资源即可:
点击在新窗口中浏览此图片

5、给资源添加监控的操作
根据官方的说明,每个资源脚本运行完毕后都需要返回运行结果。例如运行start、stop、restart、status等。这就像我们平时运行下面的命令是一样的:
引用
service httpd status

而heartbeat对返回的结果有默认的动作,例如返回0为成功,返回5为失败等。监控的动作就依赖于脚本返回的结果来判断了。
我们可以在对应资源的“操作”界面上,选择“添加操作”:
点击在新窗口中浏览此图片
其中,需要输入操作的类型为“monitor”,这意味着该操作会定时执行,还可以输入监控的间隔时间等。
特别要注意的是,“Start Delay”时间,由于有些资源的启动完成可能比较慢,并不能在启动开始后马上就开始监控,需要有个延时的时间,该参数就是用于定义该等待值的。
此外,“Disabled”可用于设定该操作是否生效,默认是false,也就是生效的。

6、修改停止失败的操作
通常情况下,heartbeat对返回值的动作是有效的。但有些情况下,例如某台机器上的应用突然发生问题,这是monitor操作会从status动作得到资源监控失败的结果。默认的动作就是stop该资源,然后重新start。
但我们知道,这时候stop该资源的操作是不可能返回0(表示成功,因为资源已经错误退出了),这时heartbeat对执行的操作就会报错退出,导致资源不能重启。
所以,我们有必要修改heartbeat对停止资源失败时的默认操作,改为忽略它。
再添加一个操作:
点击在新窗口中浏览此图片
(请注意操作的名称和On Fail 时的动作)
这是选择“应用”提交后的结果:
点击在新窗口中浏览此图片
(注意,不要搞错监控和操作的资源对象哦)

7、添加限制条件
既然把资源都添加完毕了,那剩下的操作就是需要告诉CRM,该资源(组)应该默认在那个节点上运行。
这可通过添加“限制条件”的“位置”内容来决定。
首先,让IP在hatest3上运行,在“位置”那里添加一个新元素,并选择为“位置”:
点击在新窗口中浏览此图片
然后给其一个名称,并选择需限定的资源组:
点击在新窗口中浏览此图片
添加后结果如下:
点击在新窗口中浏览此图片
选择对应的位置元素后,再右边的图中可以添加对应的表达式,例如该限定的元素运行在uname -n的结果为hatest3的节点上:
点击在新窗口中浏览此图片
在这里,权重和添加的表达式都很重要。
权重:
引用
用于决定不同资源组的执行优先级;
如果是symmetric_cluster(对称集群,可在“节点”-“配置”部分设定)的,资源(组)可以在任意节点上运行,并可以通过指定某个节点的权重为-INFINITY,表示该资源(组)不可能运行在指定的节点上;
如果不是symmetric_cluster的,资源(组)不能在任意节点上运行,除非您给该资源(组)设置权重为INFINITY,或正值的权重。
为正值的权重,根据其大小,决定其执行的优先级,也就是先后顺序。

添加的表达式:
引用
可以支持#uname,对应节点uname -n的值;
#id,对应每个节点唯一的ID值;
#is_dc,也就是集群唯一的DC节点;
然后通过,运算符eq(等于)、ne(不等于)等对输入的值进行匹配。

更多的条件,可通过界面上的布尔运算得出多个条件的最终结果。
※ 限制条件中的顺序、协同是同于控制不同资源组的执行顺序和组合多个资源组的一系列动作的,以后再详细说明。

8、启动资源组
配置完成后,即可启动特定的资源组:
点击在新窗口中浏览此图片
这是启动结果:
点击在新窗口中浏览此图片
(请留意,默认是运行在hatest3上的)
如果您需要调整资源组中的执行顺序,可通过右键点击对应的资源,选择“上移”或“下移”来完成:
点击在新窗口中浏览此图片

9、测试
我们这里做两个简单的测试:
a、停止httpd应用
在hatest3上运行:

# service httpd stop

不用多久,GUI上即会显示资源出错:
点击在新窗口中浏览此图片
同时,后台日志会显示:
引用
crmd[6987]:info: process_lrm_event: LRM operation resource_httpd_app_monitor_15000 (call=6, rc=7) complete
crmd[6987]:info: do_lrm_rsc_op: Performing op=resource_httpd_app_stop_0 key=2:14:0018a200-ca97-4816-98c8-09b0444bdd40)
crmd[6987]:info: process_lrm_event: LRM operation resource_httpd_app_monitor_15000 (call=6, rc=-2) Cancelled
lrmd[6984]:info: rsc:resource_httpd_app: stop
lrmd[7329]:WARN: For LSB init script, no additional parameters are needed.
lrmd[6984]:info: RA output: (resource_httpd_app:stop:stdout) Stopping httpd:
lrmd[6984]:info: RA output: (resource_httpd_app:stop:stdout) [
lrmd[6984]:info: RA output: (resource_httpd_app:stop:stdout) FAILED
lrmd[6984]:info: RA output: (resource_httpd_app:stop:stdout) ]
lrmd[6984]:info: RA output: (resource_httpd_app:stop:stdout)
          
crmd[6987]:ERROR: process_lrm_event: LRM operation resource_httpd_app_stop_0 (call=7, rc=1) Error unknown error
crmd[6987]:info: do_lrm_rsc_op: Performing op=resource_httpd_ip_start_0 key=6:15:0018a200-ca97-4816-98c8-09b0444bdd40)
lrmd[6984]:info: rsc:resource_httpd_ip: start

也就是监控到报错后,在当前节点上会自动重启该应用:
引用
lrmd[6984]: info: rsc:resource_httpd_ip: start
IPaddr[7337][7367]: INFO: Using calculated nic for 192.168.228.235: eth0
IPaddr[7337][7372]: INFO: Using calculated netmask for 192.168.228.235: 255.255.255.0
crmd[6987]: info: process_lrm_event: LRM operation resource_httpd_ip_start_0 (call=8, rc=0) complete
crmd[6987]: info: do_lrm_rsc_op: Performing op=resource_httpd_app_start_0 key=7:15:0018a200-ca97-4816-98c8-09b0444bdd40)
lrmd[6984]: info: rsc:resource_httpd_app: start
lrmd[7388]: WARN: For LSB init script, no additional parameters are needed.
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout) Starting httpd:
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout) httpd: Could not determine the server's fully qualified domain name, using 192.168.228.233 for ServerName

lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout) [
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout) OK
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout)   ]
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout)
lrmd[6984]: info: RA output: (resource_httpd_app:start:stdout)

crmd[6987]: info: process_lrm_event: LRM operation resource_httpd_app_start_0 (call=9, rc=0) complete

可见,重启是对整个资源组进行操作的,并且包括监控的动作。
最后运行结果如下:
点击在新窗口中浏览此图片

b、关闭hatest3
我们可以尝试关闭hatest3,看看资源会否切换到另一个节点hatest4上:
引用
# uname -n
hatest3
# shutdown -h 0

从hatest4上的日子可看到如下的信息:
引用
tengine[6591]: info: te_crm_command: Executing crm-event (16): do_shutdown on hatest3
tengine[6591]: info: te_pseudo_action: Pseudo action 11 fired and confirmed
lrmd[6582]: info: rsc:resource_httpd_ip: start
......
crmd[6585]: info: ccm_event_detail:         CURRENT: hatest4 [nodeid=1, born=3]
crmd[6585]: info: ccm_event_detail:         LOST:    hatest3 [nodeid=0, born=2]
heartbeat[6568]: WARN: node hatest3: is dead
heartbeat[6568]: info: Link hatest3:eth0 dead.

crmd[6585]: notice: crmd_ha_status_callback: Status update: Node hatest3 now has status [dead]
heartbeat[6568]: info: Link hatest3:eth1 dead.

GUI界面如下:
点击在新窗口中浏览此图片
证明切换正常。重新恢复hatest3,资源会根据ha.cf中auto_failback的设置情况,回到或保持在某个节点上。
至此,配置完成。

最终的配置文件:
※ 注意,hb_gui 不单可以用于监控,还可以用于修改集群的配置,所以,请做好安全限定工作。
Tags: ,
yue
2009/10/22 11:26
ha.d/ha.ch中应该加入:
apiauth  mgmtd   uid=root
respawn  root    /usr/lib/heartbeat/mgmtd -v
linuxing 回复于 2009/10/25 17:15
应该是ha.d/ha.cf中吧。但这个在新版本的heartbeat中已经不是必须的,我在第二篇日志中写过:
http://www.linuxfly.org/post/364/
引用:
在旧版本heartbeat上,激活5560端口,提供GUI访问支持,需要加入您说的内容。但新版本heartbeat已经不需要再进行该设置了,只需要打开crm yes或crm respawn即可,而重复的定义会导致启动失败的。
还可以见这里:
http://www.linux-ha.org/UpdateExperience
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]