Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176416
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1116
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-09 09:49
文章分类

全部博文(114)

文章存档

2016年(74)

2015年(40)

我的朋友

分类: 系统运维

2015-12-24 09:44:55

Heartbeat 是一个基于开源的系统。主要包括心跳服务和资源接管两个高可用集群组件。心跳监测服务可以通过网络链路和串口进行,而且支持, 它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

四、Pacemaker集群的分类

1.双机热备(Active/Passive)

    官方说明:许多的情况下,使用Pacemaker和的双节点主/从集群是一个符合成本效益的解决方案。

wKiom1Zk_q3hJC36AAkudeOX0Bg826.png - 2

2.多节点热备(N+1)

    官方说明:支持多少节点,Pacemaker可以显着降低硬件成本通过允许几个主/从群集要结合和共享一个公用备份节点。

wKiom1Zk_mXTQpnQAAlg_sFghuQ369.png - 3

3.多节点共享存储(N-TO-N)

    官方说明:有共享存储时,每个节点可能被用于故障转移。Pacemaker甚至可以运行多个服务。

141329249.png - 4

4.共享存储热备 (Split Site)

    官方说明:Pacemaker 1.2 将包括增强简化设立分站点集群

五、Pacemaker内部结构

wKioL1ZqtKvDye_EAAaw8884RCw016.png - 6

群集组件说明:

  • stonithd:心跳系统。

  • lrmd:本地资源管理守护进程。它提供了一个通用的接口支持的资源类型。直接调用资源代理(脚本)。

  • pengine:政策引擎。根据当前状态和配置集群计算的下一个状态。产生一个过渡图,包含行动和依赖关系的列表。

  • CIB:群集信息库。包含所有群集选项,节点,资源,他们彼此之间的关系和现状的定义。同步更新到所有群集节点。

  • CRMD:集群资源管理守护进程。主要是消息代理的PEngine和LRM,还选举一个领导者(DC)统筹活动(包括启动/停止资源)的集群。

  • OpenAIS:OpenAIS的消息和成员层。

  • Heartbeat:心跳消息层,OpenAIS的一种替代。

  • CCM:共识群集成员,心跳成员层。

wKioL1Zqtk7yfOXkAAC5CEKyK9o811.jpg - 7

功能概述
    CIB使用XML表示集群的集群中的所有资源的配置和当前状态。CIB的内容会被自动在整个集群中同步,使用PEngine计算集群的理想状态,生成指令列表,然后输送到DC(指定协调员)。Pacemaker 集群中所有节点选举的DC节点作为主决策节点。如果当选DC节点宕机,它会在所有的节点上, 迅速建立一个新的DC。DC将PEngine生成的策略,传递给其他节点上的LRMd(本地资源管理守护程序)或CRMD通过集群消息传递基础结构。当集群中有节点宕机,PEngine重新计算的理想策略。在某些情况下,可能有必要关闭节点,以保护共享数据或完整的资源回收。为此,Pacemaker配备了stonithd设备。STONITH可以将其它节点“爆头”,通常是实现与远程电源开关。Pacemaker会将STONITH设备,配置为资源保存在CIB中,使他们可以更容易地监测资源失败或宕机。

六、heartbeat心跳传递

    HeartBeat运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的"心跳"则自动接管主服务器的资源。通常情况下,主、备服务器间的心跳连接是一个独立的,这个连接可以是串行线缆、一个由""实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在。

  • 串行电缆:被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。

  • 以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此连接在主备服务器间同步文件系统,从而减少了从正常通信连接带宽的占用。

    基于冗余的角度考虑,应该在主、备服务器使用两个物理连接传输heartbeat的控制信息;这样可以避免在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的"脑裂"(split-brain)或"partitioned cluster"。在两个节点共享同一个资源的情况下,脑裂会产生相当可怕的后果。

七、Heartbeat控制信息

  • "心跳"信息: (也称为状态信息)仅150 bytes大小的广播、组播或多播数据包。可为以每个节点配置其向其它节点通报"心跳"信息的频率,以及其它节点上的heartbeat进程为了确认主节点出节点出现了运行等错误之前的等待时间。

  • 集群变动事务(transition)信息:ip-request和ip-request-rest是相对较常见的两种集群变动信息,它们在节点间需要进行资源迁移时为不同节点上heartbeat进程间会话传递信息。比如,当修复了主节点并且使其重新"上线"后,主节点会使用ip-request要求备用节点释放其此前从因主节点故障而从主节点那里接管的资源。此时,备用节点则关闭服务并使用ip-request-resp通知主节点其已经不再占用此前接管的资源。主接点收到ip-request-resp后就会重新启动服务。

  • 重传请求:在某集群节点发现其从其它节点接收到的heartbeat控制信息"失序"(heartbeat进程使用序列号来确保数据包在传输过程中没有被丢弃或出现错误)时,会要求对方重新传送此控制信息。 Heartbeat一般每一秒发送一次重传请求,以避免洪泛。

    上面三种控制信息均基于进行传送,可以在/etc/ha.d/ha.cf中指定其使用的端口或者多播地址(使用以太网连接的情况下)。

    此外,除了使用"序列号/确认"机制来确保控制信息的可靠传输外,Heartbeat还会使用MD5或SHA1为每个数据包进行签名以确保传输中的控制信息的安全性。

如果想深入体验LINUX系统的新手,也可以先下载一个方德Linux软件中心试用一下。
免费下载地址:

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