我浏览了 OWIN 托管教程并开始运行,但是当我将 InstanceCount 更改为 -1 时,似乎该服务的每个实例在调用 WebApp.Start 时都试图在 OpenAync 方法中侦听端口 80 .
我假设 Service Fabric 会在启动服务以避免端口冲突时动态管理端口,但似乎并没有发生这种情况。
我浏览了 OWIN 托管教程并开始运行,但是当我将 InstanceCount 更改为 -1 时,似乎该服务的每个实例在调用 WebApp.Start 时都试图在 OpenAync 方法中侦听端口 80 .
我假设 Service Fabric 会在启动服务以避免端口冲突时动态管理端口,但似乎并没有发生这种情况。
InstanceCount 为 -1 仅对在多机集群上运行的无状态服务有意义。在这种情况下,每个节点都在自己的计算机上运行,因此您不会遇到端口冲突,您可以将 Azure 负载均衡器配置为通过托管这些实例的计算机循环流量。
在本地集群上,所有节点都在同一台机器上,所以如果它们尝试共享一个公共的 HTTP 前缀,它们确实会发生冲突。为避免这种情况,只需将无状态服务的 InstanceCount 设置为 1 即可进行本地部署。
所有这些仅在您希望使用预定义端口与您的服务进行通信的情况下才需要。如果你没有在服务清单中指定端口,平台会在服务启动时自动分配一个。但是,客户端有责任使用平台的名称解析 API 动态发现您的端点,这通常是不可取的。
因此,常见的模式是让应用程序的无状态前端在预定义的端口上侦听,然后执行名称解析以将请求中继到其他服务。这些二级服务可以监听平台动态分配的端口。