corosync+pacemaker测试用例:
环境描述:
1. 集群中有三个节点,如下:
ü Control
ü compute1
ü node-3 这个节点是虚拟机,在control上面启动的
每个节点都有两个网卡,分别作为mgt平面和pub平面,mgt网卡用来承载corosync之间心跳报文
2.定义了两个资源:
ü pub_vip #浮动IP 10.25.49.10,为haproxy使用,可通过浏览器访问http://10.25.49.10:10000观察状态
ü pub_haproxy #haproxy进程
3.配置的约束:
ü pub_vip和pub_haproxy绑定到一起,在同一个节点上面启动,使用colocation进行约束;
ü pub_vip每次都在pub_hapoxy之前启动,使用order进行约束;
用例描述
0.起始状态
pub_vip和pub_haproxy都位于node-3节点
1.将node-3节点置为standby,node-3节点上面的资源会自动切换到另外一个节点
crmnode standby node-3
crmnode online node-3
注意:一旦切换后,如果利用location指定了某些资源放置在node-3, 再将其设置为online,也能正常切换回来
2.杀死haproxy进程,杀死后能够重新自动拉起来
注意:连续杀死3次(具体次数和migration-threshold配置有关)后,该节点就会被认为处于ineligible状态,然后crm就不会再将资源放置上面,资源会自动切换到另外一个节点上面。
3.直接将端口down掉
1)将pub端口down掉,pub_vip和pub_haproxy会自动切换到另外一个节点,此时node-3仍处于Online。此时再将pub端口置为up,pub_vip没有自动切换回来。
注意:如果重新使用location将pub_vip设置为在node-3节点启动,那么pub_vip还是会切换到node-3上面。
2)将mgt端口down掉,node-3就直接变成offline,同时集群分裂为两个,node-3单独成为一个集群,但没有任何资源,此时再将mgt端口置为up,集群会恢复正常,同时pub_vip会自动切换回来,但很快又会分裂为两个集群,mgt端口IP自动消失
注意:将集群中node-3节点删除,同时将location中涉及到node-3的规则删除,然后将node-3上面的corosync和pacemaker重启后,集群才能重新恢复正常
4.将node-3重启
重启后,pub_vip和pub_haproxy会自动切换到其他节点
5.杀死node-3上面的corosync进程
node-3自动变为offline,资源自动切换
配置
node1: control \
attributes standby=off
node2: compute1 \
attributes standby=off
node3: node-3
primitivemgt_haproxy ocf:nsp:haproxy_mgt \
op monitor interval=20 timeout=10 \
op start interval=0 timeout=30 \
op stop interval=0 timeout=30 \
meta migration-threshold=3failure-timeout=120 target-role=Started
primitivemgt_vip IPaddr2 \
params ip=192.168.100.10 \
op monitor interval=3 timeout=30 \
op start interval=0 timeout=30 \
op stop interval=0 timeout=30 \
meta migration-threshold=3failure-timeout=60 resource-stickiness=1
primitivep_neutron_agent_dhcp ocf:nsp:neutron-agent-dhcp \
op monitor interval=10 timeout=20
primitivep_neutron_agent_l3 ocf:nsp:neutron-agent-l3 \
op monitor interval=10 timeout=20 \
meta target-role=Started
primitivepub_haproxy ocf:nsp:haproxy_pub \
op monitor interval=20 timeout=10 \
op start interval=0 timeout=30 \
op stop interval=0 timeout=30 \
meta migration-threshold=3failure-timeout=120 target-role=Started
primitivepub_vip IPaddr2 \
params ip=10.25.49.10 \
op monitor interval=3 timeout=30 \
op start interval=0 timeout=30 \
op stop interval=0 timeout=30 \
meta migration-threshold=3failure-timeout=60 resource-stickiness=1 target-role=Started
cloneclone_neutron_agent_dhcp p_neutron_agent_dhcp \
meta interleave=truetarget-role=Stopped
locationclone_neutron_agent_dhcp-on-compute1 clone_neutron_agent_dhcp 100: compute1
locationclone_neutron_agent_dhcp-on-control clone_neutron_agent_dhcp 100: control
locationneutron_agent_l3-on-control-node p_neutron_agent_l3 100: control
locationpub_vip-on-node-3 pub_vip 100: node-3
colocationmgt_vip-with-mgt_haproxy inf: mgt_vip mgt_haproxy
colocationpub_vip-with-pub_haproxy inf: pub_vip pub_haproxy
orderpub_haproxy-after-pub_vip inf: pub_vip pub_haproxy symmetrical=true
propertycib-bootstrap-options: \
have-watchdog=false \
dc-version=1.1.13-10.el7_2.4-44eb2dd \
cluster-infrastructure=corosync \
last-lrm-refresh=1473749609 \
stonith-enabled=false
参考资料
1.http://blog.csdn.net/tantexian/article/details/50160159 自定义 Pacemaker OCF 资源
2.http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Explained/s-resource-options.html 官方文档