Azure Service Fabric 动态端口冲突

Azure Service Fabric Dyanamic Port Conflict

我一直想知道为什么 Service Fabric 不考虑端口冲突并在不同端口上重新托管服务。

我有多个应用程序包在运行时用于创建具有唯一名称的新服务,现在我知道我可能可以做一些花哨的步法来检查正在使用的端口号等,但我想知道是否有更简单的解决方案而不改变我创建新服务的方式?

要使用单个包启动服务,给它一个唯一的名称,并让 SF 给它一个动态端口,而不是尝试在与另一个包相同的节点上使用相同的端口。

例如: 包名:我的测试包 创建一个新服务:mytestService1 创建一个新服务:mytestService2

碰巧它们都在同一个节点上启动,具有相同的端口号,即使启动之间有很长的时间。

我通过将服务清单中的端口更改为零(之前留空)解决了我的问题。

<Endpoint Protocol="http" Name="EndpointHttp" Type="Input" Port="0"/>

这背后的原因显然是如果端口被遗漏或空白,Service Fabric 会尝试分配端口,就像您将其设置为 0 一样,该值会传递给 kestrel 服务器。

然后将 0 传递给 kestrel 服务器允许主机 OS 确定哪些端口可用,然后分配它们。

这样做也加快了我的服务启动时间。