本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。
  一、安装集群软件
  必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件
  二、配置防火墙
  1、禁止防火墙和selinux
  # systemctl disable firewalld
  # systemctl stop firewalld
  修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

  2、设置防火墙规则
  # firewall-cmd --permanent --add-service=high-availability
  # firewall-cmd --add-service=high-availability
  三、各节点之间主机名互相解析
  分别修改2台主机名分别为node1和node2,在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
  四、各节点之间时间同步
  在node1和node2分别进行时间同步,可以使用ntp实现。
  [root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器
  五、各节点之间配置ssh的无密码密钥访问。
  下面的操作需要在各个节点上操作。
  # ssh-keygen -t rsa -P ‘’   #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
  # ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名
  两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2
  # ssh node2 ‘date’;date #测试一下是否已经互信
  六、通过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
  7、设置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)
  8、配置存储
  高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。
  共享磁盘主要有iscsi或DBRD。本文并没有使用共享磁盘。
  9、配置浮点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
  10、配置apache服务
  在node1和node2上安装httpd ,确认httpd开机被禁用
  # systemctl status httpd.service;
  配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1和node2上执行
  # 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,所以我们在这个目录下面建立一个主页。
  node1节点修改如下:
  [root@node1 ~]# cat <<-END >/var/www/html/index.html
  <html>
  <body>Hello node1</body>
  </html>
  END
  node2节点修改如下:
  [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"