我已经设置了一个由三个节点组成的小型集群。我创建了一个 IPaddr2(或来自 Percona 的 IPaddr3)VIP,一切正常。最初,我有以下分布:
Full List of Resources:
* Clone Set: ClusterIP-clone [ClusterIP] (unique):
* ClusterIP:0 (ocf::percona:IPaddr3): Started node1
* ClusterIP:1 (ocf::percona:IPaddr3): Started node2
* ClusterIP:2 (ocf::percona:IPaddr3): Started node3
然后我重新启动 node2,pacemaker 获取该节点并将 node2 的流量分配给 node1,因此分布变为:
Full List of Resources:
* Clone Set: ClusterIP-clone [ClusterIP] (unique):
* ClusterIP:0 (ocf::percona:IPaddr3): Started node1
* ClusterIP:1 (ocf::percona:IPaddr3): Started node1
* ClusterIP:2 (ocf::percona:IPaddr3): Started node3
现在,当 node2 恢复时,由于克隆资源的 resource-stickiness=1,什么也不会发生。但如果我随后为 ClusterIP 设置 resource-stickiness=0,分布将变为这样:
Full List of Resources:
* Clone Set: ClusterIP-clone [ClusterIP] (unique):
* ClusterIP:0 (ocf::percona:IPaddr3): Started node2
* ClusterIP:1 (ocf::percona:IPaddr3): Started node1
* ClusterIP:2 (ocf::percona:IPaddr3): Started node3
因此,现在不再有“node1、node2、node3”,而是“node2、node1、node3”,这会导致所有客户与底层服务器断开连接,因为现在 node2 不再为第二组客户提供 IP 数据包,而是为第一组客户提供服务。这会导致 TCP 断开连接然后重新连接。
有没有办法指定 ClusterIP:0 应该优先选择节点 1、ClusterIP:1 应该优先选择节点 2、ClusterIP:2 应该优先选择节点 3?由于这是一个克隆资源,我还没有找到实现这一点的方法。谢谢。