以下分别以crm和pcs两种命令来实现

1. 安装corosync和pacemaker,在centos6.5 自带有rpm包。

   yum -y install corosync pacemaker

2. 配置pacemaker做为corosync的插件运行:

   在/etc/corosync/corosync.conf加入如下配置

       secauth: on #开启集群节点之间通信的安全认证

       interface {

           bindnetaddr: 192.168.0.0 #指定进行网卡所在的网络地址

       }

       service {

           name: pacemaker #指定资源管理器的名称

           ver: 0 # 0:表示pacemaker作为corosync的插件来运行;1:表示pacemaker作为单一的             守护进程来运行,也就是说在启动corosync后还必须手动启动pacemaker守护进程。

           }

       aisexec {

           user: root  #表示以哪个用户来运行pacemaker资源管理器。

           group: root #表示以哪个组来运行pacemaker资源管理器。

       }

3. 配置节点间通信使用的密钥:

   corosync-keygen

4. 配置集群属性

   crm configure property no-quorum-policy=ignore

   【pcs property set no-quorum-policy=ignore】

   #表示不管出现何种情况资源照样继续运行

   crm configure property stonith-enabled=false

   【pcs property set stonith-enabled=false】

   #表示禁用stonith,默认情况下,若是没有stonith设备,集群是无法启动的。

5. 配置资源以及对资源的监控

   1、配置虚拟ip

       crm configure primitive myip ocf:heartbeat:IPaddr params ip="192.168.0.100" nic="eth0" cidr_netmask="24"  op monitor interval=20s timeout=30s

       【pcs resource create myip ocf:heartbeat:IPaddr params ip="192.168.0.100" nic="eth0" cidr_netmask="24"  op monitor interval=20s timeout=30s】

       #表示定义一个主资源 myip, ocf:heartbeat:IPaddr表示资源代理的类型为ocf,提供者是heartbeat,具体的代理为IPaddr,params表示代理IPaddr的参数为ip="192.168.0.100" nic="eth0" cidr_netmask="24"等,op表示对此资源的操作,有monitor、start、stop、status等。interval表示每隔20s对资源的健康状态进行一次检查,如果检测不成功,30s后就超时了。

   2、配置mysqld服务

       crm configure primitive myservice ocf:heartbeat:mysql params binary="/usr/bin/mysqld_safe" config="/etc/my.cnf" datadir="/var/lib/mysql" pid="/var/run/mysqld/mysql.pid" socket="/tmp/mysql.sock" additional_parameters="--bind-address=192.168.0.100" op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s

       【pcs resource create myservice ocf:heartbeat:mysql params binary="/usr/bin/mysqld_safe" config="/etc/my.cnf" datadir="/var/lib/mysql" pid="/var/run/mysqld/mysql.pid" socket="/tmp/mysql.sock" additional_parameters="--bind-address=192.168.0.100" op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s】

  3、配置共享存储

       crm configure primitive mystore ocf:heartbeat:Filesystem params device=192.168.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s

       【pcs resource create mystore ocf:heartbeat:Filesystem params device=192.168.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s】

6. 配置约束规则

  1、配置排列约束

       crm configure colocation myip_with_mystore_myservice inf: myip mystore myservice

       【pcs constraint colocation add myip mystore myservice INFINITY】

       #表示 myip、mystore、myservice三个资源必须在一起,或者定义一个组资源,将这三个资源放入组中即可。

   2、配置顺序约束

       crm configure myip_then_mystore_then_myservice inf: myip mystore myservice

       【pcs constraint order myip then mystore then myservice 】

       #表示起源启动的顺序依此是myip、mystore、myservice

7. 配置网络ping node监控

   1、配置ping node主资源

           crm configure primitive pnode ocf:pacemaker:ping params host_list=192.168.0.200 multiplier=100 op monitor interval=10s timeout=60s op start timeout=60s

           【pcs resource create pnode ocf:pacemaker:ping params host_list=192.168.0.200 multiplier=100 op monitor interval=10s timeout=60s op start timeout=60s 】

       #192.168.0.200是网关地址或可以ping通的其他节点,可以有多个,使用空格分隔。而multiplier表示如果集群中的节点可以ping通,那么那个节点的分数就会乘以这个参数指定的值,来进行累加,比如nodeA,ping通一次就是1*100,ping通两次2*100,一次类推。

   2、配置pnode的克隆资源

       crm configure clone cl_pnode pnode

       【pcs resource clone pnode 】

   3、配置ping node 失败的时候,资源的故障转移

       crm configure location mystore_on_ping rule -inf: not_defined pingd or pingd number:lte 0

       【pcs constraint location mystore rule score=-INFINITY: not_defined pingd】

       【pcs constraint location mystore rule sorce=-INFINITY: pingd lte 0 type=number】

       #表示如果由ping node得出的分数小于等于0 或者某个节点没有定义域ping node 相关的属性的话,那么就进行资源的转移。

8. 检查以上的配置是否有语法错误,然后提交保存

   1、校验是否有语法错误

       crm configure verify

   2、提交保存

       crm configure commit

9. 测试

   1、使用crm node standby nodeX

      #nodeX表示你要将哪个节点挂起

   2、使用禁止ping信息来测试

       iptables -A OUTPUT -p icmp -j DROP