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

我想制作一个Ubuntu服务器映像,在公共云中运行,发现同一映像中的其他服务器何时联机。 我想出了这个解决scheme清单,但我不确定什么是最好的?

可能的解决scheme:

  • 第二层组播使用链路层发现协议(LLDP)非常像CDP
  • 分配一个本地链接地址,然后发送广播
  • Avahi(Linux上的零configuration实现,就像Apple的Bonjour一样)
  • 使用DHCP服务器跟踪服务器

更可能的解决scheme:(服务器必须有一个IP地址已经)

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

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

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

在单播土地上,你有很多select,很大程度上取决于你想要对这些图像做什么以及哪些服务实际上在做这个发现。

如果你完全在一个单一的云基础设施提供商内部,通常的方法是向基础设施询问有关内容 。 你将得到一个IP地址的服务器列表,然后你可以使用它来构build你的dynamic集群。

如果你出于某种原因不能这么做,也许你是在多个提供者上,或者你需要一个已知活动主机的列表,你将不得不去build立一个特定于应用程序的方法来构build一个dynamic集群。 这种方法是不同的,但我已经看到:

  • 给节点提供一些提示,以检查它们何时联机,应用程序维护一个checkins列表,并确保只有活动节点在列表中。 把它想像成meteor播种机。
  • 服务注册与实际的服务注册服务,你已经列出了一些。
  • 通过自build注册服务进行服务注册,例如Redis提供的东西。

什么最适合你取决于你在做什么。 但是首先要进行API查找,如果这些查找不起作用,那么就只有这样才行。

据我所知,这样做的正确方法是使用您的云提供商提供给您的API。 试图从主机做到这一点是一个“石斧”领土。 使用您付费的太空时代精美的基础设施。