本文以两台机器实现双集热备高可用集群,主机名node1IP192.168.122.168 ,主机名node2IP192.168.122.169 

  1. 安装集群软件

    必须软件pcspacemakercorosyncfence-agents-all,如果需要配置相关服务,也要安装对应的软件

  2. 配置防火墙

         # firewall-cmd --permanent --add-service=high-availability
         # firewall-cmd --add-service=high-availability

    1. 禁止防火墙和selinux

      # systemctl disable firewalld
      # systemctl stop firewalld
      修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

    2. 设置防火墙规则

  3. 各节点之间主机名互相解析

    分别修改2台主机名分别为node1node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

#vi /etc/hostname
node1
#systemctl restart network.service
#hostname
node1

配置2台主机的主机表,在/etc/hosts中加入

192.168.122.168 node1
192.168.122.169 node2
  1. 各节点之间时间同步

    node1node2分别进行时间同步,可以使用ntp实现。

    [root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1为时间服务器
  2. 各节点之间配置ssh的无密码密钥访问

    下面的操作需要在各个节点上操作。# ssh-keygen -t rsa -P ‘’   #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名#两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1192.168.122.169 node2# ssh node2 ‘date’;date  #测试一下是否已经互信
  3. 通过pacemaker来管理高可用集群

  1. 创建集群用户

    为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。

    # passwd hacluster

    Changing password for user hacluster.

    New password:

    Retype new password:

    passwd: all authentication tokens updated successfully.

  2. 设置pcsd开机自启动

    # systemctl start pcsd.service

    # systemctl enable pcsd.service

  3. 集群各节点之间进行认证

    # pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized

  4. 创建并启动集群

    [root@z1 ~]# pcs cluster setup --start --name my_cluster node1 node2

    node1: Succeeded

    node1: Starting Cluster...

    node2: Succeeded

    node2: Starting Cluster...

  5. 设置集群自启动

    # pcs cluster enable –all

  6. 查看集群状态信息

    [root@z1 ~]# pcs cluster status

  1. 设置fence设备

      这个可以参考<Red Hat Enterprise Linux 7 High Availability Add-On Reference>

         corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验正:

         #crm_verify -L -V

         可以通过如下面命令禁用stonith

      #pcs property set stonith-enabled=false(默认是true

  1. 配置存储

    高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。

    共享磁盘主要有iscsiDBRD。本文并没有使用共享磁盘。

  2. 配置浮点IP

    不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群 每30秒检查它一次。

    # pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s
    # pcs update VIP op monitor interval=15s
  3. 配置apache服务

    node1node2上安httpd ,确认httpd开机被禁用 # systemctl status httpd.service

    # systemctl status httpd.service;配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1node2上执行

    # cat > /etc/httpd/conf.d/status.conf << EOF
    SetHandler server-status
    Order deny,allow
    Deny from all

    Allow from localhost
    EOF

    首先我们为Apache创建一个主页。在centos上面默认的Apache docroot/var/www/html,所以我们在这个目录下面建立一个主页。

    [root@node1 ~]# cat <<-END >/var/www/html/index.html <html>

    <body>Hello node1</body>

    </html>

    END

    [root@node2 ~]# cat <<-END >/var/www/html/index.html <html>

    <body>Hello node2</body>

    </html>

    END

    下面语句是将httpd作为资源添加到集群中:

    #pcs resource create WEB apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"

    1. node2节点修改如下:

    2. node1节点修改如下:

  4. 创建group,将VIPWEB resource捆绑到这个group中,使之作为一个整体在集群中切换。(此配置为可选)

    # pcs resource group add MyGroup VIP
    # pcs resource group add MyGroup WEB
  5. 配置服务启动顺序,以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)

    # pcs constraint order [action] then [action]
    # pcs constraint order start VIP then start WEB
  6. 指定优先的 Location (此配置为可选)

    Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

    # pcs constraint location WEB prefers node1=50

    # pcs constraint location WEB prefers node2=45

    这里指定分值越大,代表越想在对应的节点上运行。

  7. 资源粘性(此配置为可选)

    一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。

    为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。

    Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。

    # pcs resource defaults resource-stickiness=100

 

常用命令汇总:

  1. 查看集群状态#pcs status

  2. 查看集群当前配置:#pcs config

  3. 开机后集群自启动:#pcs cluster enable –all

  4. 启动集群:#pcs cluster start –all

  5. 查看集群资源状态:#pcs resource show

  6. 验证集群配置情况:#crm_verify -L -V

  7. 测试资源配置:#pcs resource debug-start resource

  8. 设置节点为备用状态:#pcs cluster standby node1

来源: Linux中国

作者: ertou

本文是原创投递或翻译投递,="http:>

欢迎转载,敬请在正文中标注并保留原文/译文链接和作者/译者等信息