Consul/Registrator 体系结构 - 我需要在每个 VM 上使用单独的 Consul 代理吗?

Consul/Registrator architecture - do I need a separate Consul agent on each VM?

我正在尝试使用 Consul 和 Registrator 在各种 VM 中获取微服务,但我认为我不太了解。我知道 Registrator 会自动向 Consul 注册容器。所以我想我会有一个 VM 运行s Consul,然后对于每个微服务,我会有一个带有 Registrator + 微服务的 VM。

但是,我无法让 Registrator 在单独的 VM 中与 Consul 代理对话。仔细查看建议的体系结构,似乎我需要在每个 VM 上有一个单独的 Consul 代理。我的理解对吗?如果是这样,为什么? Registrator 不应该只能将容器信息转发到任何 VM 上的 Consul 代理吗?

此外,我是否需要 运行 在具有 Consul 代理和服务器的 VM 上注册?

您需要在每个提供服务的 VM 上都有一个 consul 代理,以便它可以与 consul 服务器通信信息

这个blog post有很好的信息:

Consul 架构 每个为 Consul 提供服务的节点都运行一个 Consul 代理。代理负责检查节点上服务的健康状况以及节点本身。代理与一台或多台 Consul 服务器对话

注册代理 Registrator 代理可以自动 register/deregisters 为 ECS 任务或基于发布的端口和来自 ECS 任务定义中定义的容器环境变量的元数据的服务提供服务

所以这 2 个是互补的,需要为您要部署的每个服务(名称)部署