Chinaunix首页 | 论坛 | 博客
  • 博客访问: 822087
  • 博文数量: 94
  • 博客积分: 1767
  • 博客等级: 上尉
  • 技术积分: 1168
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 23:16
个人简介

ha

文章分类

全部博文(94)

文章存档

2014年(2)

2013年(17)

2012年(6)

2011年(15)

2010年(23)

2009年(23)

2008年(8)

我的朋友

分类:

2009-04-09 14:18:47

heartbeat 2.x style的配置(使用cib.xml)
2008年07月16日 星期三 22:15
一) 前言:

网上关于heartbeat的文章很多,但大部分是基于1.x style的,

我把我的2.x style的heartbeat 过程发出来,

希望对大家能有一点用,

2.x和1.x最主要的区别在于,

1) 2.x支持CRM管理,资源文件由原来的haresources变为cib.xml,

2) 支持OCF格式的resource agent,

3) 可以对多资源组进行独立监控(这点我不确定在1.x里是否可以,没试过)

4)支持多节点

二)

本文假设原有的heartbeat 已经好且能正常工作,
如和heartbeat不属于本文讨论范围.

我这里以两节点为例:
node1 和node2,
有两个资源作HA,apache和jboss,
其中apachevip :192.168.1.205,
jboss无vip,

1)在ha.cf里面增加
       crm yes
       apiauth cibmon uid=hacluster
       respawn hacluster /usr/local/lib/heartbeat/cibmon -d

2)将haresources资源文件转换成cib.xml,2.x里编译好后自带有转换脚本,很方便.
       假设haresources文件如下,
       node1 192.168.1.205 runhttpd.sh
       node2 runjboss.sh
       每一行表示一个资源组,
       node1,node2表示prefered node,即该资源组优先在该node上运行,
       192.168.1.205与runhttpd.sh一起属于第一个资源组,为提供http服务的vip,
       启动的时候从左到右依次运行脚本,关闭的时候从右到左依次关闭.
       a):转换命令
       /usr/local/lib/heartbeat/haresources2cib.py --stout -c /usr/local/etc/ha.d/ha.cf /usr/local/etc/ha.d/haresources
       b):这一步可选
       清空/usr/local/etc/ha.d/haresources
       echo "" > /usr/local/etc/ha.d/haresources


3)
       修改heartbeat目录权限,可以用以下命令:
       find / -type d -name "heartbeat" -exec chown -R hacluster {} \;
       find / -type d -name "heartbeat" -exec chgrp -R haclient {} \;


4)LSB格式的resource agent script中必须支持status功能
                   所谓的resource agent就是服务的启动脚本,这我这里叫runhttpd.sh,runjboss等,
                   必须能接收start,stop,status,三个参数,如果是OCF格式agent,则必须支持
                   start,stop,monitor三个参数.其中status和monitor参数是用来监控资源的,非常重要.
       例如LSB风格的脚本,运行./runhttpd.sh status时候,
       返回值包含OK或则running则表示资源正常
       返回值包含stopped或者No则表示资源不正常。

       假如是OCF风格的脚本,运行./runhttpd.sh monitor时候,
       返回0表示资源是正常的, 返回7表示资源出现问题.

三) 与1.x相比的区别

与1.x风格相比,功能变化:

1)保留原有所有功能
       如,网络,heartbeat ,机器down了时候均可以切换资源。

2)自动监控资源
       每2分钟检测资源运行情况,如果发现资源不在,则尝试启动资源,
       如果60s后还未启动成功,则资源切换向另节点。时间可以修改。
     
         
        
         

     

       对VIP的监控,每5S监控一次,若vip失效,则尝试重启vip,timeout时间为5s,若5s后启动不成功,则切换向另节点。
     
         
        
         

         
        
           
        

         

     


3)可以对各资源组实现独立监控.
       比如jboss运行在node1上,apache运行在node2上,

4)同时监控系统负载
       可以自动将资源切换到负载低的node上


四) CRM管理程序crm_resource功能示例:

Examples
1)查看所有资源

   crm_resource -L

2)查看资源跑在哪个节点上

   crm_resource -W -r runhttpd.sh_2

   resource runhttpd.sh_2 is running on: server1

   crm_resource -W -r runhttpd.sh_2

   resource runhttpd.sh_2 is NOT running

4)启动/停止资源

   crm_resource -r runhttpd.sh_2 -p target_role -v started
   crm_resource -r runhttpd.sh_2 -p target_role -v stopped

5)查看资源在cib.xml中的定义

   crm_resource -x -r runhttpd.sh_2

6)将资源从当前节点移动向另个节点

   crm_resource -M -r runhttpd.sh_2

7)将资源移向指定节点
crm_resource -M -r runhttpd.sh_2 -H c001n02

允许资源回到正常的节点

   crm_resource -U -r runhttpd.sh_2

NOTE: the values of resource_stickiness and default_resource_stickiness may mean that it doesnt move back. In such cases, you should use -M to move it back and then run this command.

9)将资源从CRM中删除

   crm_resource -D -r runhttpd.sh_2 -t primitive

10)将资源组从CRM中删除

   crm_resource -D -r my_first_group -t group

11)将资源从CRM中禁用

   crm_resource -p is_managed -r runhttpd.sh_2 -t primitive -v off

12)将资源从新从CRM中启用

   crm_resource -p is_managed -r runhttpd.sh_2 -t primitive -v on

13)Resetting a failed resource after having been manually cleaned up

   crm_resource -C -H c001n02 -r runhttpd.sh_2

14)检查所有节点上未在CRM中的资源

   crm_resource -P

15)检查指定节点上未在CRM中的资源

   crm_resource -P -H c001n02

Querying a parameter of a resource. Say the resource is the following:

  

  
  

  



You could query the email address using the following:
   crm_resource -r example_mail -g email

16)设置资源的某个属性

crm_resource -r example_mail -p email -v "myemailaddress@somedomain.com"
阅读(1462) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~