2016-11-18 101 views
0

我已經設置了三個節點的獨立羣集。我在包含三個服務的集羣上放置了一個應用程序,應用程序被配置爲每個服務的一個實例將駐留在每個節點上。在這三種服務中,其中一種是前端服務,它接收來自外部客戶端的請求,然後與另外兩種服務(不能從羣集外部尋址)通信以獲取響應所需的信息。已編寫外部客戶端程序通過http請求與前端服務進行通信。目前,此外部客戶端必須使用節點IP地址和端口將其請求發送到特定服務實例。我使用這種方法遇到的問題是,如果由外部客戶端尋址的節點出現故障,客戶端不再能夠尋址服務,儘管前端服務仍在兩個其他節點上運行。服務結構:獨立羣集上的尋址服務

這是我的問題:有沒有辦法讓外部客戶端通過Service Fabric來調用前端服務,而不指定特定的節點進行通信?我的希望是,如果接收請求的原始節點關閉,這種通信方法將允許將請求路由到備用節點。

回答

1

您應該在羣集前使用load balancer將流量分配到您的前端服務實例。如果負載均衡器不響應用戶請求,則應將負載均衡器配置爲使節點脫離負載平衡器的旋轉。這有助於保護您的服務和用戶的中斷。

如果您的用戶位於可信邊界內(例如,Intranet用戶),則負載均衡器的替代方案將要求客戶端應用程序首先執行service address look-up with Service Fabric's naming service,這將爲您提供每個無狀態服務實例的端點列表這是可用的。再一次,你並不是真的想把它暴露給不信任的用戶,因爲他們很容易濫用或超載它。如果你這樣做,你依靠你的客戶端應用程序通過挑選一個隨機實例來提供負載平衡。但真正你應該做的是獲得負載平衡器。