Как избежать расщепления мозга с тремя узлами крепостного кластера? - PullRequest
0 голосов
/ 03 февраля 2019

Моя задача состоит в том, чтобы выполнить следующее с помощью serf: если один узел выходит из строя, другой выключает первый узел и переносит его IP-адреса на новый работающий узел.Теперь, если я выключаю первый узел, второй работает (третий узел ничего не делает, он только для кворума и не имеет события left.sh).Если я выключу второй узел, первый будет в порядке.НО, если я выключаю третий узел, то и первый, и два отключаются / выключаются (потому что они запускают exit.sh).Мой вопрос состоит в том, как избежать этого сценария с разделением мозгов, так что даже если третий узел не работает, файл exit.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"

    ]
    }

Файл serf.conf на узле 3 не покинул .sh (потому что я хочу только кластер из двух узлов, но затянул третий узел, чтобы избежать разделения мозга, но он не работал).В консуле я думаю, что это делается с помощью опции начальной загрузки, но в крепостной недоступенВ кардиостимуляторе есть вариант кворума, но в крепостном я не нашел ничего связанного.Является ли serf подходящей технологией для этой задачи?Заранее спасибо!

...