Я развернул Консул сервер, используя Диаграмму Шлема , дав мне кластер из трех узлов.Я мог просмотреть IP-адреса и идентификаторы узлов:
$ consul catalog nodes
Node ID Address DC
consul-server-0 065ab1e4 10.60.1.11 dc1
consul-server-1 46eca681 10.60.0.16 dc1
consul-server-2 fb5fa37d 10.60.2.8 dc1
В качестве теста я принудительно удалил все три из этих узлов следующим образом:
kubectl delete pods -n consul --force --grace-period=0 consul-server-0 consul-server-1 consul-server-2
Пришли три новых модуляразные IP-адреса, но одинаковые идентификаторы, присоединились к кластеру и снова достигли консенсуса:
$ consul catalog nodes
Node ID Address DC
consul-server-0 065ab1e4 10.60.1.12 dc1
consul-server-1 46eca681 10.60.2.9 dc1
consul-server-2 fb5fa37d 10.60.0.17 dc1
На что полагается Консул, чтобы справиться с этой ситуацией?Может ли он снова сформировать кворум, так как идентификаторы совпадают, а затем выяснить, изменились ли IP-адреса?Или имена узлов, которые остаются согласованными, также являются требованием для автоматического восстановления?
Я вижу сообщения журнала, такие как:
consul: removed server with duplicate ID: 46eca681-b5d6-21e7-3df5-cf228ffdd02c
Так что, похоже, изменение IP-адреса вызывает новый узелбыть добавленным в кластер, но затем Консул решает, что его нужно удалить.Из-за этого я ожидаю, что в одной точке будет 6 узлов, из которых 3 недоступны, что приведет к потере кворума кластером и невозможности автоматического восстановления, но этого не происходит.