将服务结构应用程序部署到公共服务结构集群后出现“分区低于目标副本或实例计数”错误
Posted
技术标签:
【中文标题】将服务结构应用程序部署到公共服务结构集群后出现“分区低于目标副本或实例计数”错误【英文标题】:"Partition is below target replica or instance count" error after deploying service fabric application to public service fabric cluster 【发布时间】:2016-04-25 20:17:54 【问题描述】:我创建了一个服务结构无状态可靠服务,在其中我使用 OWIN 来托管一个 Web API。当我将应用程序部署到本地集群时,它运行良好,我可以调用 API。
当我将应用程序部署到公共集群时,部署成功完成,但是当我使用 Service Fabric Explorer 检查集群时,
副本似乎处于“构建中”状态一段时间, 然后它移动到“警告”状态,最后结构浏览器中的整个树变红了,分区下不再存在副本。 并显示健康状态为错误。 显示错误“分区低于目标副本或实例计数”。
我还使用了允许的端口来创建 OWIN Web 服务器。
当我在本地集群中部署应用程序时不会发生这种情况。 Service Fabric Explorer Screenshot for public cluster , Service Fabric Explorer Screenshot for Local Cluster
【问题讨论】:
【参考方案1】:大多数情况下,此错误实际上只是意味着“我们无法启动您的服务”。如果您的服务中存在未处理的异常导致其无法启动,您可以在 Service Fabric Explorer 中深入了解您的服务实例或副本,以在多次尝试后无法启动时查看堆栈跟踪。
顺便说一句,我建议使用更新的基于 Web 的 Service Fabric Explorer。只需将 Web 浏览器指向集群上的 19080 端口:例如,http://mycluster.eastus.cloudapp.azure.com:19080/Explorer/index.htm。
【讨论】:
当我从 Visual Studio 调试解决方案时,我在输出窗口中看到了一个聚合异常。但仍然在本地集群中工作。所以我将所有代码移到了一个新的解决方案中,然后它在公共集群中工作。 问题是,我更新了 Servcie 结构的 nuget 包,公共集群不支持新版本,我改回了 nuget 版本,它工作正常。【参考方案2】:只是我的一点评论..在解决此错误数小时后,问题出在我的C:\
驱动器上的磁盘空间不足。将可用空间从大约 3GB 增加到 8GB 后,错误消失了。
如此处所述:https://github.com/Azure/service-fabric-issues/issues/15
今天的默认安装需要大约 10Gb 的磁盘空间
【讨论】:
我猜微软将 8GB 称为“今天大约 10Gb 的磁盘空间”;-) 我有同样的问题,我找不到任何迹象表明是什么导致了问题,释放磁盘空间后它运行良好【参考方案3】:我遇到了这个问题,这是一个配置错误。
19080端口的Service Fabric explorer报错:
Error event: SourceId='System.FM', Property='State'.
分区低于目标副本或实例计数。 结构:/MyApp/MyService 3 2 [partitionid] N/P RD _Node_0 Up [长数字] (显示 1 个副本中的 1 个。可用副本总数:1。)
在我的 ApplicationManifest.xml 我有:
<Service Name="MyService">
<StatefulService ServiceTypeName="MyServiceType" TargetReplicaSetSize=**"3"** MinReplicaSetSize=**"2"**>
<SingletonPartition />
</StatefulService>
</Service>
将 MinReplicaSetSize 减少到 1 并将 TargetReplicaSetSize 减少到 1 并重新发布解决了我的问题。
Classic Eye-Dee-Ten-Tee (ID10T) 配置问题:-D
【讨论】:
【参考方案4】:我正在使用 Azure Service Fabric 部署我的应用程序并收到此错误。
经过调查,发现是因为“TargetReplicaSetSize”和“MinReplicaSetSize”超过了我的节点数。
为解决问题,将ApplicationParameters/cloud.xml中的“PartitionCount”、“TargetReplicaSetSize”、“MinReplicaSetSize”改为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:/Voting" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="xxx_PartitionCount" Value="1" />
<Parameter Name="xxx_MinReplicaSetSize" Value="1" />
</Parameters>
</Application>
【讨论】:
【参考方案5】:另一个原因是,如果您创建了无状态服务(检查 ApplicationPackageRoot/ApplicationManifest.xml),但该服务实现了有状态服务。
【讨论】:
【参考方案6】:我刚刚收到相同的错误消息。原来我的容器还没有建成。过了几分钟,然后状态变为 OK。
【讨论】:
【参考方案7】:我今天遇到了同样的问题,除了其他答案提到的可能原因之外,另一个可能的原因是您使用的是旧版本的 SF runtime/SDK/library。
请确保您的项目中的 SF 运行时、SDK 和引用的 DLL 是最新的!
【讨论】:
以上是关于将服务结构应用程序部署到公共服务结构集群后出现“分区低于目标副本或实例计数”错误的主要内容,如果未能解决你的问题,请参考以下文章