Мы просто пробуем Docker-Swarm с 3 узлами, каждый узел действует как мастер и как рабочий. Это работает нормально, но я не знаю, является ли следующее поведение «нормальным».
Если я отключу один из этих 3 узлов, рой отлично справится с перераспределением служб.
Если я отключу два из этих 3 узлов, службы все еще будут работать, но если я подключусь к «последнему выжившему» и попытаюсь получить обзор своего роя с помощью:
docker node ls
я получаю следующее сообщение об ошибке:
Error response from daemon: rpc error: code = 4 desc = context deadline exceeded
Я не уверен, может ли рой работать, когда остался только один узел? я бы предположил .. да?
У вас есть объяснение: https://docs.docker.com/engine/swarm/raft/
Raft допускает до (N-1) / 2 отказов и требует большинства или кворума в (N / 2) +1 членов для согласования значений, предлагаемых кластеру.
Когда вы используете 3 управляющих узла, ваш кластер может согласиться с отключением одного узла, потому что оставшиеся 2 могут согласиться с тем, что третий мертвый.
Если у вас остался только один узел, возможно, проблема в нем. Таким образом, он не примет никаких изменений, и у вас не будет несогласованного состояния, если ваша сеть разделится.