在公共云中发现服务器的最佳方法?

dan*_*dan 1 ubuntu cluster service amazon-web-services discovery

我想让一个 ubuntu 服务器映像在公共云中运行,以发现来自同一映像的其他服务器何时上线。我想出了这个解决方案列表,但我不确定什么是最好的?

可能的解决方案:

  • 使用链路层发现协议 (LLDP) 的第 2 层组播与 CDP 非常相似
  • 为自己分配一个本地链接地址,然后发送一个广播
  • Avahi(Linux 上的 zeroconf 实现,很像 Apple 的 Bonjour)
  • 使用 DHCP 服务器跟踪服务器

更多可能的解决方案:(服务器必须已经有IP地址)

  • SNMP 广播/多播
  • SSDP 多播消息(简单服务发现协议)(在 UPnP 中使用)
  • 我不确定,但可能是 m(ulticast)DNS 或 DNS-SD(服务发现)

有没有更多的方法来发现节点?大型云集群通常做什么?

sys*_*138 6

公共云提供商通常不支持广播/多播方法,因此任何依赖于这些方法的解决方案都不是“最佳”的。至少对于包含平台独立性重要组成部分的“最佳”值而言。

在单播领域,你有很多选择,很大程度上取决于你想用这些图像做什么,以及什么服务实际上在做发现。

如果您完全在一个单一的云基础设施供应商中,常见的方法是询问基础设施那里有什么。您将获得带有 IP 地址的服务器列表,然后您可以使用这些列表来构建动态集群。

如果由于某种原因你不能这样做,也许你在多个提供商上,或者你需要一个已知活动的主机列表,你将不得不使用某种特定于应用程序的方法来构建动态集群. 这个方法是多种多样的,但我见过:

  • 为节点提供一些提示以检查它们何时上线,应用程序维护一个签入列表并进行心跳以确保列表中只有活动节点。把它想象成比特洪流播种机。
  • 使用实际的服务注册服务进行服务注册,您已经列出了其中的一些服务。
  • 使用自建的注册服务进行服务注册,例如从 Redis 中拼凑出来的东西。

什么对你最好取决于你在做什么。但是首先进行 API 查找,只有在那些不适合您的情况下才会花哨。