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