领事:在不知道现有成员知识产权的情况下加入

时间:2015-11-12 14:31:12

标签: service broadcast multicast service-discovery consul

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

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

有没有人有更好的想法来解决这个问题?有没有现成的库来解决这个问题?

1 个答案:

答案 0 :(得分:3)

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

没有自定义服务的其他更简单的方法:

  • 在第三方DNS中公开Consul服务器,服务器可以在加入Consul集群之前访问这些服务器。或者,使用公开的http服务返回要加入的IP并使用curl或其他东西来获取IP。使用Consul。保持IP更新。
  • 如果您在AWS或提供有关计算机元数据的类似服务中运行,请使用该服务标记您的Consul框,然后使用服务的查询功能执行类似" find具有标签Consul并且正在运行的服务器"并将它们传递给-join。