一、介绍

  高可用,大家可能会想到比较简单的Keepalived,或者更早一点的 heartbeat,也可能会用到 Corosync+Pacemaker,那么他们之间有什么区别。

  Heartbeat到了v3版本后,拆分为多个子项目:Heartbeat、cluster-glue、Resource Agent、Pacemaker。

    Heartbeat:只负责维护集群各节点的信息以及它们之前通信。

    Cluster-glue:当于一个中间层,可以将heartbeat和crm(pacemaker)联系起来,主要包含2个部分,LRM和STONITH;

      Resource Agent :用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。

    pacemaker:原Heartbeat 拆分出来的资源管理器,用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。它不能提供底层心跳信息传递的功能,它要想与对方节点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方。

  Pacemaker 配置文件比较不太容易修改,可以使用命令行界面的crmsh、pcs和图形化界面pygui、hawk等进行管理,看个人喜好。

  Heartbeat 和 Corosync 的区别:

    1、经过安装heartbeat 体验,Heartbeat 配置比较简单,主要修改三个文件即可:  ha.cf、  haresources、  authkeys ,但是在支持多节点的时候不知道个人配置问题,还是其他,脑裂严重(查看很多博客说只支持2个节点),并且自带的服务脚本较少,很多服务监控脚本需要自己编写。

    2、Heartbeat只能为所有的资源配置一个主服务,而corosync则允许为不同的资源组配置不同的主服务 ,corosync支持多个节点的集群,支持把资源进行分组,按照组进行资源的管理,设置主服务,自行进行启停 。

    3、管理资源的灵活性:在corosync中,其会自行处理配置文件的同步问题,heartbeat则无此功能

二、环境

  1、系统:CentOS Linux release 7.4.1708 (Core)  三台

  2、hosts (三个节点修改):

    10.6.32.20  ceph1

    10.6.32.21  ceph2

    10.6.32.22  ceph3

  3、时间同步 chrony

  4、关闭防火墙 firewalld 和 Selinux。

  5、配置节点ssh信任(controller1 节点操作)。

      # ssh-keygen   (生成默认证书即可)

      # ssh-copy-id 127.0.0.1

      # 将 .ssh 文件拷贝覆盖到其他节点。

      # scp -r .ssh/ root@ceph2:/root/

      # scp -r .ssh/ root@ceph3:/root/

三、配置安装

  1、安装(all-node)

    # yum install -y pacemaker pcs psmisc policycoreutils-python

  2、查看服务是否已安装

    # rpm -qa | grep corosync

    # rpm -qa | grep pacemaker

    # rpm -qa | grep pcs

    # rpm -qa | grep psmisc

    # rpm -qa | grep policycoreutils-python

    

    安装完成之后,会生成一个用户:hacluster ,供集群使用。

    

  3、启动 pcs 服务,并设置开机自启动(all-node)

    # systemctl start pcsd.service

    # systemctl enable pcsd.service

    

    创建了一个软连接。

  4、设置 hacluster密码 

    安装组件生成的hacluster用户,用来本地启动pcs进程,因此我们需要设定密码,每个节点的密码相同。

    

  5、验证集群节点(其中一个节点测试)

    # pcs cluster auth ceph1 ceph2 ceph3

    

  6、生成corosync 配置文件 (其中一个节点操作)

    # pcs cluster setup --name openstack_cluster ceph{1,2,3}

    

    建立集群:openstack_cluster,生成corosync文件 /etc/corosync/corosync.conf

  7、启动集群并设置开机自启动 (其中一个节点操作)

    # pcs cluster start --all    (# all 参数标识所有节点生效,不加all 本地生效,也可以指定某节点:pcs cluster start ceph2

    # pcs cluster enable --all

    

  8、查看集群

    1、查看 集群状态

      # pcs status

        

        Online: ceph1 ceph2 ceph3  存活, 0 resources configured:还没有配置资源 ,有一个 WARNING 报错。

    2、查看corosync 

      # corosync-cfgtool -s

        

      # corosync-cmapctl | grep members      #查看成员信息

        

      # pcs status corosync      #查看状态

        

    3、查看 pacemaker 

      # ps axf |grep pacemaker

        

  9、检查配置文件

    # crm_verify -L -V

      

      为保证集群数据安全,pacemaker默认启动STONITH 。因没有配置,先禁用

    # pcs property set stonith-enabled=false        # 禁用 STONITH

    #  crm_verify -L -V    

      

  10、添加虚拟IP(VIP)

    # pcs resource create VIP ocf:heartbeat:IPaddr2 ip=10.6.32.254 cidr_netmask=32 op monitor interval=30s

      

    添加成功,目前虚拟IP在 ceph1 节点上,通过 ip add list 可查看。(虚拟ip:10.6.32.254 资源名称:VIP,检测时间:30s/次)

    # ip add list

      

  11、httpd 高可用

    1、开启 apache status url 监控页

      # vim /etc/httpd/conf.d/status.conf        

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from all
</Location>

    2、关闭 httpd 服务,添加httpd 资源时会重新启动http服务,如果不关闭,会报错。

      # systemctl stop httpd

    3、添加 httpd 资源 到集群。

      # pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=30s

      

      创建了一个httpd 的集群资源 WebSite,主节点在 ceph2 上。检测页:http://localhost/server-status, 检测时间:30s/次。 但是有一个新的问题,虚拟IP在ceph1 上, httpd资源在 ceph2 上,会导致客户端无法访问。如果VIP在任何节点都不存在,那么WebSite也不能运行。

    4、设置 资源检测超时时间

      # pcs resource op defaults timeout=120s

      # pcs resource op defaults

      

    5、绑定服务资源和 VIP 资源,始终保持在一个节点上

      # pcs constraint colocation add WebSite with VIP INFINITY

      

  12、浏览器访问测试

    

    成功!!!!

  OK,博客到此处,已经搞定需求。

五、后期维护+知识扩展    

  1、上节提到创建 服务资源, ocf:heartbeat:apache  这是是用来告诉pacemaker,第一个部分ocf,指明了这个资源采用的标准(类型)以及在哪能找到它。第二个部分标明这个资源脚本的在ocf中的名字空间,在这个例子中是heartbeat。最后一个部分指明了资源脚本的名称。

  2、查看 pacemaker 默认支持的资源

    1、查看资源采用的标准类型

      # pcs resource standards

      

    2、查看可用的ocf资源提供者

      # pcs resource providers

      

    3、查看特定标准下所支持的脚本,例:ofc:heartbeat 下的脚本

      # pcs resource agents ocf:heartbeat

      

  3、手动切换某节点到 standby 状态及取消standby 状态

    # pcs cluster standby ceph1

   

    # pcs cluster unstandby ceph1

  4、防止资源在节点恢复后立即迁移

    # pacemaker默认所有节点的stickiness都为0

    # pcs resource defaults resource-stickiness=100

    # pcs resource defaults   #查看

    

  5、重启资源

    #  pcs resource restart resource_name

  6、查看帮助

    # pcs resource --help

  7、清理集群错误日志

    # pcs resource cleanup

  8、在集群节点小于2个,无法仲裁时,忽略仲裁,保证业务提供(集群所有节点均正常时配置)

    # pcs property set no-quorum-policy=ignore

Centos 7 下 Corosync + Pacemaker + psc 实现 httpd 服务高可用的更多相关文章

  1. Centos 7 下 Corosync + Pacemaker + psc + HA-proxy 实现业务高可用

    一.介绍: 1.本博客Corosync + Pacemaker + psc + HA-proxy 实现业务高可用,以httpd 服务实现高可用为例. 2.架构思路 a.三台web 节点,功能:全部安装 ...

  2. Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用

    一.介绍 高可用,大家可能会想到比较简单的Keepalived,或者更早一点的 heartbeat,也可能会用到 Corosync+Pacemaker,那么他们之间有什么区别. Heartbeat到了 ...

  3. corosync+pacemaker and drbd实现mysql高可用集群

    DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...

  4. Corosync+pacemaker实现集群的高可用

    一.Corosync和pacemaker的了解: Corosync是集群管理套件的一部分,他在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等.也就是说,corosync是Mess ...

  5. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  6. 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...

  7. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】

    CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡   一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2 ...

  8. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  9. RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

    原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写, ...

随机推荐

  1. oracle PL/SQL的介绍

    转自:http://blog.sina.com.cn/s/blog_4c302f060101i4o1.html 一 PL/SQL的介绍 1 PL/SQL是什么? PL/SQL(procedural l ...

  2. C++复习:对C的拓展

    简单的C++程序 求圆的周长和面积 数据描述:             半径,周长,面积均用实型数表示 数据处理:         输入半径 r:         计算周长 = 2*π*r :     ...

  3. ETC2 区别于ETC的重要点

    ETC2 主要是对于NPOT却是4的倍数的贴图有较大压缩,比如一个1920X1080RGB的Loading图,ETC4压缩下不管用,大小5.9M,ETC2下压缩为1M

  4. linux 协议栈tcp的rst报文中,seq的选取问题

    之前在<深入理解并行编程>的群里,有个小米的兄弟问了一个问题,服务器A发包给服务器B,Seq是1,但是在未能收到服务器B的报文回复的情况下,发送了rst,但是rst报文中,对应的seq是1 ...

  5. 趣味编程:静夜思(Swift版)

    func verticalWriting(txt:String, offset:Int) { Dictionary(grouping: txt.enumerated(), by: {$0.0 % of ...

  6. RabbitMQ系列教程之五:主题(Topic)(转载)

    RabbitMQ系列教程之五:主题(Topic) (本实例都是使用的Net的客户端,使用C#编写),说明,中文方括号[]表示名词. 在上一个教程中,我们改进了我们的日志记录系统. 没有使用只能够进行虚 ...

  7. python机器学习一:KNN算法实现

    所谓的KNN算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个 ...

  8. tomcat 简单安装配置说明

    1.下载安装文件[apache-tomcat-6.0.41.tar.gz]到指定目录[/usr/local]2.解压文件[tar -zxvf apache-tomcat-6.0.41.tar.gz], ...

  9. 免費查看SQL PLAN的工具 - SQL Sentry Plan Explorer

    今天 Terry大 介紹給小弟這個 SQL Sentry Plan Explorer 工具,可以用來看SQL Plan. 什麼? 用SSMS看不就很清楚了嗎? 這個Tool有把SQL Plan幫我們整 ...

  10. Structs复习 ActionMethod

    action在执行的是时候 可以不执行excute方法 可以由自己制定 可以在action标签里指定  也可以在方法里动态指定 推荐使用后者 jar包 web.xml <?xml version ...