该问题发生在独立的Service Fabric群集中。
我需要将我的服务发布到专用机器上的指定节点。我还想阻止当前服务在新节点上分配。我阅读了关于放置约束并理解了这个想法,但是当我向Service Fabric集群添加一个新节点时,一个设置为-1的InstanceCount参数的当前服务在我的新节点上分配。我该如何避免这样的情况?我是否必须创建新的节点类型?或者它有任何约束吗?
Service Fabric具有NodeTypes的概念,用于标识具有相同配置的Nodes \ Machines \ VM池。如果您的工作负载具有需要特定硬件\软件的特定要求,则场景可以是接收作业的API,以及运行GPU计算应用程序的后台作业,并且您希望将负载与这些节点隔离到您的特定应用程序,至:
NodeType == FrontEntNodeType
NodeType == GPUWorkerNodeType
部署服务时,它们将定位正确的计算机,并且只有具有GPUWorkerNodeType约束的服务才会转到GPU节点来处理工作。
放置约束的最大问题是:如果您未在服务上指定PlacementContraint,它将转到可用于接收负载的任何节点。因此,它不会限制在没有放置限制的情况下部署的旧服务,您必须更新这些服务以保持集群整洁。
您可以使用节点属性执行相同操作,默认情况下,节点包含NodeName和NodeType属性。您可以让具有不同框架版本的节点参与同一NodeType,如果您想在某些节点上升级框架以在应用于所有节点之前验证负载和行为,则可以使用新的框架版本升级几个节点,添加像DotNetFrameworkVersion = 4.7这样的节点的NodeProperty,并使用DotNetFrameworkVersion==4.7
和其他(DotNetFrameworkVersion!=4.7)
放置一些服务