当前位置: 首页 > news >正文

什么是Heartbeat

什么是Heartbeat
    Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件。心跳监测服务可以通过网络链路和串口进行,而且支持冗余链路, 它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
二、HeartBeat版本
    Heartbeat 是一个基于Linux开源的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件,其重大的版本变更主要分为三个阶段。
1、Heartbeat v1.x  
    heartbeat v1版时就有了资源管理的概念,而v1版的资源就是heartbeat自带的,叫haresources,这个文件是个配置文件;而这个配置文件接口就叫haresources;
Heartbeat1.x允许集群节点和资源通过/etc/ha.d目录下面的两个文件来配置 
ha.cf:定义集群节点,失效检测和切换时间间隔,集群时间日志机制和节点Fence方法 
haresources: 定义集群资源组,每一行定义可以一起进行失效切换的一个默认的节点和一组资源,资源包括IP地址,文件系统,服务或者应用
2、Heartbeat v2.x
    Heartbeat v2第二版的时候,heartbeat被做了很大的改进,自己可以做为一个独立进程来运行,并而可以通过它接收用户请求,它就叫crm,在运行时它需要在各节点上运行一个叫crmd的进程,这个进程通常要监听在一个套接字上,端口就是5560,所以服务器端叫crmd,而客户端叫crm(可以称为crm shell),是个命令行接口,通过这个命令行接口就可以跟服务器端的crm通信了,heartbeat也有它的图形化界面工具,就叫heartbeat-GUI工具,通过这个界面就可以配置进行。
    Heartbeat 2.0 在基于Heartbeat1.x 基础上配置引入了模块结构的配置方法,集群资源管理器(Cluster Rescource Manager-CRM). 
    CRM模型可以支持最多16个节点,这个模型使用基于XML的集群信息(Cluster Information Base-CIB)配置。 
    Heartbeat 2.x官方最后一个STABLE release 2.x 版本是2.1.4。 
    CIB文件(/var/lib/heartbeat/crm/cib.xml)会在各个节点间自动复制,它定义了下面的对象和动作: 
集群节点 
集群资源,包括属性,优先级,组和依赖性 
日志,监控,仲裁和fence标准 
当服务失败或者其中设定的标准满足时,需要执行的动作
3、Heartbeat v3.x
    在v3版本后,整个heartbeat项目进行了功能拆分,分为不同的子项目来分别进行开发。但是HA实现原理与Heartbeat2.x基本相同,配置也基本一致。在v3版本后,被拆分为heartbeat、pacemaker(心脏起博器)、cluster-glue(集群的贴合器),架构分离开来了,可以结合其它的组件工作。
Heartbeat:将原来的消息通信层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信;
Cluster Glue:相当于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH。
Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。
Pacemaker: 也就是Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。
    Heartbeat 3官方正式发布的首个版本是3.0.2。原来之前的CRM管理由pacemaker来替代,底层message layer依旧可以使用heartbeat v3也可以使用corosync等。 其具体细节本文不做介绍,可单独参考clusterlabs.org。
    pacemaker是个资源管理器,不是提供心跳信息的,因为它似乎是一个普遍的误解,也是值得的。pacemaker是一个延续的CRM(亦称Heartbeat V2资源管理器),最初是为心跳,但已经成为独立的项目。









本文转自 jin626889 51CTO博客,原文链接:http://blog.51cto.com/zuoshou/1752277,如需转载请自行联系原作者

相关文章:

  • hdu 4027 Can you answer these queries?
  • Windows数据类型探幽——千回百转你是谁?(1)
  • 数据库连接错误: The provider did not return a ProviderManifestToken string.
  • C#编写的winform程序打包方法
  • 2017.11.14 小组第二次例会
  • 032 文本框中的时间格式
  • hdu 4012 Paint on a Wall
  • Android开发者指南(11) —— Optimizing Apps for Android 3.0
  • C#获取当前路径的7种方法
  • android116 轮播 viewPager实现
  • 参加虚拟化达人训练营的体会
  • 转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法
  • django专题—安装、创建项目、添加应用
  • 自定义的asp.net翻页控件
  • python 数学运算符
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [case10]使用RSQL实现端到端的动态查询
  • Angular 响应式表单之下拉框
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • JAVA之继承和多态
  • Python3爬取英雄联盟英雄皮肤大图
  • ReactNativeweexDeviceOne对比
  • 闭包--闭包作用之保存(一)
  • 大数据与云计算学习:数据分析(二)
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 批量截取pdf文件
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 我的业余项目总结
  • 用Canvas画一棵二叉树
  • 最近的计划
  • hi-nginx-1.3.4编译安装
  • ​虚拟化系列介绍(十)
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #{}和${}的区别是什么 -- java面试
  • #define、const、typedef的差别
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3)选择元素——(17)练习(Exercises)
  • (4)Elastix图像配准:3D图像
  • (function(){})()的分步解析
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (离散数学)逻辑连接词
  • (一)为什么要选择C++
  • .NET BackgroundWorker
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET程序员迈向卓越的必由之路
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @AutoConfigurationPackage的使用
  • @TableId注解详细介绍 mybaits 实体类主键注解