簡體   English   中英

是否需要調整服務結構負載均衡器?

[英]service fabric load-balancer tweak needed or not?

有關服務結構的大多數示例表明,在部署之后,群集端點就像服務清單中所給出的那樣神奇地出現, eg: <cluster-url>:port/api/home

論壇上的一些人提到調整負載平衡器以允許訪問端口。

為什么意見不同? 哪種方法正確? 當我嘗試時,我永遠無法訪問azure群集中的已部署api /端點(是否調整了負載均衡器)。 單一框雖然有效。

大多數人在構建SF應用程序時會忘記的主要細節是,它們是在構建分布式應用程序,當您在集群中部署一個服務時,您需要一種找到它的方法,並且在某些情況下它可以在集群中移動,因此解決方案必須能夠反映這些分布。

它在本地工作,因為您有一個終結點(localhost(127.0.0.1)>服務),並且始終可以在其中找到您的應用程序。

在SF上,您命中了一個將映射到負載均衡器的域,該域將映射到一組計算機,並且其中一台計算機可能在其中運行了您的應用程序(域> LB IP>節點>服務)。

您需要知道的第一件事是:

  • 您的服務可能不會在負載均衡器后面的所有節點(機器)上運行,當負載均衡器向該節點發送請求時,如果失敗,則LB不會在另一個節點上重試,而是將這些請求轉發給隨機節點,並且在大多數情況下,它會保持打開連接到同一台計算機。 如果您需要在所有節點上運行服務,請將實例計數設置為-1,並且可能僅通過打開LB上的端口即可看到它正常工作。

  • 每個NodeType前面都有一個負載均衡器,因此,請始終在服務上設置放置約束,以避免它在未暴露在外部的其他NodeType上啟動

  • 應用程序打開的每個端口的確會在節點上打開,如果需要外部訪問,則必須在LoadBalancer中手動打開,或通過腳本打開,SF分配給服務的端口應在內部進行管理以避免端口沖突在同一節點上運行的服務之間,SF不會打開LB中的端口進行外部訪問。

有很多方法可以公開這些服務,您也可以嘗試:

  • 用戶使用一個ReverseProxy,就像一個將代理對群集中所服務的調用進行代理的bulti-in一樣 ,無論它們在哪里。
  • 將NGINX用作API網關或反向代理,並將其配置為僅調用特定服務,在這種情況下,您需要向其提供服務地址,因此您需要在服務啟動或停止時刷新列表。
  • 使用Azure API管理公開在SF上托管的API

在此處輸入圖片說明 自定義端點幫助說:“自定義端點允許連接到在此節點類型上運行的應用程序。輸入由逗號分隔的端點。”。 它只能在創建集群時設置。

因此,顯然如果不在此處設置端口,外界將永遠無法訪問該端口。 用戶在2016年的感受也是如此。

因為前面有一個負載平衡器,並且如果我們將一個從端口x(public)到端口y(后端池)的探針放置,並且如果我們在所有節點的防火牆中打開端口y,那么它也應該起作用。 如何打開端口。

如果在servicemanifest中提到端口(例如2345),會發生什么情況? 然后,SF為我們在防火牆中打開了一個端口,看起來像這樣。 並且如果Loadbalancer中有一個指向2345的探針,則它應該可以工作。

在此處輸入圖片說明

因此,除非負載均衡器中有我們手動設置的探針,否則它不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM