我正在尝试构build一个dynamic的机器集群,这些机器必须与主节点通信(用于报告,更新和主节点要处理的各种其他任务)。
为了方便起见,我想到了使用heartbeat项目http://linux-ha.org/wiki/Heartbeat 。 Hearbeat提供了一个很好的故障转移和恢复机制,我想利用它。 我不打算使用ldirectord或任何虚拟IP。 我真的想使用心跳的主节点指定。
目前我只是运行一个简单的2节点设置,node1和node2的IP地址,我不控制(通过DHCP归属)。
由于节点可以dynamic添加到集群中,所以我这样configuration了ha.cf
keepalive 2 warntime 6 deadtime 12 logfacility local0 bcast eth0 # Linux mcast eth0 225.0.0.1 694 1 0 auto_failback on node virtual node node1 node node2 respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster
像这样的haresources
virtual \ nginx
因此,我设置了群集,以便virtual节点成为群集的首选资源。 这个节点不存在。 所以我希望所有的备用节点都要通过选举过程来决定谁在接pipe它时(=总是)。 我继续这样做,因为我想dynamic地添加和删除节点到configuration,但我仍然需要有一个首选节点
当我启动一个节点时它工作得很好,因为它只是拾取资源。 然而,当我启动第二个节点,具有完全相同的configuration(scp的configuration,所以没有差异的风险),两个节点释放他们的资源(我可以testing,因为没有任何节点触发它的nginx和以前的主,比如node1,closures它)。
如果需要的话,我可以发布完整的日志,但实际上发生了什么是节点只是试图从彼此获得资源,最终都释放他们的资源很多
ERROR: Both machines own our resources!
和
WARN: 1 lost packet(s) for [node2] [22:24]
完成
Jul 23 15:17:21 node1 heartbeat: [16390]: info: node2 wants to go standby [foreign] Jul 23 15:17:21 node1 heartbeat: [16390]: info: remote resource transition completed. Jul 23 15:17:21 node1 heartbeat: [16390]: ERROR: Both machines own our resources! Jul 23 15:17:21 node1 heartbeat: [16390]: ERROR: Both machines own our resources! Jul 23 15:17:22 node1 heartbeat: [16390]: info: remote resource transition completed. Jul 23 15:17:22 node1 heartbeat: [16390]: info: standby: acquire [foreign] resources from node2 Jul 23 15:17:22 node1 heartbeat: [16678]: info: acquire local HA resources (standby). Jul 23 15:17:22 node1 heartbeat: [16678]: info: local HA resource acquisition completed (standby). Jul 23 15:17:22 node1 heartbeat: [16390]: info: Standby resource acquisition done [foreign].
如果任何人有如何解决这个问题的build议(修复或替代方法),我都耳熟能详。
干杯。