自动伸缩决策器
ECE ECK Elastic Cloud Hosted
Elasticsearch 中的自动伸缩能够基于预定义的策略动态分配资源。该机制的一个关键组成部分是自动伸缩决策器,它们独立评估资源需求并确定何时需要执行伸缩操作。决策器分析各种因素,如存储使用率、索引速率和机器学习工作负载,以确保集群在无需手动干预的情况下保持最佳性能。
此功能设计用于 Elastic Cloud Hosted、Elastic Cloud Enterprise 和 Elastic Cloud on Kubernetes 的间接使用。不支持直接使用。
- 被动存储决策器
- 估算当前数据集所需的存储容量。适用于管理数据节点的策略。
- 主动存储决策器
- 根据当前摄取到热节点的数据估算所需的存储容量。适用于管理热数据节点的策略。
- 冻结分片决策器
- 根据部分挂载分片的数量估算所需的内存容量。适用于管理冻结数据节点的策略。
- 冻结存储决策器
- 估算所需存储容量,作为部分挂载索引的总数据集的百分比。适用于管理冻结数据节点的策略。
- 冻结存在性决策器
- 当任何索引处于冻结ILM阶段时,估算所需的最小冻结内存和存储容量。
- 机器学习决策器
- 根据机器学习作业估算所需的内存容量。适用于管理机器学习节点的策略。
- 固定决策器
- 响应固定的所需容量。此决策器仅用于测试。
自动伸缩被动存储决策器 (reactive_storage
) 计算包含当前数据集所需的存储量。当现有容量超过时,它会发出信号表明需要额外的存储容量(被动地)。
被动存储决策器已为所有管理数据节点的策略启用,并且没有配置选项。
该决策器部分依赖于使用数据层偏好分配,而不是节点属性。 特别是,将数据层扩展到存在状态(启动层中的第一个节点)将导致在任何为空的数据层中启动一个节点,如果未使用基于数据层偏好的分配。 使用ILM 迁移操作在层之间迁移是分配到层的首选方法,并且完全支持将层扩展到存在状态。
自动伸缩主动存储决策器 (proactive_storage
) 计算包含当前数据集以及预计额外数据的估计量所需的存储量。
主动存储决策器已为所有管理具有 data_hot
角色的节点的策略启用。
预计额外数据的估计基于 forecast_window
中发生的过去索引。 只有索引到数据流才有助于估算。
forecast_window
- (可选,时间值)用于预测的时间窗口。 默认为 30 分钟。
此示例放置一个名为 my_autoscaling_policy
的自动伸缩策略,将主动决策器的 forecast_window
覆盖为 10 分钟。
PUT /_autoscaling/policy/my_autoscaling_policy
{
"roles" : [ "data_hot" ],
"deciders": {
"proactive_storage": {
"forecast_window": "10m"
}
}
}
API 返回以下结果
{
"acknowledged": true
}
自动伸缩冻结分片决策器 (frozen_shards
) 计算搜索冻结层中当前一组部分挂载索引所需的内存。 基于每个分片的所需内存量,它计算冻结层中的必要内存。
memory_per_shard
- (可选,字节值)每个分片所需的内存,以字节为单位。 默认为每 64 GB 节点 2000 个分片(大约每个分片 32 MB)。 请注意,这是总内存,而不是堆内存,假设使用了 Elasticsearch 默认堆大小调整机制,并且节点不大于 64 GB。
自动伸缩冻结存储决策器 (frozen_storage
) 基于此类索引的总数据集大小的百分比计算搜索当前一组部分挂载索引所需的本地存储。 当现有容量小于该百分比乘以总数据集大小时,它会发出信号表明需要额外的存储容量。
冻结存储决策器已为所有管理冻结数据节点的策略启用,并且没有配置选项。
percentage
- (可选,数字值)相对于数据集大小的本地存储百分比。 默认为 5。
自动伸缩冻结存在性决策器 (frozen_existence
) 确保一旦第一个索引进入冻结 ILM 阶段,冻结层就会扩展到存在状态。
冻结存在性决策器已为所有管理冻结数据节点的策略启用,并且没有配置选项。
自动伸缩机器学习决策器 (ml
) 计算运行机器学习作业和训练模型所需的内存和 CPU。
机器学习决策器已为管理 ml
节点的策略启用。
为了使机器学习作业在集群未正确伸缩时能够打开,请将 xpack.ml.max_lazy_ml_nodes
设置为最大可能的机器学习节点数(有关详细信息,请参阅高级机器学习设置)。 在 Elastic Cloud Hosted 中,此设置会自动设置。
num_anomaly_jobs_in_queue
和 num_analytics_jobs_in_queue
都旨在延迟向上伸缩事件。 如果集群太小,这些设置会指示可以从节点取消分配每种类型的作业数量。 只有在给定当前规模的情况下可以打开的作业才会考虑这两个设置。 如果作业对于任何节点大小都太大,或者如果无法在没有用户干预的情况下分配作业(例如,用户对实时异常检测作业调用 _stop
),则对于该特定作业,这些数字将被忽略。
num_anomaly_jobs_in_queue
- (可选,整数)指定允许排队的异常检测作业的数量。 默认为
0
。 num_analytics_jobs_in_queue
- (可选,整数)指定允许排队的数据帧分析分析作业的数量。 默认为
0
。 down_scale_delay
- (可选,时间值)指定在向下伸缩之前延迟的时间。 默认为 1 小时。 如果在整个时间窗口内可以向下伸缩,则会请求向下伸缩。 如果集群需要在窗口期间向上伸缩,则会重置窗口。
此示例创建一个名为 my_autoscaling_policy
的自动伸缩策略,该策略覆盖机器学习决策器的默认配置。
PUT /_autoscaling/policy/my_autoscaling_policy
{
"roles" : [ "ml" ],
"deciders": {
"ml": {
"num_anomaly_jobs_in_queue": 5,
"num_analytics_jobs_in_queue": 3,
"down_scale_delay": "30m"
}
}
}
API 返回以下结果
{
"acknowledged": true
}
此功能为技术预览版,可能会在将来的版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。
固定决策器仅用于测试。 请勿在生产环境中使用此决策器。
自动伸缩 fixed
决策器响应固定的所需容量。 默认情况下未启用,但可以通过显式配置为任何策略启用它。
storage
- (可选,字节值)节点级存储的所需量。 默认为
-1
(已禁用)。 memory
- (可选,字节值)节点级内存的所需量。 默认为
-1
(已禁用)。 processors
- (可选,浮点数)所需的处理器数量。 默认为禁用。
nodes
- (可选,整数)计算容量时要使用的节点数。 默认为
1
。
此示例放置一个名为 my_autoscaling_policy
的自动伸缩策略,启用并配置固定决策器。
PUT /_autoscaling/policy/my_autoscaling_policy
{
"roles" : [ "data_hot" ],
"deciders": {
"fixed": {
"storage": "1tb",
"memory": "32gb",
"processors": 2.3,
"nodes": 8
}
}
}
API 返回以下结果
{
"acknowledged": true
}