第 24 章 配置节点放置策略
Pacemaker 根据资源分配分数来决定在每个节点上放置资源的位置。资源将分配给资源分数最高的节点。此分配 score 源自因素的组合,包括资源约束、resource-stickiness
设置、各个节点上资源以前的故障历史记录以及每个节点的利用率。
如果所有节点上的资源分配分数相等,默认的放置策略Pacemaker 将选择一个分配的资源最少的节点来平衡负载。如果每个节点中的资源数量相等,则会选择 CIB 中列出的第一个有资格的节点来运行该资源。
但通常不同的资源使用会对节点容量有很大不同(比如内存或者 I/O)。您始终无法通过只考虑分配给节点的资源数量来平衡负载。另外,如果资源的放置使其组合要求超过所提供的容量,则它们可能无法完全启动,或者可能以较低的性能运行。要考虑以上因素,Pacemaker 允许您配置以下组件:
- 特定节点提供的能力
- 特定资源需要的容量
- 资源放置的整体策略
24.1. 使用属性和放置策略
要配置节点提供或需要资源的容量,您可以使用节点和资源使用属性。您可以通过为资源设置使用变量,并将值分配给该变量以指示资源需要,然后为节点设置相同的使用变量,并为该变量分配一个值来指示节点提供的内容。
您可以根据喜好命名使用属性,并根据您的配置定义名称和值对。使用属性的值必须是整数。
24.1.1. 配置节点和资源容量
以下示例为两个节点配置 CPU 容量的使用属性,将此属性设置为变量 cpu
。它还配置 RAM 容量的使用属性,将此属性设置为变量 memory
。在本例中:
- 节点 1 定义为提供 2 个 CPU 和 2048 RAM
- 节点 2 定义为提供 4 个 CPU 和 2048 RAM
# pcs node utilization node1 cpu=2 memory=2048 # pcs node utilization node2 cpu=4 memory=2048
以下示例指定三个不同资源需要的相同的使用属性。在本例中:
-
资源
dummy-small
需要 1 个 CPU 容量和 1024 个 RAM 容量 -
资源
dummy-medium
需要 2 个 CPU 容量和 2048 个 RAM 容量 -
资源
dummy-large
需要 1 个 CPU 容量和 3072 个 RAM 容量
# pcs resource utilization dummy-small cpu=1 memory=1024 # pcs resource utilization dummy-medium cpu=2 memory=2048 # pcs resource utilization dummy-large cpu=3 memory=3072
如果节点有足够的可用容量以满足资源的要求,则节点被视为有资格获得资源。
24.1.2. 配置放置策略
在配置了节点提供的容量以及资源需要的容量后,您需要设置 placement-strategy
集群属性,否则容量配置无效。
placement-strategy
集群属性有四个值:
-
default
- 根本不考虑 Utilization 值。根据分配分数分配资源。如果分数相等,则在节点间平均分配资源。 -
utilization
- 只有在决定节点是否被视为有资格时才会考虑 Utilization 值(即,它是否有足够的可用容量来满足资源的要求)。负载均衡仍会根据分配给节点的资源数量进行。 -
balanced
- 在决定节点是否有资格提供资源以及负载平衡时,会考虑 Utilization 值,因此会尝试以优化资源性能的方式分散资源。 -
minimal
- 只有在决定节点是否有资格为资源提供服务时才会考虑 Utilization 值。对于负载平衡,会尝试尽可能将资源集中到几个节点上,从而在剩余的节点上启用以实现节电的目的。
以下示例命令将 placement-strategy
的值设为 balanced
。运行此命令后,Pacemaker 会确保在整个集群中平均分配来自您的资源负载,而无需使用复杂的托管限制集合。
# pcs property set placement-strategy=balanced