定义缩放策略以管理工作负载
缩放策略用于根据可配置指标启动和停止动态集群成员。可对所有集群或特定集群定义缩放策略。如果未定义策略,那么将使用内置策略。
关于此任务
- 至少两个集群成员(如果可用)保持活动状态。如果某些或全部成员超过指标阈值,那么可能无法满足最小数目。
- 所有活动成员的平均 CPU 使用率、堆使用率或内存使用率超过 90% 时,将启动另一集群成员。
- 平均 CPU 使用率和堆使用率下降至 30% 以下时,将停止一个集群成员。
可使用缺省缩放策略对所有集群定义缩放策略。缺省缩放策略继承内置缩放策略指标,包括最小实例数和最大实例数的值(min 和 max)。对用户指定的缺省缩放策略所做的任何更改将覆盖内置值。缺省缩放策略中未指定的值将从内置缩放策略继承。
与缺省缩放策略不同,缩放策略指标不是从内置缩放策略或缺省缩放策略继承的。但是,最小实例数和最大实例数的值(min 和 max)将初始化为内置策略值。因为缩放策略指标被视为可选值,所以只有该策略中指定的指标才会包含在缩放决策中。制定缩放决策时,只会分析缩放策略中包含的指标。
- 缺省缩放策略
可定义单个缺省缩放策略以管理不需要定义更具体的缩放策略的所有集群。
以下示例说明如何定义将最小活动集群成员数设置为 3 的缺省缩放策略。<scalingDefinitions> <defaultScalingPolicy min="3"/> </scalingDefinitions>
- 缩放策略
可定义缩放策略以使用缩放策略中指定的目标条件来管理一个或多个集群。因为缩放策略定义未继承指标阈值,所以只会监视所指定的指标阈值。所有其他阈值会被忽略,因为缩放策略与缩放决策相关。如果未指定最小实例数和最大实例数(min 和 max),那么系统仍遵循它们的内置缩放策略值。
以下示例说明如何定义缩放策略以更改用于在名为 cluster1 的集群中启动和停止服务器的 CPU 使用率阈值。<scalingDefinitions> <scalingPolicy id="cluster1Policy"> <bind clusters="cluster1"/> <metric name="CPU" min="10" max="70"/> </scalingPolicy> </scalingDefinitions>
bind 元素的 clusters 属性的值是集群名称的逗号分隔列表。可在名称结尾使用星号以仅作为匹配零个或多个字符的通配符。例如:
在此示例中,缩放策略适用于名为 west 的集群及名称以 south 开头的所有集群。如果一个集群名称与多个策略相匹配,那么缩放控制器使用以下规则来选择策略:<bind clusters="west,south*"/>
- 完全匹配是通配符匹配的首选。
- 如果有多个通配符匹配,那么使用具有最长前缀的策略。
该策略将根据缺省 min 和 max 值进行缩放。在以上示例中,集群仅根据所指定的 CPU 值(min=10 和 max=70)进行缩放。
基于指标的缩放决策是在集群级别制定的。每个集群成员监视自己的指标。服务器的 CPU 和内存指标值实际大于服务器 JVM 进程或服务器主机的 CPU 和内存指标值。系统仅从服务器 JVM 进程获取堆指标值。如果在受监视指标中检测到可度量更改,那么系统会将该指标发送至控制器以进行分析。系统会累计所有集群成员指标并针对每个指标计算集群平均值。然后将每个指标的计算值与所定义的上限或下限阈值进行比较,以确定是否触发缩放决策。
扩充决策是针对每个指标制定的。系统分析集群的所有受监视指标,如果任一指标超过策略 max 阈值,那么将触发扩充事件。收缩决策是根据所有受监视指标制定的。系统会分析每个受监视指标的集群平均值。如果所有指标低于其策略 min 阈值,那么将触发收缩事件。
制定缩放决策后,缩放控制器将选择缩放目标。缩放目标是对其运行服务器停止(对于收缩)操作或服务器启动操作(对于扩充)的主机。确定扩充操作的目标时,系统会考虑主机级别指标。如果任何主机级别指标超过该指标的策略 max 阈值,那么缩放控制器会避免选择该主机并选择另一主机执行扩充操作。
缩放策略可影响缩放目标的选择。如果此策略指定 scalingPreference="horizontal",那么缩放控制器将在符合资格且具有最少活动服务器的主机上启动服务器并在具有最多活动服务器的主机上停止服务器。如果此策略指定 scalingPreference="vertical",那么缩放控制器将在符合资格且具有最多活动服务器的主机上启动服务器并在具有最少活动服务器的主机上停止服务器。缩放控制器将尝试尽可能将服务器放在不同主机上的相同集群中,而不理会所选 scalingPreference。
有关 scalingPolicy 指标的更多信息,请参阅缩放控制器。
<scalingDefinitions>
<scalingPolicy id="provisionPolicy">
<bind clusters="defaultStackGroup.deployMember"/>
<hostGroup tags="tag1 tag2"/>
</scalingPolicy>
</scalingDefinitions>
有关设置管理元数据标记的更多信息,请参阅为 Liberty 资源设置管理元数据。
过程
结果
现在已定义缩放策略。