Service Fabric 多实例问题
Service Fabric multiple instances issue
我注意到,当我发布我的 Service Fabric(在 5 节点集群模式下)应用程序(具有 2 个无状态服务)时,它立即在 5 个节点上 运行s。
我的 ApplicationManifest.xml 有这个:
<Parameters>
<Parameter Name="MyStateless1_InstanceCount" DefaultValue="-1" />
<Parameter Name="MyStateless_InstanceCount" DefaultValue="-1" />
</Parameters>
我的 Local.5Node.xml 有这个:
<Parameters>
<Parameter Name="MyStateless1_InstanceCount" Value="1" />
<Parameter Name="MyStateless_InstanceCount" Value="1" />
</Parameters>
我尝试以多种方式更改两个 xml 中的值,但它总是从 5 个节点开始。我注意到这一点是因为我在一个端口上有一个服务 ServiceInstanceListener 并且每次我收到警告因为它试图在 5 个节点上启动。
我该如何解决这个问题?
我也是 Service Fabric 的新手,所以我还有几个问题:
- 是否可以同时发布几个应用程序,比如一些way/command同时发布它们,或者是唯一的手动方式一个一个地发布?
- 当我有状态服务时,我明白它需要在 5 节点集群模式下 运行 并且在至少三个节点上需要 运行s。这是正确的吗?
编辑:
编辑 2:
集群清单
<ClusterManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="DevCluster" Version="0" Description="This is a generated file. Do not modify." xmlns="http://schemas.microsoft.com/2011/01/fabric">
<NodeTypes>
<NodeType Name="NodeType0">
<Endpoints>
<ClientConnectionEndpoint Port="19000" />
<LeaseDriverEndpoint Port="19001" />
<ClusterConnectionEndpoint Port="19002" />
<HttpGatewayEndpoint Port="19080" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19081" Protocol="http" />
<ServiceConnectionEndpoint Port="19006" />
<ApplicationEndpoints StartPort="30001" EndPort="31000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType0" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType1">
<Endpoints>
<ClientConnectionEndpoint Port="19010" />
<LeaseDriverEndpoint Port="19011" />
<ClusterConnectionEndpoint Port="19012" />
<HttpGatewayEndpoint Port="19082" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19083" Protocol="http" />
<ServiceConnectionEndpoint Port="19016" />
<ApplicationEndpoints StartPort="31001" EndPort="32000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType1" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType2">
<Endpoints>
<ClientConnectionEndpoint Port="19020" />
<LeaseDriverEndpoint Port="19021" />
<ClusterConnectionEndpoint Port="19022" />
<HttpGatewayEndpoint Port="19084" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19085" Protocol="http" />
<ServiceConnectionEndpoint Port="19026" />
<ApplicationEndpoints StartPort="32001" EndPort="33000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType2" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType3">
<Endpoints>
<ClientConnectionEndpoint Port="19030" />
<LeaseDriverEndpoint Port="19031" />
<ClusterConnectionEndpoint Port="19032" />
<HttpGatewayEndpoint Port="19086" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19087" Protocol="http" />
<ServiceConnectionEndpoint Port="19036" />
<ApplicationEndpoints StartPort="33001" EndPort="34000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType3" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType4">
<Endpoints>
<ClientConnectionEndpoint Port="19040" />
<LeaseDriverEndpoint Port="19041" />
<ClusterConnectionEndpoint Port="19042" />
<HttpGatewayEndpoint Port="19088" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19089" Protocol="http" />
<ServiceConnectionEndpoint Port="19046" />
<ApplicationEndpoints StartPort="34001" EndPort="35000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType4" />
</PlacementProperties>
</NodeType>
</NodeTypes>
<Infrastructure>
<WindowsServer IsScaleMin="true">
<NodeList>
<Node NodeName="_Node_0" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType0" FaultDomain="fd:/0" UpgradeDomain="0" />
<Node NodeName="_Node_1" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType1" FaultDomain="fd:/1" UpgradeDomain="1" />
<Node NodeName="_Node_2" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType2" FaultDomain="fd:/2" UpgradeDomain="2" />
<Node NodeName="_Node_3" IPAddressOrFQDN="DESKTOP-S5LLM1H" NodeTypeRef="NodeType3" FaultDomain="fd:/3" UpgradeDomain="3" />
<Node NodeName="_Node_4" IPAddressOrFQDN="DESKTOP-S5LLM1H" NodeTypeRef="NodeType4" FaultDomain="fd:/4" UpgradeDomain="4" />
</NodeList>
</WindowsServer>
</Infrastructure>
<FabricSettings>
<Section Name="ApplicationGateway/Http">
<Parameter Name="IsEnabled" Value="true" />
</Section>
<Section Name="ClusterManager">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
<Parameter Name="UpgradeStatusPollInterval" Value="5" />
<Parameter Name="UpgradeHealthCheckInterval" Value="5" />
<Parameter Name="FabricUpgradeHealthCheckInterval" Value="5" />
</Section>
<Section Name="Diagnostics">
<Parameter Name="ProducerInstances" Value="ServiceFabricEtlFile,ServiceFabricPerfCtrFolder" />
<Parameter Name="MaxDiskQuotaInMB" Value="10240" />
<Parameter Name="EnableCircularTraceSession" Value="true" />
</Section>
<Section Name="DnsService">
<Parameter Name="InstanceCount" Value="1" />
<Parameter Name="IsEnabled" Value="True" />
<Parameter Name="AllowMultipleListeners" Value="true" />
<Parameter Name="EnablePartitionedQuery" Value="true" />
</Section>
<Section Name="EventStoreService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="FailoverManager">
<Parameter Name="ExpectedClusterSize" Value="4" />
<Parameter Name="IsSingletonReplicaMoveAllowedDuringUpgrade" Value="True" />
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
<Parameter Name="ReconfigurationTimeLimit" Value="20" />
<Parameter Name="BuildReplicaTimeLimit" Value="20" />
<Parameter Name="CreateInstanceTimeLimit" Value="20" />
<Parameter Name="PlacementTimeLimit" Value="20" />
</Section>
<Section Name="FaultAnalysisService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="Federation">
<Parameter Name="NodeIdGeneratorVersion" Value="V4" />
<Parameter Name="ProcessAssertExitTimeout" Value="86400" />
<Parameter Name="UnresponsiveDuration" Value="0" />
<Parameter Name="DiskProbeUnresponsiveDuration" Value="0" />
<Parameter Name="MemoryProbeUnresponsiveDuration" Value="0" />
<Parameter Name="NetworkProbeUnresponsiveDuration" Value="0" />
</Section>
<Section Name="Hosting">
<Parameter Name="CacheCleanupScanInterval" Value="300" />
<Parameter Name="DeactivationGraceInterval" Value="10" />
<Parameter Name="DeactivationScanInterval" Value="60" />
<Parameter Name="EnableProcessDebugging" Value="true" />
<Parameter Name="EndpointProviderEnabled" Value="true" />
<Parameter Name="RunAsPolicyEnabled" Value="true" />
<Parameter Name="ServiceTypeRegistrationTimeout" Value="20" />
</Section>
<Section Name="HttpGateway">
<Parameter Name="IsEnabled" Value="true" />
</Section>
<Section Name="ImageStoreService">
<Parameter Name="MinReplicaSetSize" Value="1" />
<Parameter Name="TargetReplicaSetSize" Value="1" />
</Section>
<Section Name="Management">
<Parameter Name="EnableDeploymentAtDataRoot" Value="true" />
<Parameter Name="ImageCachingEnabled" Value="false" />
<Parameter Name="ImageStoreConnectionString" Value="file:C:\SfDevCluster\Data\ImageStoreShare" />
</Section>
<Section Name="NamingService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="PlacementAndLoadBalancing">
<Parameter Name="MinLoadBalancingInterval" Value="300" />
<Parameter Name="QuorumBasedReplicaDistributionPerFaultDomains" Value="true" />
<Parameter Name="TraceCRMReasons" Value="false" />
</Section>
<Section Name="ReconfigurationAgent">
<Parameter Name="IsDeactivationInfoEnabled" Value="true" />
<Parameter Name="LocalHealthReportingTimerInterval" Value="5" />
<Parameter Name="RAUpgradeProgressCheckInterval" Value="3" />
<Parameter Name="ServiceApiHealthDuration" Value="20" />
<Parameter Name="ServiceReconfigurationApiHealthDuration" Value="20" />
</Section>
<Section Name="Security">
<Parameter Name="ClusterCredentialType" Value="None" />
<Parameter Name="ServerAuthCredentialType" Value="None" />
</Section>
<Section Name="ServiceFabricEtlFile">
<Parameter Name="DataDeletionAgeInDays" Value="3" />
<Parameter Name="EtlReadIntervalInMinutes" Value="5" />
<Parameter Name="IsEnabled" Value="true" />
<Parameter Name="ProducerType" Value="EtlFileProducer" />
</Section>
<Section Name="ServiceFabricPerfCtrFolder">
<Parameter Name="DataDeletionAgeInDays" Value="3" />
<Parameter Name="FolderType" Value="ServiceFabricPerformanceCounters" />
<Parameter Name="IsEnabled" Value="true" />
<Parameter Name="ProducerType" Value="FolderProducer" />
</Section>
<Section Name="Setup">
<Parameter Name="FabricDataRoot" Value="C:\SfDevCluster\Data" />
<Parameter Name="FabricLogRoot" Value="C:\SFDevCluster\Log" />
<Parameter Name="SkipFirewallConfiguration" Value="true" />
</Section>
<Section Name="Trace/Etw">
<Parameter Name="Level" Value="4" />
</Section>
<Section Name="TransactionalReplicator">
<Parameter Name="CheckpointThresholdInMB" Value="64" />
</Section>
</FabricSettings>
</ClusterManifest>
您介意分享您的结构浏览器的快照吗?我在 5 个节点中使用我的示例尝试了您的场景,它按预期工作 运行 每个服务的 1 个实例,如下所示。另外,这是我的代码示例:https://github.com/krish-gh/SFSample
当我在应用程序参数文件部分发布应用程序时,默认选择了 ApplicationParametas\Cloud.xaml
而不是 ApplicationParametas\Local.5Node.xaml
我注意到,当我发布我的 Service Fabric(在 5 节点集群模式下)应用程序(具有 2 个无状态服务)时,它立即在 5 个节点上 运行s。
我的 ApplicationManifest.xml 有这个:
<Parameters>
<Parameter Name="MyStateless1_InstanceCount" DefaultValue="-1" />
<Parameter Name="MyStateless_InstanceCount" DefaultValue="-1" />
</Parameters>
我的 Local.5Node.xml 有这个:
<Parameters>
<Parameter Name="MyStateless1_InstanceCount" Value="1" />
<Parameter Name="MyStateless_InstanceCount" Value="1" />
</Parameters>
我尝试以多种方式更改两个 xml 中的值,但它总是从 5 个节点开始。我注意到这一点是因为我在一个端口上有一个服务 ServiceInstanceListener 并且每次我收到警告因为它试图在 5 个节点上启动。 我该如何解决这个问题?
我也是 Service Fabric 的新手,所以我还有几个问题:
- 是否可以同时发布几个应用程序,比如一些way/command同时发布它们,或者是唯一的手动方式一个一个地发布?
- 当我有状态服务时,我明白它需要在 5 节点集群模式下 运行 并且在至少三个节点上需要 运行s。这是正确的吗?
编辑:
编辑 2: 集群清单
<ClusterManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="DevCluster" Version="0" Description="This is a generated file. Do not modify." xmlns="http://schemas.microsoft.com/2011/01/fabric">
<NodeTypes>
<NodeType Name="NodeType0">
<Endpoints>
<ClientConnectionEndpoint Port="19000" />
<LeaseDriverEndpoint Port="19001" />
<ClusterConnectionEndpoint Port="19002" />
<HttpGatewayEndpoint Port="19080" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19081" Protocol="http" />
<ServiceConnectionEndpoint Port="19006" />
<ApplicationEndpoints StartPort="30001" EndPort="31000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType0" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType1">
<Endpoints>
<ClientConnectionEndpoint Port="19010" />
<LeaseDriverEndpoint Port="19011" />
<ClusterConnectionEndpoint Port="19012" />
<HttpGatewayEndpoint Port="19082" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19083" Protocol="http" />
<ServiceConnectionEndpoint Port="19016" />
<ApplicationEndpoints StartPort="31001" EndPort="32000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType1" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType2">
<Endpoints>
<ClientConnectionEndpoint Port="19020" />
<LeaseDriverEndpoint Port="19021" />
<ClusterConnectionEndpoint Port="19022" />
<HttpGatewayEndpoint Port="19084" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19085" Protocol="http" />
<ServiceConnectionEndpoint Port="19026" />
<ApplicationEndpoints StartPort="32001" EndPort="33000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType2" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType3">
<Endpoints>
<ClientConnectionEndpoint Port="19030" />
<LeaseDriverEndpoint Port="19031" />
<ClusterConnectionEndpoint Port="19032" />
<HttpGatewayEndpoint Port="19086" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19087" Protocol="http" />
<ServiceConnectionEndpoint Port="19036" />
<ApplicationEndpoints StartPort="33001" EndPort="34000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType3" />
</PlacementProperties>
</NodeType>
<NodeType Name="NodeType4">
<Endpoints>
<ClientConnectionEndpoint Port="19040" />
<LeaseDriverEndpoint Port="19041" />
<ClusterConnectionEndpoint Port="19042" />
<HttpGatewayEndpoint Port="19088" Protocol="http" />
<HttpApplicationGatewayEndpoint Port="19089" Protocol="http" />
<ServiceConnectionEndpoint Port="19046" />
<ApplicationEndpoints StartPort="34001" EndPort="35000" />
</Endpoints>
<PlacementProperties>
<Property Name="NodeTypeName" Value="NodeType4" />
</PlacementProperties>
</NodeType>
</NodeTypes>
<Infrastructure>
<WindowsServer IsScaleMin="true">
<NodeList>
<Node NodeName="_Node_0" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType0" FaultDomain="fd:/0" UpgradeDomain="0" />
<Node NodeName="_Node_1" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType1" FaultDomain="fd:/1" UpgradeDomain="1" />
<Node NodeName="_Node_2" IPAddressOrFQDN="DESKTOP-S5LLM1H" IsSeedNode="true" NodeTypeRef="NodeType2" FaultDomain="fd:/2" UpgradeDomain="2" />
<Node NodeName="_Node_3" IPAddressOrFQDN="DESKTOP-S5LLM1H" NodeTypeRef="NodeType3" FaultDomain="fd:/3" UpgradeDomain="3" />
<Node NodeName="_Node_4" IPAddressOrFQDN="DESKTOP-S5LLM1H" NodeTypeRef="NodeType4" FaultDomain="fd:/4" UpgradeDomain="4" />
</NodeList>
</WindowsServer>
</Infrastructure>
<FabricSettings>
<Section Name="ApplicationGateway/Http">
<Parameter Name="IsEnabled" Value="true" />
</Section>
<Section Name="ClusterManager">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
<Parameter Name="UpgradeStatusPollInterval" Value="5" />
<Parameter Name="UpgradeHealthCheckInterval" Value="5" />
<Parameter Name="FabricUpgradeHealthCheckInterval" Value="5" />
</Section>
<Section Name="Diagnostics">
<Parameter Name="ProducerInstances" Value="ServiceFabricEtlFile,ServiceFabricPerfCtrFolder" />
<Parameter Name="MaxDiskQuotaInMB" Value="10240" />
<Parameter Name="EnableCircularTraceSession" Value="true" />
</Section>
<Section Name="DnsService">
<Parameter Name="InstanceCount" Value="1" />
<Parameter Name="IsEnabled" Value="True" />
<Parameter Name="AllowMultipleListeners" Value="true" />
<Parameter Name="EnablePartitionedQuery" Value="true" />
</Section>
<Section Name="EventStoreService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="FailoverManager">
<Parameter Name="ExpectedClusterSize" Value="4" />
<Parameter Name="IsSingletonReplicaMoveAllowedDuringUpgrade" Value="True" />
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
<Parameter Name="ReconfigurationTimeLimit" Value="20" />
<Parameter Name="BuildReplicaTimeLimit" Value="20" />
<Parameter Name="CreateInstanceTimeLimit" Value="20" />
<Parameter Name="PlacementTimeLimit" Value="20" />
</Section>
<Section Name="FaultAnalysisService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="Federation">
<Parameter Name="NodeIdGeneratorVersion" Value="V4" />
<Parameter Name="ProcessAssertExitTimeout" Value="86400" />
<Parameter Name="UnresponsiveDuration" Value="0" />
<Parameter Name="DiskProbeUnresponsiveDuration" Value="0" />
<Parameter Name="MemoryProbeUnresponsiveDuration" Value="0" />
<Parameter Name="NetworkProbeUnresponsiveDuration" Value="0" />
</Section>
<Section Name="Hosting">
<Parameter Name="CacheCleanupScanInterval" Value="300" />
<Parameter Name="DeactivationGraceInterval" Value="10" />
<Parameter Name="DeactivationScanInterval" Value="60" />
<Parameter Name="EnableProcessDebugging" Value="true" />
<Parameter Name="EndpointProviderEnabled" Value="true" />
<Parameter Name="RunAsPolicyEnabled" Value="true" />
<Parameter Name="ServiceTypeRegistrationTimeout" Value="20" />
</Section>
<Section Name="HttpGateway">
<Parameter Name="IsEnabled" Value="true" />
</Section>
<Section Name="ImageStoreService">
<Parameter Name="MinReplicaSetSize" Value="1" />
<Parameter Name="TargetReplicaSetSize" Value="1" />
</Section>
<Section Name="Management">
<Parameter Name="EnableDeploymentAtDataRoot" Value="true" />
<Parameter Name="ImageCachingEnabled" Value="false" />
<Parameter Name="ImageStoreConnectionString" Value="file:C:\SfDevCluster\Data\ImageStoreShare" />
</Section>
<Section Name="NamingService">
<Parameter Name="MinReplicaSetSize" Value="3" />
<Parameter Name="TargetReplicaSetSize" Value="3" />
</Section>
<Section Name="PlacementAndLoadBalancing">
<Parameter Name="MinLoadBalancingInterval" Value="300" />
<Parameter Name="QuorumBasedReplicaDistributionPerFaultDomains" Value="true" />
<Parameter Name="TraceCRMReasons" Value="false" />
</Section>
<Section Name="ReconfigurationAgent">
<Parameter Name="IsDeactivationInfoEnabled" Value="true" />
<Parameter Name="LocalHealthReportingTimerInterval" Value="5" />
<Parameter Name="RAUpgradeProgressCheckInterval" Value="3" />
<Parameter Name="ServiceApiHealthDuration" Value="20" />
<Parameter Name="ServiceReconfigurationApiHealthDuration" Value="20" />
</Section>
<Section Name="Security">
<Parameter Name="ClusterCredentialType" Value="None" />
<Parameter Name="ServerAuthCredentialType" Value="None" />
</Section>
<Section Name="ServiceFabricEtlFile">
<Parameter Name="DataDeletionAgeInDays" Value="3" />
<Parameter Name="EtlReadIntervalInMinutes" Value="5" />
<Parameter Name="IsEnabled" Value="true" />
<Parameter Name="ProducerType" Value="EtlFileProducer" />
</Section>
<Section Name="ServiceFabricPerfCtrFolder">
<Parameter Name="DataDeletionAgeInDays" Value="3" />
<Parameter Name="FolderType" Value="ServiceFabricPerformanceCounters" />
<Parameter Name="IsEnabled" Value="true" />
<Parameter Name="ProducerType" Value="FolderProducer" />
</Section>
<Section Name="Setup">
<Parameter Name="FabricDataRoot" Value="C:\SfDevCluster\Data" />
<Parameter Name="FabricLogRoot" Value="C:\SFDevCluster\Log" />
<Parameter Name="SkipFirewallConfiguration" Value="true" />
</Section>
<Section Name="Trace/Etw">
<Parameter Name="Level" Value="4" />
</Section>
<Section Name="TransactionalReplicator">
<Parameter Name="CheckpointThresholdInMB" Value="64" />
</Section>
</FabricSettings>
</ClusterManifest>
您介意分享您的结构浏览器的快照吗?我在 5 个节点中使用我的示例尝试了您的场景,它按预期工作 运行 每个服务的 1 个实例,如下所示。另外,这是我的代码示例:https://github.com/krish-gh/SFSample
当我在应用程序参数文件部分发布应用程序时,默认选择了 ApplicationParametas\Cloud.xaml
而不是 ApplicationParametas\Local.5Node.xaml