Да, кластер продолжит нормально работать. Кластер из N
узлов, и если N
нечетно (N = 2k + 1
), может обработать k
сбой узла. Пока большинство узлов живы, они могут работать нормально. Если один узел выходит из строя, а у нас все еще большинство, все в порядке. Только когда вы потеряете большинство узлов, у вас возникнут проблемы.
Нет причин заставлять кластер иметь нечетное количество узлов, и реализации не рассматривают это как проблему и, следовательно, не обрабатывают ее (отбрасывают узлы).
Вы можете запустить согласованный алгоритм на четном числе узлов, но обычно имеет смысл иметь его нечетным.
3 node cluster can handle 1 node fail (the majority is 2 nodes).
4 node cluster can handle 1 node fail (the majority is 3 nodes).
5 node cluster can handle 2 node fail (the majority is 3 nodes).
6 node cluster can handle 2 node fail (the majority is 4 nodes).
Надеюсь, это делает более понятным, почему более разумно иметь размер кластера нечетным числом, он может обрабатывать такое же количество отказов узлов с меньшим количеством узлов в кластере.