C# 多个kestrel无状态服务实例在服务结构的不同端口上运行
我已经在Visual Studio 2019中使用示例默认值创建了一个无状态服务(创建新项目->服务结构应用程序->命名项目和解决方案->无状态ASP.NET核心服务) 运行weather forecast应用程序而不做任何更改工作正常,我可以在Service Fabric explorer中看到该应用程序正在运行,并可以看到我的5个健康(本地开发)节点和1个绿色应用程序 如果我修改C# 多个kestrel无状态服务实例在服务结构的不同端口上运行,c#,azure,microservices,azure-service-fabric,service-fabric-stateless,C#,Azure,Microservices,Azure Service Fabric,Service Fabric Stateless,我已经在Visual Studio 2019中使用示例默认值创建了一个无状态服务(创建新项目->服务结构应用程序->命名项目和解决方案->无状态ASP.NET核心服务) 运行weather forecast应用程序而不做任何更改工作正常,我可以在Service Fabric explorer中看到该应用程序正在运行,并可以看到我的5个健康(本地开发)节点和1个绿色应用程序 如果我修改Local.5Node.xml将InstanceCount从1更改为-1 <?xml version="1.
Local.5Node.xml
将InstanceCount从1更改为-1
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SampleApp" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="SampleApp_ASPNETCORE_ENVIRONMENT" Value="Development" />
<Parameter Name="SampleApp_InstanceCount" Value="-1" />
</Parameters>
</Application>
在我在VS2019中运行的应用程序中,诊断窗口显示持续无法启动的进程:
进一步检查后,我发现新实例正试图在同一端口上旋转
端口分配在具有多个无状态web服务实例的Service Fabric中如何工作?是否需要具有反向代理的网关来发现每个实例?在没有自定义解决方案的service Fabric中是否可以自动缩放无状态web服务?Kestrel不支持端口共享,因此一旦一个服务声明该端口,在同一台机器上运行的其他服务(此处:您的开发机器)就不能
最简单的解决方法是在dev集群上运行时创建服务的1实例。解决此问题的另一种方法是在本地使用(随机)SF分配的端口:
完全省略ServiceManifest.xml
中的端点配置,然后
不要将端点名称传递给KestrelCommunicationListener
建造师
接下来,使用(例如)反向代理与您的服务进行通信
更多信息Kestrel不支持端口共享,因此一旦一个服务声明该端口,在同一台机器上运行的其他服务(此处:您的开发机器)就无法共享
最简单的解决方法是在dev集群上运行时创建服务的1实例。解决此问题的另一种方法是在本地使用(随机)SF分配的端口:
完全省略ServiceManifest.xml
中的端点配置,然后
不要将端点名称传递给KestrelCommunicationListener
建造师
接下来,使用(例如)反向代理与您的服务进行通信
更多信息