0

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

我需要将我的服务发布到专用机器上的指定节点。我还想阻止当前服务在新节点上分配。我阅读了放置约束并理解了这个想法,但是当我将一个新节点添加到我的 Service Fabric 集群时,一个 InstanceCount 参数设置为 -1 的当前服务会分配到我的新节点上。我怎样才能避免这样的情况?我必须创建一个新的节点类型吗?或者有什么限制吗?

4

1 回答 1

0

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

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

  • 创建一个 NodeType 来托管 Worker,让我们在这里调用GPUWorkerNodeType,在您的工作服务中,您必须添加放置约束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-放置约束

于 2018-07-27T10:07:08.483 回答