微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Consul 数据中心:前一个领导节点失败后不会自动选择领导节点

如何解决Consul 数据中心:前一个领导节点失败后不会自动选择领导节点

我是 Consul 的新手,我创建了一个带有 2 个服务器节点的数据中心。 我按照本文档中提供的步骤进行操作, https://learn.hashicorp.com/tutorials/consul/deployment-guide?in=consul/datacenter-deploy

节点已成功创建,并且在我启动服务时它们都处于同步状态。一切正常,直到这一步。

但是,如果领导节点出现故障(离线),我会遇到问题。在这种情况下,跟随者节点不会自动承担领导者节点的角色,并且 Consul 作为整体变得无法访问该服务。即使跟随节点仍在运行,它也会停止响应请求。

任何人都可以帮助我了解我的设置到底有什么问题,以及如何让我的设置仍然工作,让跟随节点自动成为领导节点并响应来自 API Gateway 的查询

以下文档提供了一些指导,并讨论了如何实现自动选择领导者的“法定人数”。我不确定它是否适用于我的这种情况?

https://learn.hashicorp.com/tutorials/consul/recovery-outage-primary?in=consul/datacenter-operations#outage-event-in-the-primary-datacenter

编辑:

consul.hcl

First Server:

datacenter = "dc1"
data_dir = "D:/Hashicorp/Consul/data"
encrypt = "<key>"
ca_file = "D:/Hashicorp/Consul/certs/consul-agent-ca.pem"
cert_file = "D:/Hashicorp/Consul/certs/dc1-server-consul-0.pem"
key_file = "D:/Hashicorp/Consul/certs/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
verify_server_hostname = true
retry_join = ["<ip1>","<ip2>"]

Second Server:

datacenter = "dc1"
data_dir = "D:/Hashicorp/Consul/data"
encrypt = "<key>"
ca_file = "D:/Hashicorp/Consul/certs/consul-agent-ca.pem"
cert_file = "D:/Hashicorp/Consul/certs/dc1-server-consul-1.pem"
key_file = "D:/Hashicorp/Consul/certs/dc1-server-consul-1-key.pem"
verify_incoming = true
verify_outgoing = true
verify_server_hostname = true
retry_join = ["<ip1>","<ip2>"]

server.hcl:

第一台服务器:

server = true
bootstrap_expect = 2
client_addr = "<ip1>"
ui = true

第二台服务器:

server = true
bootstrap_expect = 2
client_addr = "<ip2>"
ui = true

解决方法

集群的大小和形成仲裁的能力在这种情况下绝对适用。集群中至少需要 3 个节点,以便在不牺牲集群可用性的情况下容忍一个节点的故障。

我建议阅读 Consul 的 Raft Protocol Overview 并查看页面底部的 deployment table,以帮助了解使用各种集群大小提供的容错能力。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。