[英]How does Service Fabric Choose a Port to Host a Service on?
我正在使用C#在Service Fabric上實現GRPC。 GRPC服務器需要ServerPort(負責將ssl憑證綁定到端口)和服務定義(負責在路徑上映射請求到方法委托)。 我做了一個通信監聽器,它報告分區和副本ID以及FQDN:端口。 這允許客戶端正確地確保其與正確的分區/副本進行通信。 我在服務mainifest中聲明了一個Endpoint資源,並將端口留空,表示我希望service fabric分配一個隨機端口。 我在本地開發中遇到的問題(我還沒有把它推到天藍色的集群中)是復制品似乎死了,因為它們被分配了相同的端口。 我還應該注意,我告訴聽眾聽二級副本。
我的問題是:
Service Fabric保留應用程序端口范圍,該范圍在您的群集設置中定義(如果您在Azure中托管,則在Resource Manager模板中)。 當您將端口空白留在端點資源中時,SF將從此范圍中選擇尚未分配給計算機上其他服務的端口。
需要注意的重要一點是,端口分配是按主機進程進行的 ,默認主機進程模式是共享主機進程,其中相同服務類型的副本可以共享主機進程。 在這種情況下,同一主機進程中的副本將獲得相同的端口。
有幾種方法可以解決這個問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.