1. 简介

Pacemaker是一个集群资源管理者。他用资源级别的监测和恢复来保证集群服务(aka.资源)的最大可用性。它可以用你所擅长的基础组件(Corosync或者是Heartbeat)来实现通信和关系管理。​

2. 特性

Pacemaker包含以下的关键特性:

  1. 监测并恢复节点和服务级别的故障​
  2. 存储无关,并不需要共享存储​
  3. 资源无关,任何能用脚本控制的资源都可以作为服务来管理​
  4. 支持使用STONITH来保证数据一致性。​
  5. 支持大型或者小型的集群​
  6. 支持quorate(法定人数) 或 resource(资源) 驱动的集群​
  7. 支持几乎所有的冗余配置,包括Active/Active, Active/Passive, N+1, N+M, N-to-1 and N-to-N
  8. 自动同步各个节点的配置文件​
  9. 可以设定集群范围内的ordering, colocation , anti-colocation约束
  10. 支持更多高级服务类型:支持需要在多个节点运行的服务​,支持需要多种模式的服务。(比如 主/从,主/备)
  11. 统一的,脚本化的,cluster shell

3. 架构

1) 集群组成

一个HA集群的高层架构由三个部分组成 :

  • Messaging & Membership部分是基础核心,负责消息传递以及集群中的成员关系管理;
  • CRM部分是集群的大脑,负责对集群(节点的加入或退出)和资源(失效监测)的各种事件做出反应和决策;
  • LRM及RS是直接和服务相关的底层组件,CRM调用LRM来管理资源,而LRM调用RS来和具体的服务打交道。

2) 支持的集群架构

由Pacemaker的介绍我们知道Pacemaker支持使用Corosync(即Openais)或者是Heartbeat来实现通信和关系管理。

Pacemaker&Openais

Pacemaker&Heartbeat

当与Corosync集成时,Pacemaker也支持常见的开源集群文件系统,根据来着集群文件系统社区的最新标准,他们用一个通用的分布式锁控制器,它靠Corosync通信并且用Pacemaker管理成员关系(哪些节点是开启或关闭的)和隔离服务。 尽管Pacemaker也支持Heartbeat,但是文件系统也要用基层软件来通信和维护节点关系,Corosync看来是他们的标准,技术上来说,让它们支持Heartbeat也是可能的,但是看起来他们没多大兴趣 。

4. 内部组件

  • lrmd(local resource manager demaon):本地资源管理守护进程(非集群感知守护进程),提供一个统一的接口去支持不同的资源类型,直接与Resource agents(脚本)交互.
  • ccm(consensus cluster membership):CCM的最主要工作就是管理集群中各个节点的成员以及各成员之间的关系。他让集群中各个节点有效的组织称一个整体,保持着稳定的连接。
  • heartbeat:心跳消息层(可以被OpenAIS替代),heartbeat模块所担当的只是一个通信工具,而CCM是通过这个通信工具来将各个成员连接到一起成为一个整体。
  • openais:指OpenAIS的消息和成员层。

Pacemaker 自己由以下4 个关键组件组成:

  • pengine(PE or Policy EnginePE 或者策略引擎):主要负责将CRM发过来的一些信息按照配置文件中的各种设置(基于目前的状态和配置)计算集群的下一个状态。产生一个包括一系列行动和依赖关系的过渡图。
  • stonithd(Shoot-The-Other-Node-In-The-Head ):通常用远程电源开关来充当。在 Pacemaker 中,STONITH设备被当成资源(并且是在CIB中配置)从而轻松地监控,然而Stonithd会注意理解STONITH拓扑,比如它的客户端请求隔离一个节点,它会重启那个机器。
  • crmd(Cluster Resource Management daemon 集群资源管理守护进程):主要作为pengine和lrm的消息代理,它同时也得选举一个leader去协调管理集群的活动(包括集群资源的停止和启动)
  • cib(Cluster Information Base 集群信息基础):CIB在系统中充当的是当前集群中各资源原始配置以及之后动态变化了的状态,统计信息收集分发中心,是一个不断更新的信息库(包含所有群集选项,节点,资源以及他们的相互关系和当前状态的定义)。当他收集到任何资源的变化,以及节点统计信息的变化后,都会集成整合到一起组成当前集群最新的信息,并分发到集群各个节点。

5. 应用

由Pacemaker的特性我们知道Pacemaker对环境的要求不高,支持几乎所有的冗余配置,包括Active/Active, Active/Passive ,N+1, N+M, N-to-1 and N-to-N ,以下是常见的几种配置例子。

使用Pacemaker和DRBD的双节点主备方案作为一种经济的解决方案被很多高可用环境所采用。

支持多个节点,允许多个Active/Passive集群共享一个共同的备份节点, Pacemaker可以大幅降低硬件成本。

共享存储时,每个节点都可以被用于故障切换。Pacemaker甚至可以运行服务的多个副本来展开工作量。

Pacemaker1.2在简化分站点集群的搭建方面有了进一步的增强。

Pacemaker 介绍的更多相关文章

  1. Pacemaker详解

    一.前言 云计算与集群系统密不可分,作为分布式计算和集群计算的集大成者,云计算的基础设施必须通过集群进行管理控制,而作为拥有大量资源与节点的集群,必须具备一个强大的集群资源管理器(Cluster sy ...

  2. Hadoop&Hbase 双机热备--Pacemaker&DRBD部署

    相关文章   DRBD的介绍请参考http://blog.csdn.net/rzhzhz/article/details/7103772   DRBD的部署请参考http://blog.csdn.ne ...

  3. FW 构建OpenStack的高可用性(HA,High Availability)

    原文地址:http://blog.csdn.net/hilyoo/article/details/7704280 1.CAP理论 1) CAP 理论给出了3个基本要素: 一致性 ( Consisten ...

  4. corosync+pacemaker的crmsh的常用指令介绍

    配置crmsh的yum仓库,此仓库的RPM包有openSUSE提供,将这个network:ha-clustering:Stable.repo文件直接下载到本地并且命名为crmsh.repo wget ...

  5. 理解 OpenStack 高可用(HA) (4): Pacemaker 和 OpenStack Resource Agent (RA)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  6. mysql高可用方案MHA介绍

    mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...

  7. How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On(RHEL Pacemaker中配置STONITH)

    本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...

  8. zabbix 3.2 高可用实现方式二-pacemaker+corosync实现zabbix高可用集群

    一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.c ...

  9. keepalived介绍

    keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但是它 ...

随机推荐

  1. Problem B. Market(market.c/cpp/pas)

    Problem B. Market(market.c/cpp/pas)Time limit: 1 secondsMemory limit: 128 megabytes在比特镇一共有 n 家商店,编号依 ...

  2. Jmeter的log输出控制

    Jmeter的log输出控制(jmeter.log) log_level.jmeter=ERROR log_level.jmeter.junit=DEBUG 在jmeter.properties中,修 ...

  3. 1.struts 防止表单重复提交 2. 拦截器

    1. 使用struts 防止表单提交 时, form 表单必须使用struts标签库编写,如<s:form/> 等,而不是html标签 2. 拦截器是struts2的核心.  interc ...

  4. 记录pytorch的几个问题

    1.Variable里面的creator没有,网上博客上面说有,奇怪??

  5. part1:10-TFTP与NFS服务器配置

    1.交叉开发 嵌入式系统开发多采用交叉开发模式,所谓嵌入式交叉开发就是指在宿主机上进行程序的编写,然后通过交叉编译生成目标机平台可以运行的二进制代码,最后再下载到目标平台上的特定位置运行.产生嵌入式软 ...

  6. Nginx的使用(反向代理,负载均衡)

    在我目前的工作内容中,接触到Nginx的用处无外乎两点: 1. 反向代理,解决前端跨域的问题 工作内容有门户的概念,就是将各个子系统集成到门户里,在门户里面访问,这样就很容易造成跨域的问题 那么解决的 ...

  7. android 网站上下的 adt 不能显示没有安装的

    问题描述 使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository ...

  8. 判定map中是否存在某元素

    判断某key是否存在可以使用map的count方法来间接判定 count接受一个参数key值,返回map中key值为给定值的元素总数 map<int, string> i_to_s_map ...

  9. 2018.09.09 bzoj4403: 序列统计(Lucas定理)

    传送门 感觉单调不降序列什么的不好做啊. 于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列. 问题就变成了: 求出构造长度分别为1 ~ n且每个元素的值在l+1 ~ r+n之间的 ...

  10. tp5自动生成目录

    1.// 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thi ...