基于Corosync/Openais + Pacemaker架构的高可用web集群的配置过程(以两节点为例)
 
准备工作:
两台虚拟机
相关软件包
   cluster-glue-1.0.6-1.6.el5.i386
      cluster-glue-libs-1.0.6-1.6.el5.i386
      corosync-1.2.7-1.1.el5.i386
      corosynclib-1.2.7-1.1.el5.i386
      heartbeat-3.0.3-2.3.el5.i386
      heartbeat-libs-3.0.3-2.3.el5.i386
      libesmtp-1.0.4-5.el5.i386
      pacemaker-1.0.11-1.2.el5.i386
      pacemaker-libs-1.0.11-1.2.el5.i386
      perl-TimeDate-1.16-5.el5.noarch
      resource-agents-1.0.4-1.1.el5.i386
具体步骤:
1、为两个节点上配置相应的IP地址
结点1:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.13.36
NETMASK=255.255.0.0
# service network restart
结点2:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.13.37
NETMASK=255.255.0.0
# service network restart
2、为两个结点配置主机名
结点1:
# hostname node1.a.org
# vim /etc/sysconfig/network
HOSTNAME=node1.a.org
结点2:
# hostname node2.a.org
# vim /etc/sysconfig/network
HOSTNAME=node2.a.org
 
3、在两个结点上编辑/etc/hosts,添加如下两行
   172.16.13.36           node1.a.org   node1
172.16.13.37            node2.a.org   node2
4、在两个结点上配置基于密钥进行ssh通信
   结点1:
   # ssh-keygen -t rsa
   # ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2
   命令测试:
   # ssh node2 -- ‘ifconfig’
   // 应该显示为结点2的ip地址信息
   结点2:
  # ssh-keygen –t rsa
   # ssh-copy-id –i /root/.ssh/id_rsa.pub root@node1
   命令测试:
   # ssh node1 -- ‘ifconfig’
   // 应该显示为结点1的ip地址信息
5、安装软件包,首先下载所需的软件到本地,此处为/root/ruanjian
   # cd /root/ruanjian
   # yum localinstall *.rpm --nogpgcheck -y
6、编辑corosync的配置文件(此处以结点1为例)
   # cd /etc/corosync
   # cp corosync.conf.example corosync.conf
   // 配置文件corosync.conf事先不存在,需从模板corosync.conf.example复制
   # vim corosync.conf
   修改其中这一行bindnetaddr: 192.168.1.1为
                  bindnetaddr: 172.16.0.0
   添加如下内容:
    service {
             ver: 0
             name: pacemaker
}
aisexec {
       user:        root
       group: root
}
7、用命令生成配置文件authkey
   # corosync-keygen
8、将文件corosync,authkey复制到结点2上
   # scp -p corosync.conf authkey node2:/etc/corosync
   // -p为保留文件的原属性,切记不可少
9、创建配置文件中用到的存放日志文件目录
   # mkdir /var/log/cluster
   # ssh node2 'mkdir /var/log/cluster
//在node1上为node2创建此目录,此处也可在node2上直接创建
10、在结点1上启动corosync服务
# /etc/init.d/corosync start
11、验证corosync引擎是否正常启动:
# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages

  查看初始化成员节点通知是否正常发出:
# grep TOTEM /var/log/messages
 

Corosync/Openais + Pacemaker架构的高可用集群_第1张图片

检查启动过程中是否有错误产生:
# grep ERROR: /var/log/messages | grep -v unpack_resources
// 没有任何错误信息为正常
查看pacemaker是否正常启动:
# grep pcmk_startup /var/log/messages

 
12、上面的验证没问题后,启动结点2的corosync服务(此处只能在node1执行)
# ssh node2 -- /etc/init.d/corosync start
13、查看集群节点的启动状态:
# crm status 

Corosync/Openais + Pacemaker架构的高可用集群_第2张图片

14、配置集群的工作属性,禁用stonith
    // corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默认配置目前尚不可用,这可以通过如下命令验正:
    # crm_verify –L
 

禁用stonith
 # crm configure property stonith-enabled=false
15、为创建的集群创建一个IP地址资源
 # crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=172.16.13.38
16、如下的命令执行结果可以看出此资源已经在node1.a.org上启动:
 # crm status
 

Corosync/Openais + Pacemaker架构的高可用集群_第3张图片

17、可以在node1上执行ifconfig命令验证此地址已经在eth0的别名上生效
      

Corosync/Openais + Pacemaker架构的高可用集群_第4张图片

18、在结点2上停止结点1的corosync服务
    # ssh node1 -- /etc/init.d/corosync stop
    查看IP资源流向
    # crm status
     // 发现node1虽然停止了服务,但IP资源却没有流到node2上
     // 这是因为此时的集群状态为"WITHOUT quorum",服务本身已不能正常运行
    修改配置文件,使其忽略quorum
    # crm configure property no-quorum-policy=ignore
再查看集群状态
# crm status
再把node1启动起来
# ssh node1 -- /etc/init.d/corosync start