Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1149155
  • 博文数量: 309
  • 博客积分: 6093
  • 博客等级: 准将
  • 技术积分: 3038
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-03 17:14
个人简介

linux学习记录

文章分类

全部博文(309)

文章存档

2014年(2)

2012年(37)

2011年(41)

2010年(87)

2009年(54)

2008年(88)

分类:

2010-09-27 17:13:47

corosync集群心跳配置及mgmt调用修改方法

corosync集群心跳可在文件/etc/corosync/corosync.conf中的interface字段进行配置,如下配置了两路心跳:

totem {

version: 2

secauth: off

threads: 0

rrp_mode: passive

interface {

ringnumber: 0

bindnetaddr: 172.16.70.0

broadcast: yes

mcastport: 5546

}

interface {

ringnumber: 1

bindnetaddr: 192.168.127.0

broadcast: yes

mcastport: 5547

}

}

interface字段主要有以下几个参数:

  1. ringnumberinterfacering number,用于区分不同的心跳,必须从0开始
  2. bindnetaddr:绑定的网络地址,经常以0结尾,也可以使用IPV6地址。例如,如果本地心跳为192.168.5.92,子网255.255.255.0,则设置bindnetaddr192.168.5.0;如果本地心跳为192.168.5.92,子网255.255.255.192,则设置bindnetaddr192.168.5.64
  3. mcastportUDP端口号
  4. broadcast:该字段可选,设为YES时表示将使用广播地址,如果设为该选项,则可以不设mcastaddr字段
  5. mcastaddr:多播地址,不允许使用224.x.x.x之类的地址。也可以使用IPV6地址。

corosync-cfgtool为显示及配置corosync的工具,与心跳有关的使用如下:

显示该节点的当前心跳状态

[root@server-1 BUILD]# corosync-cfgtool -s

Printing ring status.

Local node ID -1085927252

RING ID 0

id = 172.16.70.191

status = ring 0 active with no faults

RING ID 1

id = 192.168.127.191

status = ring 1 active with no faults

心跳出错后重新配置集群中的心跳状态,即重新启动失败的心跳

[root@server-1 BUILD]# corosync-cfgtool -r

为了在mgmt下可以检查心跳状态,在mgmt/daemon/mgmt_crm.c中添加如下函数:

char*

on_status_of_hblinks(char* argv[], int argc)

{

char* ret = strdup(MSG_OK);

cs_error_t result;

corosync_cfg_handle_t handle;

unsigned int interface_count;

char **interface_names;

char **interface_status;

unsigned int i;

unsigned int nodeid;

//初始化;

result = corosync_cfg_initialize (&handle, NULL);

if (result != CS_OK) {

mgmt_log(LOG_WARNING, "Could not initialize

corosync configuration API error %d\n", result);

exit (1);

}

//取当前node id

result = corosync_cfg_local_get(handle, &nodeid);

if (result != CS_OK) {

mgmt_log(LOG_WARNING, "Could not get the

local node id, the error is: %d\n", result);

}

//取心跳情况,包括名称、状态等;

result = corosync_cfg_ring_status_get (handle,

&interface_names,

&interface_status,

&interface_count);

//返回结果;

if (result != CS_OK) {

mgmt_log(LOG_WARNING, "Could not get the

ring status, the error is: %d\n", result);

} else {

for (i = 0; i < interface_count; i++) {

ret = mgmt_msg_append(ret, interface_names[i]);

ret = mgmt_msg_append(ret, interface_status[i]);

}

}

(void)corosync_cfg_finalize (handle);

return ret;

}

之后即可在mgmt中使用status_hblinks命令即可查询心跳的状态,如下所示:

[root@server-1 heartbeat-gui]# ./mgmtcmd.py status_hblinks

---------------------------

o

172.16.70.191

ring 0 active with no faults

192.168.127.191

ring 1 active with no faults

阅读(4320) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~