Этот узел Consul Server в другом DC продолжает присоединяться некоторое время после того, как я его удалю.
Цель:
Кластер из 5 серверов Consul в DC alpha0
, чье хранилище KV Store a alpha0
Vault кластер использует в качестве серверной части хранилища:
alpha0consulserver1.alpha0
alpha0consulserver2.alpha0
alpha0consulserver3.alpha0
alpha0consulserver4.alpha0
alpha0consulserver5.alpha0
Кластер из 5 Consul серверов в округе Колумбия prd0
, чье хранилище KV использует кластер хранилища prd0
в качестве серверной части хранилища:
prd0consulserver1.prd0
prd0consulserver2.prd0
prd0consulserver3.prd0
prd0consulserd0
prd0consulserd
prd0consulserd
prd0consulserd
prd0consulserd0
prd0consulserd0
prd0consulserd0
prd0consulserd0
prd0consulserd0 [12] 12115] WAN-соединение в порядке. Но меня беспокоит, что если они синхронизируют свои хранилища KV, это может повлиять на два отдельных кластера HashiCorp Vault, каждый из которых использует их в качестве серверной части.
Проблема:
Плохо протестированный мной сценарий Puppet привел к тому, что один узел Consul prd0consulserver5
подключился к другому в другом DC, alpha0consulserver1
.
I полностью удалили и переустановили 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
Я не пробовал принудительно покинуть
, так как он не работает на узлах за пределами настроенного контроллера домена.
Я также попытался отменить регистрацию ВСЕХ хостов prod0
с хостов alpha0
.
https://www.consul.io/api/catalog.html#deregister- entity
Я здесь до конца остроумие и могу ' Кажется, я нашел способ
Я искал его в поисковых системах, используя этот запрос и множество похожих запросов: https://duckduckgo.com/?q=totally+deregister+consul+node&t=hc&ia= программное обеспечение
Похоже, что следующие два результата имеют немного схожую проблему, но не что иное, как сохранение кластера из 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, имеющие собственное отдельное хранилище KV и Consul Leader, от узлов сервера alpha0
Consul?
chỉ sau khi thử các quy trình xóa tiêu chuẩn tại đây:
$ consul leave
$ consul force-leave <node>
bạn nên chuyển sang bên dưới, sẽ xóa hoàn toàn nút khỏi cụm:
$ consul operator raft remove-peer
// Для моего конкретного случая я нашел ответ в consul operator raft remove-peer
.
Но я с нетерпением жду информации о том, как вообще возникает проблема, здесь:
https://github.com/hashicorp/consul/issues/3218#issuecomment-312721634