Azure服务结构实例计数

我正在使用azure色服务面料进行POC。 在本地群集中部署我的服务,它在Local.xml中使用默认设置正常工作。

我更改实例计数的那一刻它正在抛出exception。 更改实例计数的选项在哪里? 基本上我现在尝试在两个节点上运行我的服务。 当默认值为1时,它工作正常。

InnerException:HResult = -2146233088 Message = Error -4091 EADDRINUSE地址已在使用中Source = Microsoft.AspNetCore.Server.Kestrel StatusCode = -4091

我的local.xml在这里复制

   

任何帮助真的很感激。

谢谢

根据Microsoft官方文档,您需要确保在部署到本地群集时只运行一个服务实例。否则,您将遇到与侦听同一端口的多个进程发生冲突。您可以在部署时设置多个实例到Azure。

请参阅文档: – https://azure.microsoft.com/en-us/documentation/articles/service-fabric-add-a-web-frontend/

使用本地sf群集时,如果已修复服务端点端口,请仅使用一个实例。 例如:

Service.Endpoint使用端口8090.这在ServiceManifest.xml中定义。 在本地集群中,实际上所有东西都只在一个节点上运行,即您的开发机器 如果您尝试使用硬定义端口创建2个相同服务的实例,那么您将获得Port已使用错误。

尝试更改为一个实例或将其移动到实际的Azure群集或删除硬编码的端口号。

我没有遇到过这个问题。

您可以使用结构客户端以编程方式更改实例计数:

 var fabricClient = new FabricClient(); var instanceCount = 3; var services = await fabricClient.QueryManager.GetServiceListAsync(new Uri("fabric:/MyMicroServiceApp")); var service = services.FirstOrDefault(e => e.ServiceName.AbsolutePath.Contains("MyService")); var updateDescription = new StatelessServiceUpdateDescription(); updateDescription.InstanceCount = instanceCount; await fabricClient.ServiceManager.UpdateServiceAsync(new Uri(service.ServiceName.AbsoluteUri), updateDescription); 

我用它来开发一个概念certificate,根据队列的大小增加工作进程的数量。 一旦更改了服务的实例计数,Service Fabric框架就会自动向/从节点部署/删除服务实例。

如果您正在运行某种类型的ASP.Net或Owin托管服务。 您必须使用-1的实例计数。 这将在每个节点上设置一个实例。 如果实例计数为2,则会获得2个实例,这些实例可能在同一节点上,也可能不在同一节点上。

我们遇到了类似的问题,并使用构建脚本解决了它。 您可以通过构建脚本替换ServiceManififest,也可以使用Tokenizer替换端口值。

在本地,您可以创建和安装更新/调整的软件包文件,并使用DeployFabricApplciation进行部署,并以此方式对其进行测试。