Showing posts with label ha. Show all posts
Showing posts with label ha. Show all posts

Thursday, June 25, 2015

Pacemaker 安装与使用

Pacemaker 只做资源管理器(CRM),底下的消息系统采用 corosync。

安装

ubuntu 为例,
sudo aptitude install -y pacemaker corosync

配置 corosync

修改 /etc/default/corosync 文件,修改 start=yes,否则服务脚本无法启动。
/etc/corosync/corosync.conf 中,修改 bindnetaddr 的值为节点之间互相通知监听的网段(例如 eth1 所在的 10.0.100.0 网段)。
添加如下内容,让corosync 启动的时候也启动 pacemaker(ubuntu 上运行会有 bug,还得是手动启动)。
service {
    ver:  0
    name: pacemaker}

修改 expected_votes 的值为大于节点数目一半的数字。
执行 corosync-keygen 命令,会生成 /etc/corosync/authkey 文件,该文件和 corosync.conf,分别复制到集群的各个成员节点上。
启动 pacemaker 和 corosync
$ sudo service pacemaker restart
$ sudo service corosync restart
如果启动成功了,可以通过 sudo corosync-cmapctl |grep members 或者 sudo crm status查看集群中成员的状态。

配置资源信息

在任意一个 node 上执行下面的 crm 配置命令(实际上是通过 CLI 来编辑后面的 XML 文件)。
# crm
crm(live)# configure          #进入配置模式
crm(live)configure# verify    #校验配置
   error: unpack_resources:     Resource start-up disabled since no STONITH resources have been defined
   error: unpack_resources:     Either configure some or disable STONITH with the stonith-enabled option
   error: unpack_resources:     NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
  -V may provide more details
crm(live)configure# property stonith-enabled=false #根据校验情况,关闭 stonith
crm(live)configure# commit  # 提交修改
crm(live)configure# verify  # 重新校验
crm(live)configure# primitive web_ip ocf:IPaddr params ip=9.186.100.102  #定义 IP 资源,这个 ip 资源会被主节点配到自己的网卡上
crm(live)configure# primitive nginx_service lsb:nginx  #定义服务资源
crm(live)configure# commit
crm(live)configure# group mygroup web_ip nginx_service   #定义资源组
crm(live)configure# commit
crm(live)configure# property no-quorum-policy=ignore     #投票权不到一半时的策略
crm(live)configure# commit
crm(live)configure# exit

测试

分别在各个节点上启动 nginx,页面填入不同内容。
访问配置的虚 IP,即 9.186.100.102,查看具体访问到了哪个节点,然后在该节点上断开 eth1,同时删除 eth0:0(如果 enable 了 stonith 可以自动完成,否则要手动解决 split),过一会重新查看虚 IP 页面,会发现自动变成了其它的节点。