集群设置
以下设置与 OpenSearch 集群相关。
要了解有关静态和动态设置的更多信息,请参阅配置 OpenSearch。
集群级别路由和分配设置
OpenSearch 支持以下集群级别路由和分片分配设置
-
cluster.routing.allocation.enable
(动态,字符串):启用或禁用特定类型分片的分配。有效值为
all
– 允许所有类型分片进行分配。primaries
– 仅允许主分片进行分配。new_primaries
– 仅允许新索引的主分片进行分配。none
– 不允许任何索引进行分片分配。
默认值为
all
。 -
cluster.routing.allocation.node_concurrent_incoming_recoveries
(动态,整数):配置节点上允许同时进行的传入分片恢复数量。默认值为2
。 -
cluster.routing.allocation.node_concurrent_outgoing_recoveries
(动态,整数):配置节点上允许同时进行的传出分片恢复数量。默认值为2
。 -
cluster.routing.allocation.node_concurrent_recoveries
(动态,字符串):用于将cluster.routing.allocation.node_concurrent_incoming_recoveries
和cluster.routing.allocation.node_concurrent_outgoing_recoveries
设置为相同的值。 -
cluster.routing.allocation.node_initial_primaries_recoveries
(动态,整数):设置节点重启后未分配主分片的恢复数量。默认值为4
。 -
cluster.routing.allocation.same_shard.host
(动态,布尔值):当设置为true
时,阻止分片的多个副本分配到同一主机上的不同节点。默认值为false
。 -
cluster.routing.rebalance.enable
(动态,字符串):启用或禁用特定类型分片的再平衡。有效值为
all
– 允许所有类型分片进行再平衡。primaries
– 仅允许主分片进行再平衡。replicas
– 仅允许副本分片进行再平衡。none
– 不允许任何索引进行分片再平衡。
默认值为
all
。 -
cluster.routing.allocation.allow_rebalance
(动态,字符串):指定何时允许分片再平衡。有效值为
always
– 始终允许再平衡。indices_primaries_active
– 仅当集群中所有主分片都已分配时才允许再平衡。indices_all_active
– 仅当集群中所有分片都已分配时才允许再平衡。
默认值为
indices_all_active
。 -
cluster.routing.allocation.cluster_concurrent_rebalance
(动态,整数):允许您控制集群中允许同时进行的分片再平衡数量。默认值为2
。 -
cluster.routing.allocation.balance.shard
(动态,浮点数):定义每个节点分配的总分片数的权重因子。默认值为0.45
。 -
cluster.routing.allocation.balance.index
(动态,浮点数):定义节点上每个索引分配的分片数的权重因子。默认值为0.55
。 -
cluster.routing.allocation.balance.threshold
(动态,浮点数):应执行操作的最小优化值。默认值为1.0
。 -
cluster.routing.allocation.balance.prefer_primary
(动态,布尔值):当设置为true
时,OpenSearch 会尝试在集群节点之间均匀分布主分片。启用此设置并不能始终保证每个节点上的主分片数量相等,尤其是在故障转移事件中。在设置为true
后将其更改为false
不会触发主分片的重新分布。默认值为false
。 -
cluster.routing.allocation.rebalance.primary.enable
(动态,布尔值):当设置为true
时,OpenSearch 会尝试在集群节点之间重新平衡主分片。启用后,集群会尝试维持每个节点上的主分片数量,最大缓冲区由cluster.routing.allocation.rebalance.primary.buffer
设置定义。在设置为true
后将其更改为false
不会触发主分片的重新分布。默认值为false
。 -
cluster.routing.allocation.rebalance.primary.buffer
(动态,浮点数):当cluster.routing.allocation.rebalance.primary.enable
启用时,定义节点之间允许的主分片最大缓冲区。默认值为0.1
。 -
cluster.routing.allocation.disk.threshold_enabled
(动态,布尔值):当设置为false
时,禁用磁盘分配决策器。禁用时,这将同时移除任何现有的index.blocks.read_only_allow_delete index blocks
。默认值为true
。 -
cluster.routing.allocation.disk.watermark.low
(动态,字符串):控制磁盘使用率的低水位线。当设置为百分比时,OpenSearch 不会将分片分配给磁盘使用率达到该百分比的节点。这也可以输入为比率值,例如0.85
。最后,这也可以设置为字节值,例如400mb
。此设置不影响新创建索引的主分片,但会阻止其副本的分配。默认值为85%
。 -
cluster.routing.allocation.disk.watermark.high
(动态,字符串):控制高水位线。OpenSearch 会尝试将分片从磁盘使用率超过定义百分比的节点上迁移走。这也可以输入为比率值,例如0.85
。最后,这也可以设置为字节值,例如400mb
。此设置会影响所有分片的分配。默认值为90%
。 -
cluster.routing.allocation.disk.watermark.flood_stage
(动态, 字符串): 控制洪水阶段水印。这是防止节点磁盘空间耗尽的最后手段。OpenSearch 会对每个在节点上分配有一个或多个分片且至少一个磁盘超出洪水阶段的索引,强制执行只读索引块 (index.blocks.read_only_allow_delete
)。一旦磁盘利用率低于高水位线,索引块就会被释放。此值也可以输入为比例值,如0.85
。最后,此值也可以设置为字节值,如400mb
。默认值为95%
。 -
cluster.info.update.interval
(动态, 时间单位): 设置 OpenSearch 应多久检查一次集群中每个节点的磁盘使用情况。默认值为30s
。 -
cluster.routing.allocation.include.<attribute>
(动态, 枚举): 将分片分配给其“属性”包含所提供的逗号分隔值中至少一个的节点。 -
cluster.routing.allocation.require.<attribute>
(动态, 枚举): 仅将分片分配给其“属性”包含所提供的所有逗号分隔值的节点。 -
cluster.routing.allocation.exclude.<attribute>
(动态, 枚举): 不将分片分配给其“属性”包含所提供的任何逗号分隔值的节点。集群分配设置支持以下内置属性。有效值为
_name
– 按节点名称匹配节点。_host_ip
– 按主机 IP 地址匹配节点。_publish_ip
– 按发布 IP 地址匹配节点。_ip
– 匹配_host_ip
或_publish_ip
。_host
– 按主机名匹配节点。_id
– 按节点 ID 匹配节点。_tier
– 按数据层角色匹配节点。
-
cluster.routing.allocation.shard_movement_strategy
(动态, 枚举): 确定分片从传出节点重新定位到传入节点的顺序。此设置支持以下策略
PRIMARY_FIRST
– 主分片在副本分片之前优先重新定位。如果重新定位的节点在过程中失败,此优先级排序可能有助于防止集群的健康状态变为红色。REPLICA_FIRST
– 副本分片在主分片之前优先重新定位。在混合版本、启用段复制的 OpenSearch 集群中进行分片重新定位时,此优先级排序可能有助于防止集群的健康状态变为红色。在这种情况下,重新定位到较新版本 OpenSearch 节点的主分片可能会尝试将段文件复制到较旧版本 OpenSearch 上的副本分片,这将导致分片失败。首先重新定位副本分片可能有助于在多版本集群中避免这种情况。NO_PREFERENCE
– 默认行为,其中分片重新定位的顺序不重要。
-
cluster.routing.search_replica.strict
(动态, 布尔值): 控制当索引存在搜索副本分片时(例如,当index.number_of_search_replicas
大于0
时),搜索请求的路由方式。此设置仅在为索引配置了搜索副本时适用。当设置为true
时,此类索引的所有搜索请求仅路由到搜索副本分片。如果搜索副本未分配,请求将失败。当设置为false
时,如果搜索副本未分配,请求将回退到任何可用的分片。默认值为true
。 -
cluster.allocator.gateway.batch_size
(动态, 整数): 限制在单个批次中发送到数据节点的分片数量,以获取任何未分配的分片元数据。默认值为2000
。 -
cluster.allocator.existing_shards_allocator.batch_enabled
(静态, 布尔值): 启用批量分配磁盘上已存在的未分配分片,而不是一次分配一个分片。这通过批量调用获取任何未分配的分片元数据来减少内存和传输开销。默认值为false
。 -
cluster.routing.allocation.total_shards_per_node
(动态, 整数): 可分配给单个节点的主分片和副本分片的最大总数。默认值为-1
(无限制)。通过限制每个节点的总分片数,有助于在节点之间均匀分配分片。请谨慎使用,因为如果节点达到其配置的限制,分片可能仍未分配。 -
cluster.routing.allocation.total_primary_shards_per_node
(动态, 整数): 可分配给单个节点的主分片的最大数量。此设置仅适用于远程备份集群。默认值为-1
(无限制)。通过限制每个节点的主分片数,有助于在节点之间均匀分配主分片。请谨慎使用,因为如果节点达到其配置的限制,主分片可能仍未分配。
集群级别分片、块和任务设置
OpenSearch 支持以下集群级别分片、块和任务设置
-
action.search.shard_count.limit
(整数): 限制搜索期间命中分片的最大数量。超过此限制的请求将被拒绝。 -
cluster.blocks.read_only
(布尔值): 将整个集群设置为只读。默认值为false
。 -
cluster.blocks.read_only_allow_delete
(布尔值): 类似于cluster.blocks.read_only
,但允许您删除索引。 -
cluster.max_shards_per_node
(整数): 限制集群中主分片和副本分片的总数。限制按以下方式计算:cluster.max_shards_per_node
乘以非冻结数据节点的数量。已关闭索引的分片不计入此限制。默认值为1000
。 -
cluster.persistent_tasks.allocation.enable
(字符串): 启用或禁用持久任务的分配。有效值为
all
– 允许将持久任务分配给节点。none
– 不允许为持久任务进行任何分配。这不影响已在运行的持久任务。
默认值为
all
。 -
cluster.persistent_tasks.allocation.recheck_interval
(时间单位): 当集群状态发生重大变化时,集群管理器会自动检查是否需要分配持久任务。还有其他因素,例如内存使用情况,会影响持久任务是否分配给节点,但不会导致集群状态发生变化。此设置定义了根据这些因素执行分配检查的频率。默认值为30 秒
,最低要求为10 秒
。
集群级别慢日志设置
有关更多信息,请参阅 搜索请求慢日志。
-
cluster.search.request.slowlog.threshold.warn
(时间单位): 设置请求级别慢日志WARN
阈值。默认值为-1
。 -
cluster.search.request.slowlog.threshold.info
(时间单位): 设置请求级别慢日志INFO
阈值。默认值为-1
。 -
cluster.search.request.slowlog.threshold.debug
(时间单位): 设置请求级别慢日志DEBUG
阈值。默认值为-1
。 -
cluster.search.request.slowlog.threshold.trace
(时间单位): 设置请求级别慢日志TRACE
阈值。默认值为-1
。 -
cluster.search.request.slowlog.level
(字符串): 设置要记录的最低慢日志级别:WARN
、INFO
、DEBUG
和TRACE
。默认值为TRACE
。
集群级别索引设置
有关索引级别索引设置的信息,请参阅 集群级别索引设置。
集群级别协调设置
OpenSearch 支持以下集群级别协调设置。此列表中的所有设置都是动态的
-
cluster.fault_detection.leader_check.timeout
(时间单位): 节点在领导者检查期间等待来自已选举的集群管理器的响应的时间量,在此时间之后判定检查失败。有效值范围为1ms
到60s
(包含)。默认值为10s
。将此设置更改为非默认值可能导致集群不稳定。 -
cluster.fault_detection.follower_check.timeout
(时间单位): 已选举的集群管理器在追随者检查期间等待响应的时间量,在此时间之后判定检查失败。有效值范围为1ms
到60s
(包含)。默认值为10s
。将此设置更改为非默认值可能导致集群不稳定。 -
cluster.fault_detection.follower_check.interval
(时间单位): 已选举的集群管理器在向集群中其他节点发送追随者检查之间等待的时间量。有效值为100ms
及以上。默认值为1000ms
。将此设置更改为非默认值可能导致集群不稳定。 -
cluster.follower_lag.timeout
(时间单位): 已选举的集群管理器等待接收来自滞后节点的集群状态更新确认的时间量。默认值为90s
。如果节点在此期间未能成功应用集群状态更新,则认为它已失败并从集群中删除。 -
cluster.publish.timeout
(时间单位): 集群管理器等待每个集群状态更新完全发布到所有节点的时间量,除非discovery.type
设置为single-node
。默认值为30s
。
集群级别 CAT 响应限制设置
OpenSearch 支持以下集群级别 CAT API 响应限制设置,所有这些设置都是动态的
-
cat.indices.response.limit.number_of_indices
(整数): 限制 CAT Indices API 返回的索引数量。默认值为-1
(无限制)。如果响应中的索引数量超过此限制,API 将返回429
错误。为避免此问题,您可以在查询中指定索引模式过滤器(例如,_cat/indices/<index-pattern>
)。 -
cat.shards.response.limit.number_of_shards
(整数): 限制 CAT Shards API 返回的分片数量。默认值为-1
(无限制)。如果响应中的分片数量超过此限制,API 将返回429
错误。为避免此问题,您可以在查询中指定索引模式过滤器(例如,_cat/shards/<index-pattern>
)。 -
cat.segments.response.limit.number_of_indices
(整数): 限制 CAT Segments API 返回的索引数量。默认值为-1
(无限制)。如果响应中的索引数量超过此限制,API 将返回429
错误。为避免此问题,您可以在查询中指定索引模式过滤器(例如,_cat/segments/<index-pattern>
)。