2

要将新代理加入一组领事成员,需要知道至少一个现有成员的 IP。我必须支持我不知道任何现有组成员的 IP 的情况。在这种情况下,人工干预是不可能的,因为服务发现必须完全自动运行。

我解决这个问题的想法:我可以通过广播或多播向网络中的其他计算机发送消息。每台计算机都托管我将实施的自定义服务。该服务使用 consul 正在监听的 IP 地址回复这个特殊的广播/多播消息(例如:“寻找现有集群成员”)。然后,该服务将从网络获得一个或多个回复,并使用其中一个 IP 地址加入集群。

有没有人有更好的想法来解决这个问题?是否有任何现有的库来解决这个问题?

4

1 回答 1

3

Hashicorp 作为 Atlas 的一部分提供免费服务来做到这一点:https ://www.consul.io/docs/guides/atlas.html

在没有自定义服务的情况下,其他更简单的方法:

  • 在第三方 DNS 中公开 Consul 服务器,服务器在加入 Consul 集群之前可以访问。或者,有一个公开的 http 服务,它返回一个 IP 以加入并使用 curl 或其他东西来获取 IP。使用 Consul 更新 IP。
  • 如果您在 AWS 或提供机器元数据的类似服务中运行,请使用该服务标记您的 Consul 框,然后使用该服务的查询功能执行诸如“查找具有标签 Consul 并正在运行的服务器”之类的操作并传递它们加入。
于 2015-11-17T23:51:18.103 回答