如何在开发集群上运行OWIN托管服务的多个实例?

rjd*_*eux 6 azure-service-fabric

我浏览了OWIN托管教程并开始运行,但是当我将InstanceCount设置为-1时,似乎该服务的每个实例在调用WebApp.Start时都试图在OpenAync方法中侦听端口80. .

我假设Service Fabric会在运行服务时动态管理端口,以避免端口冲突,但似乎并没有发生这种情况.

Sea*_*nna 8

InstanceCount为-1​​仅适用于在多机群集上运行的无状态服务.在这种情况下,每个节点都在自己的计算机上运行,​​因此您没有端口冲突,您可以配置Azure负载平衡器以通过托管这些实例的计算机循环流量.

在本地群集上,所有节点都在同一台机器上,因此如果它们尝试共享公共HTTP前缀,它们确实会发生冲突.要避免这种情况,只需将无状态服务的InstanceCount设置为1即可进行本地部署.

所有这些仅在您希望使用预定义端口与服务进行通信时才需要.如果未在服务清单中指定端口,则平台将在服务启动时自动分配一个端口.但是,客户有责任使用平台的名称解析API动态发现您的端点,这通常是不可取的.

因此,常见模式是让应用程序在预定义端口上侦听无状态前端,然后执行名称解析以将请求中继到其他服务.这些二级服务可以监听由平台动态分配的端口.