Этот узел Consul Server в другом DC продолжает присоединяться некоторое время после его удаления.
Цель:
Кластер из 5 серверов Consul в DC alpha0
, чей KV Store a alpha0
Кластер Vault использует как серверную часть хранилища:
alpha0consulserver1.alpha0
alpha0consulserver2.alpha0
alpha0consulserver3.alpha0
alpha0consulserver4.alpha0
alpha0consulserver5.alpha0
Кластер из 5 серверов Consul в DC prd0
, чей KV Store a prd0
Кластер Vault использует как серверную часть хранилища:
prd0consulserver1.prd0
prd0consulserver2.prd0
prd0consulserver3.prd0
prd0consulserver4.prd0
prd0consulserver5.prd0
WAN-соединение в порядке. Но меня беспокоит, что если они синхронизируют свои хранилища KV, это может повлиять на два отдельных кластера HashiCorp Vault, каждый из которых использует их в качестве серверной части.
Эта проблема:
Написанный мной плохо протестированный скрипт Puppet привел к одному узлу Consul prd0consulserver5
, соединяясь с другим в другом DC, alpha0consulserver1
.
Я полностью очистил и переустановил Consul для prd0consulserver5, но alpha0consulserver1
продолжает подключаться к нему.
Вот пример одного из файлов конфигурации, в частности, для alpha0consulserver1.alpha0:
nathan-basanese-zsh8 % sudo cat /etc/consul/config.json
{
"bind_addr": "192.176.100.1",
"client_addr": "0.0.0.0",
"data_dir": "/opt/consul",
"domain": "consul.basanese.com",
"bootstrap_expect": 5,
"enable_syslog": true,
"log_level": "DEBUG",
"datacenter": "bts0",
"node_name": "alpha0consulserver1",
"ports": {
"http": 8500,
"https": 8501
},
"recursors": ["192.176.176.240", "192.176.176.241"],
"server": true,
"retry_join": ["192.176.100.3", "192.176.100.2", "192.176.100.1"]
}
Вот несколько важных журналов из prd0consulserver5
, но я могу опубликовать больше по запросу:
2017/05/26 23:38:00 [DEBUG] memberlist: Stream connection from=192.176.100.1:47239
2017/05/26 23:38:00 [INFO] serf: EventMemberJoin: alpha0consulserver2.alpha0 192.176.100.2
2017/05/26 23:38:00 [INFO] serf: EventMemberJoin: alpha0consulserver1.alpha0 10.240.112.3
2017/05/26 23:38:00 [INFO] consul: Handled member-join event for server "alpha0consulserver2.bts0" in area "wan"
2017/05/26 23:38:00 [INFO] serf: EventMemberJoin: alpha0consulserver3.alpha0 192.176.100.3
2017/05/26 23:38:00 [INFO] consul: Handled member-join event for server "alpha0consulserver1.bts0" in area "wan"
2017/05/26 23:38:00 [INFO] consul: Handled member-join event for server "alpha0consulserver3.bts0" in area "wan"
В конце концов, я дохожу до следующего:
2017/05/26 23:39:02 [DEBUG] memberlist: Initiating push/pull sync with: 192.176.100.2
Я выключил узел, так как мне не нужны ключи, которые я записываю в магазин KV. alpha0
узлы, чтобы появиться на prd0
узлы.
Что я пробовал до сих пор:
Я пробовал следующее:
https://www.consul.io/api/agent.html#graceful-leave-and-shutdown
Я не пробовал force-leave
поскольку он не работает на узлах за пределами настроенного контроллера домена.
Я также пробовал отменить регистрацию ВСЕХ prod0
хозяева из alpha0
хосты.
https://www.consul.io/api/catalog.html#deregister-entity
Я на грани своего остроумия, здесь, и, кажется, не могу найти способ
Я искал его в поисковых системах, используя этот запрос и множество похожих запросов: https://duckduckgo.com/?q=totally+deregister+consul+node&t=hc&ia=software
Следующие два результата, похоже, имеют немного схожую проблему, но не что иное, как сохранение кластера из 5 серверов Consul отдельно от другого кластера из 5 серверов Consul.
https://github.com/hashicorp/consul/issues/1188 https://groups.google.com/forum/#!msg/consul-tool/bvJeP1c3Ujs/EvSZoYiZFgAJ
Я думаю, что с этим может справиться "join_wan":
параметр конфигурации, но, похоже, у него нет возможности явно отключить его. Кроме того, это похоже на хакерский способ решить эту проблему.
Я также рассматривал IPTables.
В любом случае, я чувствую, что чего-то не хватает. Я начал копаться в протоколе Raft, но мне кажется, что, возможно, я начал отклоняться в своих поисках. Любое руководство приветствуется, будь то комментарий или ответ.
Точнее, как мне сохранить prd0
Узлы Consul Server, имеющие собственный отдельный магазин KV, и Consul Leader из alpha0
Узлы сервера Consul?
только после стандартной процедуры удаления здесь:
$ consul leave
$ consul force-leave <node>
если вы перейдете к следующему, что полностью удалит узел из кластера:
$ consul operator raft remove-peer
//, Для моего конкретного случая я нашел ответ в consul operator raft remove-peer
.
Но я с нетерпением жду информации о том, как проблема возникает в первую очередь, здесь:
https://github.com/hashicorp/consul/issues/3218#issuecomment-312721634