如何阻止特定Service Fabric节点的服务升级?

时间:2018-07-26 17:27:47

标签: devops-services azure-service-fabric

问题出现在独立的Service Fabric群集中。

我需要将服务发布到专用计算机上的指定节点。我还想阻止当前服务在新节点上分配。 我了解了位置约束并了解了这个想法,但是当我向Service Fabric群集中添加新节点时,将InstanceCount参数设置为-1的当前服务会分配给新节点。如何避免这种情况?我必须创建一个新的节点类型吗?还是有任何限制?

1 个答案:

答案 0 :(得分:0)

Service Fabric具有NodeTypes的概念,用于标识配置相同的Nodes \ Machines \ VMs池。如果您的工作负载具有需要特定硬件/软件的特定要求,那么场景可以是一个接收作业的API,另一个是运行GPU计算应用程序的后台作业,并且您想将这些节点的负载隔离到特定的应用程序中,到:

  • 创建一个托管API的NodeType,在这里称为 FrontEntNodeType ,这将是您的api部署到的资源池。在您的API服务中,您必须添加放置约束NodeType == FrontEntNodeType

  • 创建一个用于承载Worker的NodeType,让我们在此处调用 GPUWorkerNodeType ,在您的worker服务中,您必须添加放置约束NodeType == GPUWorkerNodeType

部署服务时,它们将针对正确的计算机,并且只有具有 GPUWorkerNodeType 约束的服务才会进入GPU节点以处理工作。

  

放置约束的主要特点是:如果未在服务上指定PlacementContraint,它将进入任何可用于接收负载的节点。因此,它不会限制没有放置限制的已部署旧服务,您将不得不更新这些服务以保持集群整洁。

您可以使用“节点属性”执行相同的操作,默认情况下,节点包含属性NodeName和NodeType。您可以在同一NodeType上让具有不同框架版本的节点参与,如果要在应用到所有节点之前升级某些节点上的框架以验证负载和行为,则可以使用新框架版本升级一些节点,添加一个类似于DotNetFrameworkVersion = 4.7的NodeProperty,并使用DotNetFrameworkVersion==4.7和其他(DotNetFrameworkVersion!=4.7)

放置一些服务

您可以在以下链接上找到这些信息: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-resource-manager-cluster-description#node-properties-and-placement-constraints