Pacemaker官网:http://clusterlabs.org/wiki/Pacemaker
Pacemaker官方安装文档:http://clusterlabs.org/wiki/Install#Binary_Packages
Drbd与Pacemaker参考:http://www.dbanotes.net/opensource/drbd-pacemaker.html
HA配置实例:http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
CLI帮助文档:http://www.clusterlabs.org/doc/crm_cli.html
关于集群资源配置:http://club.topsage.com/thread-530660-1-1.html 
 
Pacemaker是什么?有什么用?
Pacemaker在其官网一再强调,它不是Heartbeat的一个分支,而是一个独立的开源的集群管理工具(也许正因为此,所以它更喜欢使用OpenAIS作为基础组件,而不是Heartbeat),它使用资源级别的监测和恢复来保证集群服务(即资源)的高可用。在启动的基础组件上,它使用Corosync或Heartbeat来实现通信,以及管理集群关系。
以下引用Pacemaker官网,说明一下Pacemaker的关键特性:
1、监测并恢复节点和服务级别的故障。
2、存储无关,不需要共享存储。(而drbd在里就有了用武之地。)
3、资源无关,任何能用脚本控制的资源都可作为集群服务来管理
还有其它很多重要特性,如:支持多种集群模式;提供统一的,可用脚本控制的cluster shell(CRM CLI)等。
 
除Pacemaker外,还有其它集群管理工具么?
当然有。集群管理工具还有很多,如IBM的xcat,据说功能非常强大。
 
Pacemaker支持哪些集群的高可用?
Pacemaker对集群环境没有特定要求,它支持多种集群模式,而最常用的集群模式为Active/Passive(主备集群)。详细的情况可以参考官方文档http://clusterlabs.org/wiki/Main_Page。
正如官方文档所述,使用Pacemaker和DRBD搭建的由两个节点组成的Active/Passive clusters(主备集群),作为一个经济型高可用方案被广泛的使用。我们的Namenode双机热备即采用此方案。
 
除Pacemaker外,搭建一个两节点HA集群还需要哪些软件?
基本上,搭建一个HA集群,需要这些软件:Pacemaker+Heartbeat/Corosync+DRBD+服务(如Mysql,Apache或Ngnix)。当然,如果后台有专门的存储,DRBD就不需要了。
 
一个HA集群的基本架构是什么样子的?它是怎样工作的?

如上图,一个HA集群的高层架构由三个部分组成,以三色进行标识。Messaging & Membership部分是基础核心,负责消息传递以及集群中的成员关系管理;CRM部分是集群的大脑,负责对集群(节点的加入或退出)和资源(失效监测)的各种事件做出反应和决策;蓝色标识的部分是直接和服务相关的底层组件,CRM调用LRM来管理资源,而LRM调用RS来和具体的服务打交道。
 
从更具体的层次来看,由Pacemaker管理的集群,基本架构如下:

注:上图来自http://my.chinaunix.net/space.php?uid=369&do=blog&id=300808。推荐这篇文章,它对各个组件的介绍非常详细,建议好好阅读一下。感谢作者。
GUI console是一个图形管理界面;Pacemaker充当的是CRM的角色;Heartbeat(Corosync)充当的是Messaging & Membership的角色; Cluster Glue和Resource Agents,对应的是LRM和Resource Scripts,虽然把Glue和Resource Agents归为了同一类,但实际上它们是完全平行的两个部分,参考:http://www.linux-ha.org/wiki/Cluster_Glue。
至于HA的工作流程,可以参考:http://hi.baidu.com/leolance/blog/item/bd8ff9ca54b0731192457eb3.html。
 
Resource Agents是什么?
它是标准化的Cluster Resource接口,Pacemaker通过这个接口对Cluster Resource进行操作。Pacemaker支持三种类型的Resource Agents:LSB,OCF,和Heartbeat
LSB Resource Agents:Linux Standard Base Resource Agents,就是那些/etc/init.d下的脚本。
OCF Resource Agents:Open Cluster Framework,是对LSB Resource Agents的扩展。
Heartbeat Resource Agents:Heartbeat遗留下来的Resource Agents
这些RA的语法跟linux的/etc/init.d/下的普通自启动脚本有点不同,若要配置自己的RA,在配置自己的RA之前,阅读一下参考文档:http://www.linux-ha.org/wiki/Resource_Agents,特别注意LSB标准和OCF标准各自RA的写法。
  
Pacemaker如何安装?
官方安装文档:
RPM包安装:http://clusterlabs.org/wiki/Install#Binary_Packages
源码安装:http://clusterlabs.org/wiki/Install#From_Source
虽然Pacemaker的体系结构比较复杂,但我们不必依次编译各个组件进行安装,有编译好的RPM包供我们选择,如果配置好epel,使用yum方式安装更简单;当然,如果你不嫌麻烦,也可以从源码进行编译安装。
  1. su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm'  
  2. wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo  
  3. yum -y install pacemaker   #yum安装更简单! 
注意:两个节点都要安装!
官方帮助文档中有一个epel(extra packages for Enterprise Linux),也就是上面我们在yum安装pacemaker前配置的东西,它是Fedora发起并维护的一个项目,目的是为了Red Hat Enterprise Linux能够使用Fedora的软件包(因为Fedora的软件仓库比RHEL的要丰富嘛!),所以这个项目的软件仓库有很多是针对RHEL设计的。参考:http://www.shocr.com/epel-rhel-yum-source/
 
Pacemaker如何配置?
这部分包括三部分内容:各节点SSH密钥配置、Corosync配置、Pacemaker配置。
 SSH密钥配置:略
 Corosync配置:
1、创建corosync密钥,为集群节点间的通信提供授权服务:
   创建的密钥文件authkey,属主及属组必须为root,权限必须为0400,然后把该文件发送到HA的所有节点
corosync-keygen   #没有任何参数,默认在/etc/corosync中创建authkey文件
chmod 0400 authkey
scp authkey drbd-b:/etc/corosync
2、编译corosync配置文件:
参考文档:http://www.corosync.org/doku.php?id=faq:configure_openais
                 http://www.clusterlabs.org/wiki/Initial_Configuration 
   cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
   vim corosync.conf
  1. # Please read the openais.conf.5 manual page  
  2. compatibility: whitetank  
  3.    
  4. aisexec {  
  5.         # Run as root - this is necessary to be able to manage resources with Pacemaker  
  6.         user: root  
  7.         group: root  
  8. }  
  9.    
  10. service {  
  11.         # Load the Pacemaker Cluster Resource Manager  
  12.         name: pacemaker  
  13.         ver: 0  
  14.         use_mgmtd: yes  
  15.         use_logd: yes  
  16. }  
  17.    
  18. totem {  
  19.         # Version of current configuration.   
  20.         version: 2  
  21.         # Whether enable encryption or not  
  22.         secauth: off   
  23.         # How many threads to use for encryption/decryption  
  24.         threads: 0  
  25.         # How long before declaring a token lost (ms)  
  26.         token: 5000  
  27.         # How many token retransmits before forming a new configuration  
  28.         token_retransmits_before_loss_const: 10  
  29.         # How long to wait for join messages in the membership protocol (ms)  
  30.         join: 1000  
  31.         # How long to wait for consensus to be achieved before starting a new round of membership configuration (ms)  
  32.         consensus: 2500  
  33.         # Turn off the virtual synchrony filter  
  34.         vsftype: none  
  35.         # Number of messages that may be sent by one processor on receipt of the token  
  36.         max_messages: 20  
  37.         # Stagger sending the node join messages by 1..send_join (ms)  
  38.         send_join: 45  
  39.         # Limit generated nodeids to 31-bits (positive signed integers)  
  40.         clear_node_high_bit: yes  
  41.    
  42.         interface {  
  43.                 ringnumber: 0  
  44.                 bindnetaddr: 192.168.9.0  
  45.                 mcastaddr: 226.94.1.1  
  46.                 mcastport: 5405  
  47.         }  
  48. }  
  49.    
  50. logging {  
  51.         fileline: off  
  52.         to_stderr: no  
  53.         to_logfile: yes  
  54.         to_syslog: yes  
  55.         logfile: /var/log/cluster/corosync.log  
  56.         debug: off  
  57.         timestamp: on  
  58.         logger_subsys {  
  59.                 subsys: AMF  
  60.                 debug: off  
  61.         }  
  62. }  
  63.    
  64. amf {  
  65.         mode: disabled  
  66. }  
 配置完成后,把所有配置文件scp到其它节点,本例为drbd-b(192.168.9.53)
配置文件顶端的那一句Please read the corosync.conf.5 manual page,这类句子提示如何阅读相应的帮助文档,阅读方法为man 5 corosync.conf。参考:http://topic.csdn.net/t/20040815/10/3275623.html
 
chkconfig --level 2345 corosync on
service corosync start
启动失败:Starting Corosync Cluster Engine (corosync): [FAILED]
查看错误日志:less /var/log/message,发现错误:
  1. parse error in config: parse error in config: .  
  2. Corosync Cluster Engine exiting with status 8 at main.c:1397. 
解决:手动创建/var/log/cluster目录
 
启动corosync (两个节点都要启动):
/etc/init.d/corosync start
ssh drbd-b /etc/init.d/corosync start
 
检查集群是否正确启动,以及能否初始化节点:
  1. grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages  
  2. grep TOTEM /var/log/messages 
检查pacemaker状态:
  1. grep pcmk_startup /var/log/messages 
检查是否错误:
  1. grep ERROR: /var/log/messages | grep -v unpack_resources 
发现错误:corosync[3449]:   [pcmk ] ERROR: pcmk_wait_dispatch: Child process mgmtd exited (pid=3461, rc=100)
解决:网上搜索了一下,给出的答案都不靠谱。感觉像是原有软件未卸载干净,于是野蛮地卸载重装,问题解决。
 
检查集群状态:
crm_mon

 
Pacemaker配置:
我们说配置Pacemaker,到底需要配置什么?配置Pacemaker,就是在配置资源,集群中的服务器上运行的任何类型的服务都称之为资源,如web站点,mail服务器,数据库等;但仅仅配置完集群所需要的资源还不够,还要配置一些规则,来指导指导集群按照这些规则正确地运行这些资源,Pacemaker把这些规则称为约束,它提供了三种类型的约束。配置Pacemaker的基本流程就是这么一个样子。
对于资源、资源的种类、配置约束的选项,及常见选项的含义等,这里就不说了。参考:http://club.topsage.com/thread-530660-1-1.html,写的很好,感谢作者!
 
创建资源或配置约束,常用的工具是CRM CLI。这个CLI用起来不那么容易!具体用法可以参考CLI的官方文档,本文开头有链接,强烈建议读一读这个文档。重点要理解CLI的分层设计,每一层级的主要用途,以及每一层级中的主要命令,比如,我们经常在其中创建资源的configure层级,查看RA及其常用选项的的ra层级,启动、停止资源的resource层级等。
对于创建资源和配置约束的大致步骤,示例如下:
  1. crm(live)configure# primitive VIP ocf:heartbeat:IPaddr2 \  
  2. > params ip=192.168.9.200 cidr_netmask=32 \  
  3. > op monitor interval=20s timeout=30s 
上述命令创建一个名为VIP的原始资源,并指定了控制该资源的脚本(或者叫资源代理,RA),配置了该资源的一些选项。创建资源是在configure层级中进行的,primitive命令创建一个原始资源,params命令指定资源的参数,op命令指定常用的操作。
我们重点关注资源代理ocf:heartbeat:IPaddr2:ocf是资源代理(的类别(class),heartbeat是资源代理的provider,最后一个字段IPaddr2是资源代理的名称(type)。
列出集群资源所有可用的classes:
  1. crm(live)ra#classes 
列出由heartbeat提供的遵守OCF标准的所有资源代理:
  1. crm(live)ra#list ocf heartbeat 
查看指定RA的常见选项(创建资源时,会用到这些选项):
  1. crm(live)ra#meat ocf:heartbeat:IPaddr2 
 说明一点,就是用CLI创建资源或配置约束时,网上有些文章使用了某些选项,而官方文档里找不到这些选项,不知道是从哪里来的。
 
Pacemaker与DRBD整合:
在Pacemaker“眼中”,DRBD也是它的一种资源,而且是一种特殊的,有主从之分的资源。整合Pacemaker和DRBD,就是在Pacemaker中配置DRBD资源。
具体的操作,会在下面的实际运用中讲到;可以先参考一下官方文档:http://www.clusterlabs.org/wiki/DRBD_HowTo_1.0
 
对pacemaker的介绍,至此为止。这么些许文字,很难完全理解pacemaker,其实我自己也是懵懵懂懂的,呵呵。。还是要多读几篇文章,对比着看,加深理解。OK,下面就要实际操作了。

转载于:https://blog.51cto.com/share/642571

Namenode双机热备之Pacemaker相关推荐

  1. 双机热备_什么是双机热备?

    说到双机热备也许很多人都不是很了解,但是对于技术管理人员来说这是十分常见的.当业务系统非常重要,不允许出现中断或故障,往往就需要用到双机热备.以添添呼呼叫中心系统为例,我们为了保障客户在使用系统的时候 ...

  2. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  3. linux双机热备方案,Hadoop HDFS系统双机热备方案 PDF

    1. 前言 HDFS包含两种角色:数据节点(datanode)和名字节点(namenode),名字节点只有一个,数据节点最多支持2000个.HDFS可以确保在硬件失效情况下数据存储的可靠性.常见的三种 ...

  4. MFS分布式文件系统2-master双机热备实现高可用

    文章目录 前言 1.mfs1和mfs5做文件系统同步 1.1 将mfs5主机改为master主机 1.2 配置iscsi文件系统并同步元数据 1.2.1 删除moosefs2上的硬盘 1.2.2 配置 ...

  5. 除了双机或多机热备,你还该有其他方法解决集群路由机宕机(双机热备)

    Nginx+keepalived双机热备(主从模式) 负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健 ...

  6. mysql双机热备的实现

    转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 ...

  7. Heartbeat双机热备配置

    Heartbeat双机热备配置 简介 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat ...

  8. 发展是硬道理 高可用从双机热备走向容灾复制集群

    高可用的崛起 提起"高可用"这个词,也许很多人还比较陌生,但是提到"双机热备",大家一定都略知一二了,双机热备是高可用领域中的一项重要技术,从上世纪90年代中期 ...

  9. 浪潮小机装oracle数据库,浪潮ERP系统oracle双机热备安装文档 | 浪潮888博客

    浪潮 操作系统: WIN 2003 SERVER 数 据 库: Ora 9i 软件版本: ps8.5.1(中航) 软件模块: 数据库安装配置 问题描述: oracle双机热备安装 产生原因: orac ...

最新文章

  1. Java进程与线程的区别
  2. redis删除list中指定index的值
  3. Mongodb百亿级数据添加,修改,删除,查询等性能测试【四】
  4. 我眼中的Linux设备树(三 属性)
  5. Mycat:压测Mycat及结果分析
  6. php 表情选择,php imagettftext和特定的表情符号
  7. 自然语言处理与中文分词的难点总结--学习笔记
  8. java圆角矩形_[转]c# 画圆角矩形
  9. OpenStack-Icehouse(nova-network)多节点基础环境部署
  10. 预充电电路工作原理_预充电阻和预充继电器的工作原理和功用是什么?
  11. 毕达哥拉斯的数字和定理 -逻辑与算法之四
  12. android手机 hdmi,手机的高清输出——MHL和micro HDMI测试
  13. 【C语言】BC90小乐乐算多少人被请家长(DAY 5)
  14. c语言getch 头文件,用getch()需要头文件吗?
  15. html表格制作步骤详解,HTML网页表单制作详细讲解
  16. html5 krpano,krpano HTML5 Viewer可以实现全景展示
  17. 《机器人动力学与控制》第五章——速度运动学之机械臂的雅各比矩阵 5.0 导言
  18. Microsoft Office for Mac 报错
  19. Unity Shader - Predefined Shader preprocessor macros 着色器预处理宏
  20. java全栈系列之JavaSE--java中的多维数组的详解026

热门文章

  1. Android小项目之五 splash动画效果
  2. HTML 超级链接详细讲解
  3. 将叶节点连接成一个链表☆
  4. ngrok工具的介绍与使用,以及使用此工具时注意的事项
  5. Storm集群使用DRPC功能Version1.0.1
  6. web导入excel数据
  7. Bootstrap(二)——Grid栅格布局
  8. 网络请求get和post的区别
  9. DC中的一些命令随笔
  10. Racket 6.11提供了稳定的细化类型和依赖函数特性