Назад | Перейти на главную страницу

Как полностью удалить узел из кластера Consul?

Этот узел Consul Server в другом DC продолжает присоединяться некоторое время после его удаления.

Цель:

Кластер из 5 серверов Consul в DC alpha0, чей KV Store a alpha0 Кластер Vault использует как серверную часть хранилища:

Кластер из 5 серверов Consul в DC prd0, чей KV Store a prd0 Кластер Vault использует как серверную часть хранилища:

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