可以通过设置负载限制来启用资源组负载在各节点间的自动分配。可为每个群集节点配置一组负载限制。将负载因子分配给资源组,负载因子与已定义的节点负载限制相对应。默认行为是跨资源组节点列表中的所有可用节点均匀分配资源组负载。
资源组由 RGM 从资源组节点列表中的某个节点启动,以便不会超出该节点的负载限制。在资源组由 RGM 分配给节点后,每个节点上资源组的负载因子将会汇总来提供总负载。然后总负载会与该节点的负载限制相比较。
负载限制包含以下项:
用户指定的名称。
软限制值-可以临时超出软负载限制。
硬限制值-绝不能超出硬负载限制,并且应严格执行此限制。
可以使用一个命令同时设置硬限制和软限制。如果没有明确设置其中某一限制,则会使用默认值。可使用 clnode create-loadlimit、clnode set-loadlimit 和 clnode delete-loadlimit 命令创建和修改每个节点的硬/软负载限制。有关更多信息,请参见 clnode(1CL) 手册页。
可以将某个资源组配置为具有较高优先级,以减小其从特定节点被替换的可能性。还可以设置 preemption_mode 属性,以确定某个资源组是否会由于节点过载而被优先级较高的资源组从节点中抢占。concentrate_load 属性还允许您将资源组负载集中分配给尽可能少的节点。默认情况下,concentrate_load 属性的默认值为 FALSE。
您还可以使用 Oracle Solaris Cluster Manager GUI 在全局群集节点或区域群集节点上创建并配置负载限制。您还可以使用 GUI 编辑或删除现有节点负载限制。有关 GUI 登录说明,请参见如何访问 Oracle Solaris Cluster Manager。
# clnode create-loadlimit -p limitname=mem_load -Z zc1 -p softlimit=11 -p hardlimit=20 node1 node2 node3
在此示例中,区域群集名称为 zc1。样例属性名为 mem_load,软限制值为 11,硬负载限制值为 20。软限制和硬限制是可选参数,如果您没有特别定义,则默认为无限制。有关更多信息,请参见 clnode(1CL) 手册页。
# clresourcegroup set -p load_factors=mem_load@50,factor2@1 rg1 rg2
在此示例中,为两个资源组(即 rg1 和 rg2)设置了负载因子。负载因子设置与节点的已定义负载限制相对应。还可以使用 clresourceroup create 命令在资源组创建期间执行此步骤。有关更多信息,请参见 clresourcegroup(1CL) 手册页。
# clresourcegroup remaster rg1 rg2
此命令可将资源组从当前主节点移至其他节点,以实现均匀负载分配。
# clresourcegroup set -p priority=600 rg1
默认优先级为 500。在节点分配中,具有较高优先级值的资源组优先于具有较低优先级的资源组。
# clresourcegroup set -p Preemption_mode=No_cost rg1
有关 HAS_COST、NO_COST 和 NEVER 选项的更多信息,请参见 clresourcegroup(1CL) 手册页。
# cluster set -p Concentrate_load=TRUE
正向或负向强关联性优先于负载分配。不得违反强关联性,也不得违反硬负载限制。如果同时设置了强关联和硬负载限制,那么假如无法满足这两项约束,可能会强制某些资源组保持脱机状态。
以下示例指定了区域群集 zc1 中的资源组 rg1 与区域群集 zc2 中的资源组 rg2 之间的正向强关联性。
# clresourcegroup set -p RG_affinities=++zc2:rg2 zc1:rg1
# clnode status -Z all -v
输出中包含在节点上定义的任何负载限制设置。