[英]How does azure load balancer support dynamic ports for service fabric cluster?
在ServiceManifest.xml文件中服務的端點配置中,Visual Studio通常創建以下信息:
<Resources>
<Endpoints>
<Endpoint Protocol="http" Name="ServiceEndpointHttp" Type="Input" Port="8304" />
</Endpoints>
</Resources>
如果刪除端口屬性及其值(如下所示),
<Resources>
<Endpoints>
<Endpoint Protocol="http" Name="ServiceEndpointHttp" Type="Input" />
</Endpoints>
</Resources>
服務結構運行時將為此服務分配一個動態端口。
由於所有端口都被相關的負載均衡器自動阻止,如何配置負載均衡器以便可以從外部訪問服務?
您可以為每個服務更新Azure負載平衡器,但是由於端口是動態的,所以這不是一個好主意。
最好使用反向代理,例如內置反向代理 。 它將接收所有傳入呼叫(在固定端口(如80)上)並將它們轉發到群集內的HTTP端點。
由於端點是使用命名服務在內部注冊的,因此內置的反向代理可以找到它們。
您也可以自己構建代理,並使用FabricClient.QueryManager解析服務端點。
根據Microsoft的說法,內置的反向代理並不安全。 它公開了所有端點甚至系統服務。 他們的文檔中有警告。 https://docs.microsoft.com/zh-cn/azure/service-fabric/service-fabric-reverseproxy
我們一直在開發.Net Core無狀態服務作為來賓可執行文件,而我們現在面臨的問題是安全性。 Microsoft顧問建議不要使用內置的反向代理。 現在,我們正在編寫自己的代理,它將僅公開我們要公開的端點。
我們已經編寫了一個ARM模板,該模板為Azure應用程序網關提供了公共IP和Azure Service Fabric群集。 對於每個Web API,我們都配置一個Azure Traffic Manager配置文件。 傳入呼叫從TM路由到APP網關,然后通過負載均衡器路由到VM Scale Set。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.