领事数据中心:前一个领导节点失败后不会自动选择领导节点
Consul Data Center: Leader node not automatically selected after failure of previous leader node
我是 Consul 的新手,我创建了一个具有 2 个服务器节点的数据中心。
我按照本文档中提供的步骤操作,
https://learn.hashicorp.com/tutorials/consul/deployment-guide?in=consul/datacenter-deploy
节点已成功创建,并且在我启动服务时它们都是同步的。到这一步为止一切正常。
但是,如果领导节点发生故障(离线),我会遇到一个问题。在这种情况下,跟随者节点不会自动承担领导者节点的角色,并且整个 Consul 服务无法访问。即使跟随者节点停止响应请求,即使它仍然是 运行.
任何人都可以帮助我了解我的设置到底出了什么问题,以及如何让我的设置继续工作,跟随节点自动成为领导节点并响应来自 API 网关的查询?
下面的文档提供了一些指针,并讨论了如何实现 'Quorum' 以自动选择领导者。我不确定它是否适用于我的这种情况?
编辑:
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 as well as reviewing the deployment table,以帮助理解使用各种集群大小提供的容错能力。
我是 Consul 的新手,我创建了一个具有 2 个服务器节点的数据中心。 我按照本文档中提供的步骤操作, https://learn.hashicorp.com/tutorials/consul/deployment-guide?in=consul/datacenter-deploy
节点已成功创建,并且在我启动服务时它们都是同步的。到这一步为止一切正常。
但是,如果领导节点发生故障(离线),我会遇到一个问题。在这种情况下,跟随者节点不会自动承担领导者节点的角色,并且整个 Consul 服务无法访问。即使跟随者节点停止响应请求,即使它仍然是 运行.
任何人都可以帮助我了解我的设置到底出了什么问题,以及如何让我的设置继续工作,跟随节点自动成为领导节点并响应来自 API 网关的查询?
下面的文档提供了一些指针,并讨论了如何实现 'Quorum' 以自动选择领导者。我不确定它是否适用于我的这种情况?
编辑:
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 as well as reviewing the deployment table,以帮助理解使用各种集群大小提供的容错能力。