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

2023-10-08 13:50

本文主要是介绍corosync集群心跳配置及mgmt调用修改方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

corosync集群心跳配置及mgmt调用修改方法 (2010-09-27 17:13)
分类: 我的文档



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


这篇关于corosync集群心跳配置及mgmt调用修改方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/165730

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素