这个位于另一个 DC 中的 Consul Server 节点在我删除它后会继续加入。
目标:
DC 中由 5 个 Consul 服务器组成的集群alpha0
,其 KV 存储一个alpha0
Vault 集群用作存储后端:
alpha0consulserver1.alpha0
alpha0consulserver2.alpha0
alpha0consulserver3.alpha0
alpha0consulserver4.alpha0
alpha0consulserver5.alpha0
DC 中由 5 个 Consul 服务器组成的集群prd0
,其 KV 存储一个prd0
Vault 集群用作存储后端:
prd0consulserver1.prd0
prd0consulserver2.prd0
prd0consulserver3.prd0
prd0consulserver4.prd0
prd0consulserver5.prd0
WAN 连接正常。但我担心如果他们同步他们的 KV 存储,这可能会影响两个单独的 HashiCorp Vault 集群,每个集群都将它们用作后端。
问题:
我编写的一个测试不佳的 Puppet 脚本导致一个 Consul 节点prd0consulserver5
连接到另一个 DC 中的另一个节点,alpha0consulserver1
.
我已经为 prd0consulserver5 完全清除并重新安装了 Consul,但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
,因为它在配置的 DC 之外的节点上不起作用。
我还尝试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 服务器节点拥有自己独立的 KV 存储和 Consul 领导者与alpha0
Consul 服务器节点?