service - Consul:在不知道现有成员IP的情况下加入

标签 service broadcast multicast service-discovery consul

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

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

有没有人有更好的主意来解决这个问题?有没有现有的库可以解决这个问题?

最佳答案

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

无需自定义服务即可实现此目的的其他更简单的方法:

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

关于service - Consul:在不知道现有成员IP的情况下加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673812/

相关文章:

json - 如何将 JSON 数据加载到 Angular2 组件中

windows - 从 Windows 上的 Go *net.UDPConn 获取 syscall.Handle?

c++ - linux VS windows 上的 UDP 组播差异

java - 服务内部的测试方法

java - 在java中等待Windows服务启动/停止?

Delphi XE2 服务未正常停止

node.js - Socket.io 服务器无法广播到房间

android - 如何在应用程序运行时验证互联网连接,并通知连接丢失。

java - Java中的广播消息

node.js - zeromq epgm pub/sub 不工作