【问题标题】:What if local consul client down in node如果本地领事客户端在节点中关闭怎么办
【发布时间】:2021-07-28 05:05:46
【问题描述】:

我对 consul 非常陌生,最近一直在阅读有关 consul 集群的内容。我的理解是,对于每个节点(相当于物理机或虚拟机),我们将运行一个本地 consul 代理(在客户端模式下),因此在该节点中运行的任何微服务都将通过该代理注册自己。但是如果这个唯一的一个代理宕机了,那个节点中的微服务不会再无法注册了吗?或者我们应该期望每个节点有多个领事代理(在客户端模式下)来处理这种情况?

【问题讨论】:

    标签: client cluster-computing consul agent


    【解决方案1】:

    你是对的。如果 Consul 代理关闭,该主机上的服务将无法向代理注册,并且 Consul 将认为之前向代理注册的所有服务都不可用。

    一个非常简单的解决方案是在 systemd 之类的进程管理器下运行 Consul,并配置 systemd 以在进程意外失败时重新启动代理。您可以在 https://learn.hashicorp.com/tutorials/consul/deployment-guide#configure-systemd 找到一个示例 systemd 单元。如果 Consul 是从 HashiCorp Linux 包 repo (https://learn.hashicorp.com/tutorials/consul/get-started-install) 安装的,这个 systemd 单元将作为安装包的一部分包含在内。

    【讨论】:

    • 感谢分享使用 systemd 重新启动代理..我从没想过。另一种方法是在服务器中运行 2 个代理,这样当 1 个代理关闭时,还有另一个代理可用。这意味着服务器中运行的服务必须能够在第一个代理关闭时自动指向第二个代理。不过当然,这个方法,我还没有测试过,只是一个理论
    • 在单个主机(没有 Linux 网络或主机命名空间)上运行多个 Consul 代理有一些复杂性。也就是说,您需要为每个代理指定不同的data directoriesnode IDs。代理还需要绑定到主机上的不同 IP 地址,以便它们的 DNS/HTTP 服务器不会相互冲突。鉴于这种复杂性,让操作系统的进程管理器在 Consul 失败时重新启动它可能更容易。
    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2023-04-05
    • 2020-09-07
    • 2019-10-29
    • 1970-01-01
    • 2011-06-22
    • 2011-03-23
    • 2018-04-27
    相关资源
    最近更新 更多