一千萬個為什麽

搜索

如何部署Envoy EDS/SDS



這是一個微服務部署問題。您將如何部署Envoy SDS(服務發現服務),以便其他特使代理可以找到SDS服務器主機,以便發現構建服務網格的其他服務。我應該把它放在帶有DNS名稱(單點故障)的負載均衡器後面,還是只在每臺機器上本地運行SDS,以便其他微服務可以訪問它?或者是否有更好的部署方式可以將SDS群集動態添加到envoy配置中而不會出現單點故障?

轉載註明原文: 如何部署Envoy EDS/SDS

一共有 2 個回答:

使用跨多個SDS服務器的負載均衡器將其置於DNS名稱後面是合理可用性的良好設置。如果SDS關閉,Envoy很容易不會更新,所以它通常不是最關鍵的故障 - 新的主機和服務根本不會被添加到Envoy的集群/端點模型中。

如果需要更高的可用性,可以設置多個群集。如果您向引導程序配置添加多個條目,Envoy將在它們之間進行故障轉移。您可以指定多個DNS名稱或多個IP。

我最終直接在私有DNS區域下列出了SDS/EDS。但是,這意味著需要有一個靜態端口,SDS會在其放置的任何盒子上偵聽,而其他所有服務都必須將其作為已知常量傳遞。因此,後端微服務將為可用的SDS服務器獲取一組ips,以便檢索應用服務端點信息。這不包括負載均衡器。它可以使用DNS支持的負載平衡功能。 SDS使用腳本將自己心跳到DNS。它在AWS中實現,因此SDS在ECS容器中運行,由ECS集群管理服務自動放置,SDS服務器中的心跳腳本使用AWS元數據服務獲取並向DNS報告其IP地址。 這種方法意味著停機時間非常短,因為DNS服務器幾乎不會失敗。但是我們沒有得到先進的負載平衡。也比在每個ec2主機中安裝SDS更好,因為它將花費更少的資源,並且不會遇到特定盒子中的所有微服務因其本地sds服務器失敗而失敗的可能性。