一 集群属性

设置placement-strategy集群属性,否则容量配置无效。

placement-strategy集群属性可用值:

- default: 根本不考虑utilization属性值。根据分配分数分配资源。如果分数相等,则资源在节点间均匀分布。

- utilization: 只有在决定一个节点是否合格(即,它是否有足够的空闲容量来满足资源的需求)时才会考虑utilization属性值。负载平衡仍然是基于分配给节点的资源数量来完成的。

- balanced:在决定节点是否符合提供资源的条件和负载平衡时,会考虑到utilization属性值,因此尝试以优化资源性能的方式来传播资源。

- minimal: 只有在决定节点是否有资格为资源提供服务时,才会考虑utilization属性值。对于负载平衡,尝试将资源集中在尽可能少的节点上,从而在剩余节点上实现可能的节能。

下面的示例命令将placement-strategy的值设置为balanced。运行此命令后,Pacemaker将确保资源负载在整个集群中均匀分布,而不需要复杂的托管约束集。

本例中仅仅判断容量

# pcs property set placement-strategy=utilization

 

二 节点容量

2.1 设置固定节点容量

节点node1被定义为提供两个CPU容量和2048个RAM容量;

节点node2被定义为提供4个CPU容量和2048个RAM容量;

# pcs node utilization node1 cpu=2 memory=2048
# pcs node utilization node2 cpu=4 memory=2048

注意:通过pcs node utilization命令设置的值更新到cib中,是一个规划的固定值
 

2.2 设置动态更新节点容量

可以通过集群克隆资源NodeUtilization来配置动态更新cib中的node容量

# pcs resource describe NodeUtilization
 Assumed agent name 'ocf:heartbeat:NodeUtilization' (deduced from 'NodeUtilization')
 ocf:heartbeat:NodeUtilization - Node UtilizationThe Node Utilization agent detects system parameters like available CPU, host
 memory and hypervisor memory availability, and adds them into the CIB for each
 node using crm_attribute. Run the agent as a clone resource to have it populate
 these parameters on each node.
 Note: Setting hv_memory only works with Xen at the moment, using the xl or xm
 command line tools.Resource options:
   dynamic: If set, parameters will be updated if there are differences between the HA parameters and the system values when running the monitor action. If not set, the parameters will be set once when the
            resource instance starts.
   utilization_cpu: Enable setting node CPU utilization limit.
   utilization_cpu_reservation: Subtract this value when setting the CPU utilization parameter.
   utilization_host_memory: Enable setting available host memory.
   utilization_host_memory_reservation: Subtract this value when setting host memory utilization, in MB.
   utilization_hv_memory: Enable setting available hypervisor memory.
   utilization_hv_memory_reservation: Subtract this value when setting hypervisor memory utilization, in MB.Default operations:
   start: interval=0s timeout=90s
   stop: interval=0s timeout=100s
   monitor: interval=60s timeout=20s 
# pcs resource create p_NodeUtilization ocf:heartbeat:NodeUtilization op monitor timeout="20s" interval="60s"  clone
每个节点会启动一个监控
# pcs resource config p_NodeUtilization
  Resource: p_NodeUtilization (class=ocf provider=heartbeat type=NodeUtilization)
   Operations: monitor interval=60s timeout=20s (p_NodeUtilization-monitor-interval-60s)
               start interval=0s timeout=90s (p_NodeUtilization-start-interval-0s)
               stop interval=0s timeout=100s (p_NodeUtilization-stop-interval-0s)# pcs status resources
   * VirtualIP    (ocf::heartbeat:IPaddr2):     Started hatest2
   * dummy    (ocf::heartbeat:Dummy):     Started hatest2
   * Clone Set: p_NodeUtilization-clone [p_NodeUtilization]:
     * Started: [ hatest1 hatest2 ]

可见,自动为node添加了utilization设置

# pcs node utilization
 Node Utilization:
  hatest1: cpu=3 host_memory=2894 hv_memory=0
  hatest2: cpu=3 host_memory=2894 hv_memory=0cpu计算方式:grep -c processor /proc/cpuinfo
host_memory计算方式:awk '/MemTotal/{printf("%d\n",$2/1024);exit(0)}' /proc/meminfo
hv_memory计算方式:xl info | awk '/total_memory/{printf("%d\n",$3);exit(0)}'  或者 xm info | awk '/total_memory/{printf("%d\n",$3);exit(0)}'
将实时计算出来的值与cib中的整数类型值比较,不相等,将使用计算出来的值更新到cib中
crm_attribute -t nodes --node "$host_name" -z -n cpu -v $sys_cpu
crm_attribute -t nodes --node "$host_name" -z -n host_memory -v $sys_mem
crm_attribute -t nodes --node "$host_name" -z -n hv_memory -v $hv_mem

 

三 资源容量

下面的示例指定了三个不同资源所需的相同利用率属性。

在本例中:

资源dummy-small要求CPU容量为1,RAM容量为1024

资源dummy-medium要求CPU容量为2,RAM容量为2048

资源dummy-large需要CPU容量为1,RAM容量为3072

# 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

如果节点有足够的空闲容量来满足资源的需求(例如utilization属性定义的),则认为节点有资格运行资源。

 

四 其他

4.1 通过设置空值取消容量设置

pcs node utilization node1 cpu=4 ram=
pcs resource utilization TestResource cpu= ram=20

4.2 查看容量设置

pcs node utilization
pcs resource utilization