heartbeat消息类型:

心跳消息为约150字节的数据包,可为单薄,广播,多播的方式,控制心跳频率及出现故障要等待多久进行故障切换

集群转换消息

ip-request和ip-request-resp

当主服务器恢复在线状态时,通过ip-request消息要求备机释放主服务器失败时备服务器取得的资源,然后备份服务器关闭服务释放主服务器失败时取得的资源及服务

备服务器释放主服务器失败时取得的资源及服务后,就会通过ip-request-resp消息通知主服务器它不在拥有该资源及服务,主服务器收到来自备节点的ip-request-resp消息通知后,启动失败时释放的资源及服务,并开始提供正常的访问服务!

重传请求

rexmit-request控制重传心跳请求!

以上的心跳控制消息使用UDP协议发送到/etc/ha.d/ha.cf文件制定的任意端口,或制定的多播地址,如果使用默认为694

心跳消息的查看:借鉴http://blog.chinaunix.net/uid-7921481-id-1617030.html

heartbeat中,可以使用命令cl_status来查询集群心跳的相关信息。

显示节点server-1所使用的心跳:

[root@server-1 bin]# ./cl_status listhblinks server-1

eth1

eth0

显示节点server-1的eth0心跳状态:

[root@server-1 bin]# ./cl_status hblinkstatus server-1 eth0

up

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

char*

on_status_of_hblinks(char* argv[], int argc)

{

const char * intf;

const char * if_status;

const char* name = NULL;

char* ret = cl_strdup(MSG_OK);

if (hb->llc_ops->init_nodewalk(hb) != HA_OK) {

mgmt_log(LOG_ERR, "Cannot start node walk");

mgmt_log(LOG_ERR, "REASON: %s", hb->llc_ops->errmsg(hb));

cl_free(ret);

return cl_strdup(MSG_FAIL);

}

while((name = hb->llc_ops->nextnode(hb))!= NULL) {

if (strcmp(hb->llc_ops->node_type(hb,name), "ping") == 0)

continue;

if (strcmp(get_localnodeinfo(), name) == 0)

continue;

if (hb->llc_ops->init_ifwalk(hb, name) != HA_OK) {

cl_log(LOG_ERR, "Cannot start heartbeat

link interface walk.");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot start

heartbeat link interface walk");

}

while ((intf = hb->llc_ops->nextif(hb))) {

if_status = hb->llc_ops->if_status(hb, name, intf);

if (if_status == NULL) { /* Should be error ? */

cl_log(LOG_ERR, "Cannot get heartbeat

link status");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot get

heartbeat link status");

}

if ( STRNCMP_CONST(if_status, "dead") == 0 ) {

return cl_strdup(MSG_OK"\nhas_dead");

}

}

if (hb->llc_ops->end_ifwalk(hb) != HA_OK) {

cl_log(LOG_ERR, "Cannot end heartbeat

link interface walk");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot end

heartbeat link interface walk");

}

}

if (hb->llc_ops->end_nodewalk(hb) != HA_OK) {

mgmt_log(LOG_ERR, "Cannot end node walk");

mgmt_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

cl_free(ret);

return cl_strdup(MSG_FAIL);

}

return cl_strdup(MSG_OK"\ngood");

}

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

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

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

ok

has_dead

除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

本文作者:www.linuxea.com for Mark

文章链接:http://www.linuxea.com/942.html (转载请注明本文出处和本章链接)

linux消息类型,heartbeat消息类型相关推荐

  1. Android 手机卫士--解析json与消息机制发送不同类型消息

    本文地址:http://www.cnblogs.com/wuyudong/p/5900800.html,转载请注明源地址. 1.解析json数据 解析json的代码很简单 JSONObject jso ...

  2. sip消息类型和消息代码详解-转

    在学习asterisk的时候,经常遇到一些远程服务器传回的代码,这些代码都有很重要的信息,让我们了解到对方的sip是如何响应我们这边的sip消息的,于是网上找到了这些sip消息类型和消息代码,自己收藏 ...

  3. 运用String.format格式化方法和消息枚举类型创建消息模板

    package com.han.StringFormat;import java.util.Date;/*** 运用String.format格式化方法和消息枚举类型创建消息模板* * @author ...

  4. [ROS] 发布nav_msgs::Path类型的消息,RVIZ成功订阅却不显示的问题

    最近想要发布一个path类型的消息,在RVIZ上一直显示不出来,也没有报错.在详细查看了rostopic echo出来的数据以后发现了问题. 问题描述: 发布nav_msgs::Path类型的一条pa ...

  5. RocketMQ 消息结构和消息类型

    发送消息的一方称为生产者,负责生产消息,一般由业务系统负责生产消息.一个消息生产者会把业务应用系统里产生的消息发送到 broker 服务器.RocketMQ 提供多种发送方式,同步发送.异步发送.顺序 ...

  6. 【RocketMQ】玩转各种类型的消息

    顺序消息 消息有序指的是可以按照消息的发送顺序来消费(FIFO).RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序. 顺序消费的原理解析,在默认的情况下消息发送会采取Round R ...

  7. linux进程间通信:POSIX 消息队列

    文章目录 基本介绍 相关编程接口 编程实例 消息队列通信实例 消息队列属性设置实例 基本介绍 关于消息队列的基本介绍,前面在学习system V的消息队列时已经有过了解,linux进程间通信:syst ...

  8. Linux进程间通信(管道、消息队列、共享内存、信号、信号量)

    目录 Linux进程间通信概述 1.管道 无名管道(pipe) 有名管道(fifo) 2.消息队列(msg) 消息队列的通信原理 消息队列相关api 消息队列收发数据 键值生成 消息队列移除 3.共享 ...

  9. linux c之通过消息队列实现进程通信

    1.消息队列的介绍 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法.  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构.我们可以通过发送消息来避免命名管道的 ...

最新文章

  1. 【MySQL】如何让数据库查询区分大小写
  2. 设置DVWA出现Could not connect to the MySQL service. Please check the config的解决方法,默认登录账号
  3. sql-bench mysql_MySQL性能测试(一)——RHEL 7.1, MySQL 5.6.25, sql-bench
  4. 006-Python迭代器
  5. npm的安装和更新---npm工作笔记002
  6. 【Vegas原创】SQL Server 2005部署备份任务
  7. 页面内部DIV让点击外部DIV 事件不发生(阻止冒泡事件)
  8. centos7 mariadb mysql_【软件安装】CentOS7安装MariaDb(mysql_替代品安装)
  9. Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
  10. SAP GUI 710 PATCH 12 下载地址
  11. 51单片机交通信号灯c语言程序,89C51单片机交通灯程序
  12. 网易云ncm,QQ音乐qmc,mgg,mflac,酷狗kgm解锁转换为flac格式
  13. 如何登录新浪微博html5,新浪微博怎么用登录名登录
  14. 新编密码学——分组密码
  15. 怎样用php做留言表,用PHP制作留言板-PHP教程,PHP应用
  16. 【卫星影像三维重建】完整的卫星立体重建
  17. 函数sum计算机怎么使用方法,sumif函数的使用方法
  18. ThreadLocal的坑--ThreadLocal跨线程传递问题
  19. 《程序员》 -- 《程序员》2013年11月刊: 运维
  20. 机械手臂c语言如何编程,工业机械手臂程序示教图文教程

热门文章

  1. 基类使用私有数据_C++作业之多继承与虚基类
  2. 机器学习第三篇:详解朴素贝叶斯算法
  3. SAP Spartacus 2.1.0 加载homepage的逻辑
  4. SAP Spartacus里unit list tree节点collapse all按钮的实现逻辑
  5. Github提交记录里用户超链接无法显示的问题
  6. SAP Spartacus的产品搜索API
  7. Gradle中的默认任务和任务依赖关系设置
  8. SAP CRM WebClient UI和Hybris Commerce的懒加载机制
  9. 一段在SAP C4C里触发S4HANA outbound Delivery的ABSL代码
  10. SAP Fiori elements第二次重复加载的问题