我的任务是用农奴完成以下任务: 如果一个节点发生故障,另一个节点将关闭第一个节点,并将其IP地址带到新的活动节点。现在,如果我关闭第一个节点,第二个节点将启动(第三个节点不执行任何操作,仅用于仲裁,并且没有leave.sh事件)。如果我关闭第二个节点,则将第一个节点调好。但是,如果我关闭第三个节点,则第一个节点和两个节点都将关闭/关闭(因为它们执行leave.sh)。我的问题是如何避免出现这种情况,因此即使第三个节点关闭,leave.sh也将不会在第一台和第二台服务器上执行?
这是我在第一个节点和第二个节点上的serf.conf:
{
"node_name": "serf-testnode",
"bind": "X.X.X.X",
"advertise": "X.X.X.X",
"rejoin_after_leave": true,
"skip_leave_on_interrupt": true,
"leave_on_terminate" : false,
"tags": {
"datacenter": "XXXX"
},
"event_handlers": [
"member-leave=/etc/serf/bin/leave.sh",
"member-failed=/etc/serf/bin/leave.sh",
"member-join=/etc/serf/bin/join.sh"
]
}
节点3上的serf.conf尚未离开leaf.sh(因为我只希望有两个节点集群,但是为了避免大脑分裂而屈服了第三个节点,但是它没有用)。在领事中,我认为这是通过bootstrap选项完成的,但在农奴制中则不可用。在起搏器中,可以选择法定人数,但是在农奴中,我没有找到任何相关内容。农奴是完成这项任务的正确技术吗?预先谢谢你!