Link Search Menu Expand Document Documentation Menu

集群设置

以下设置与 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_recoveriescluster.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 (字符串): 设置要记录的最低慢日志级别:WARNINFODEBUGTRACE。默认值为 TRACE

集群级别索引设置

有关索引级别索引设置的信息,请参阅 集群级别索引设置

集群级别协调设置

OpenSearch 支持以下集群级别协调设置。此列表中的所有设置都是动态的

  • cluster.fault_detection.leader_check.timeout (时间单位): 节点在领导者检查期间等待来自已选举的集群管理器的响应的时间量,在此时间之后判定检查失败。有效值范围为 1ms60s(包含)。默认值为 10s。将此设置更改为非默认值可能导致集群不稳定。

  • cluster.fault_detection.follower_check.timeout (时间单位): 已选举的集群管理器在追随者检查期间等待响应的时间量,在此时间之后判定检查失败。有效值范围为 1ms60s(包含)。默认值为 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>)。