Ubuntu
在公共雲中發現伺服器的最佳方法?
我想製作一個 ubuntu 伺服器映像以在公共雲中執行,以發現來自同一映像的其他伺服器何時上線。我想出了這個解決方案列表,但我不確定什麼是最好的?
可能的解決方案:
- 使用鏈路層發現協議 (LLDP) 的第 2 層多播,非常類似於 CDP
- 為自己分配一個連結本地地址,然後發送廣播
- Avahi(Linux 上的 zeroconf 實現,很像 Apple 的 Bonjour)
- 使用 DHCP 伺服器跟踪伺服器
更多可能的解決方案:(伺服器必須已經有一個 IP 地址)
- SNMP廣播/組播
- SSDP 多播消息(簡單服務發現協議)(在 UPnP 中使用)
- 我不確定,但可能是 m(ulticast)DNS 或 DNS-SD(服務發現)
還有更多發現節點的方法嗎?大型雲集群中通常會做什麼?
公共雲提供商通常不支持廣播/多播方法,因此任何依賴這些方法的解決方案都不是“最好的”。至少對於包含平台獨立性的重要組成部分的“最佳”值。
在單播領域,您有很多選擇,很大程度上取決於您想對這些圖像做什麼以及實際上是什麼服務在進行發現。
如果您完全在一個單一的雲基礎設施提供商中,常見的方法是詢問基礎設施那裡有什麼。您將獲得一個帶有 IP 地址的伺服器列表,然後您可以使用它來建構您的動態集群。
如果由於某種原因你不能這樣做,也許你在多個提供商上,或者你需要一個已知活動主機的列表,你將不得不使用某種特定於應用程序的方法來建構動態集群. 方法多種多樣,但我見過:
- 為節點提供一些提示以檢查它們何時上線,並且應用程序維護一個簽入列表並進行心跳以確保列表中只有活動節點。把它想像成比特種子播種機。
- 具有實際服務註冊服務的服務註冊,您已經列出了其中的一些。
- 使用自建註冊服務的服務註冊,例如從 Redis 拼湊出來的東西。
什麼對你最好取決於你在做什麼。但是首先要進行 API 查找,只有在那些對您不起作用時才會花哨。