如何避免三节点农奴集群的裂脑?

时间:2019-02-03 09:38:32

标签: high-availability consul service-discovery

我的任务是用农奴完成以下任务: 如果一个节点发生故障,另一个节点将关闭第一个节点,并将其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选项完成的,但在农奴制中则不可用。在起搏器中,可以选择法定人数,但是在农奴中,我没有找到任何相关内容。农奴是完成这项任务的正确技术吗?预先谢谢你!

0 个答案:

没有答案