最近在部署openstack的双控制节点上需要切换资源,所以学习了一下heartbeat和pacemaker,本来想用heartbeat 2但是操作系统是ubuntu 12.10的,apt下来版本直接是3.0.5的,为了以后部署方便只能硬着头皮学了,网上关于3的内容不多,不过和2区别不大,个人感觉还是关于资源的设置比较麻烦一些。
两台机器:10.1.1.2(compute-1) 10.1.1.3(compute-2)
安装heartbetat
1 | apt-get install -y heartbeat |
会自动安装其他三个关键包:pacemaker、resource-agents、
cluster-agents
配置heartbeat
在/etc/heartbeat下面配置,ubuntu下自动做了一个软连接/etc/heartbeat其实是/etc/ha.d的连接。进入/etc/heartbeat
1 | cp /usr/share/doc/heartbeat/ha.cf.gz . |
2 | cp /usr/share/doc/heartbeat/authkeys . |
默认目录下并没有相关配置文件,可以自己手动建立,也可以直接修改软件包中自带的模板,因为使用pacemaker管理资源所以不需要拷贝haresources文件,如果使用了crm管理资源,而在配置文件目录含有haresources文件,日志中会提示haresources没有使用。
配置authkeys文件
官方不建议使用crc验证,所以我们使用sha1进行验证,
authkeys文件属性必须是600,否则日志会报错。
配置ha.cf文件(10.1.1.2)
05 | debugfile /var/log/ha-debug |
08 | logfile /var/log/ha-log |
启动heartbeat
1 | /etc/init.d/heartbeat start |
两台机器上执行相同的操作即可,注意:ucast的ip设置即可。
查看heartbeat运行状况:crm_mon -1
可以看到两台机器均在线,但是由于还没有配置资源所以没有资源信息。
资源管理需求:两台机器作为两台WEB服务器,使用apache软件。对用户接口为VIP(10.1.1.6)。要求不论哪台机器故障、apache服务故障都会把资源切换到正常的服务器上,不影响用户访问。
配置pacemaker,使用交互命令crm,也可以使用非交互模式
1 | crm configure property stonith-enabled= false |
2 | crm configure property no-quorum-policy=ignore |
3 | crm configure property start-failure-is-fatal= false |
4 | crm configure rsc_defaults migration-threshold=1 |
5 | crm configure primitive vip ocf:heartbeat:IPaddr2 params ip=10.1.1.6 nic=br100 op monitor interval=3s |
6 | crm configure primitive www lsb:apache2 op monitor interval= "10s" |
7 | crm configure group group1 vip www |
再次使用crm查看资源状态
可以看到vip资源和web资源目前运行在compute-1上面,这时候不论是停止compute-1上的apache服务还是网络都会导致vip资源和web资源一起切换到compute-2上。
关键的难点在crm上,关于crm的信息在下一篇中介绍。