热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Namenode双机热备之Pacemaker

Pacemaker官网:http:clusterlabs.orgwikiPacemakerPacemaker官方安装文档:http:clusterlabs.orgwikiI
Pacemaker官网:http://clusterlabs.org/wiki/PacemakerPacemaker官方安装文档:http://clusterlabs.org/wiki/Install#Binary_PackagesDrbd与Pacemaker参考:http://www.dbanotes.net/opensource/drbd-pacemaker.htmlHA配置实例:http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdfCLI帮助文档: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,和HeartbeatLSB 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 authkeyscp authkey drbd-b:/etc/corosync2、编译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 onservice 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 startssh 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,下面就要实际操作了。

推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
author-avatar
发的好地方
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有