📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

cluster.remote.connections_per_cluster 配置项用于控制本地集群到每个远程集群建立的最大连接数。

当连接到远程集群时,系统会从种子节点开始发现更多节点,直到达到此配置设置的最大连接数。

配置项属性 #

  • 配置路径: cluster.remote.connections_per_cluster
  • 数据类型: integer
  • 默认值: 3
  • 最小值: 1
  • 是否可选: 是
  • 是否动态: 是(支持动态更新)
  • 别名: cluster.remote.node_connections

配置项详解 #

工作机制 #

本地集群                远程集群
    │                        │
    │                        │
    │  ──── 连接1 ──────────→  节点1 (种子节点)
    │                        │
    │  ──── 连接2 ──────────→  节点2 (自动发现)
    │                        │
    │  ──── 连接3 ──────────→  节点3 (自动发现)
    │                        │
    │                        │
    │  (最多 connections_per_cluster 个连接)

连接建立过程 #

  1. 初始连接: 连接到配置的种子节点
  2. 节点发现: 通过种子节点获取远程集群的节点列表
  3. 筛选节点: 根据 node.attr 配置筛选符合条件的节点
  4. 建立连接: 逐个建立连接,直到达到最大连接数
  5. 负载均衡: 跨集群搜索请求会分发到这些连接

跨集群搜索请求分发 #

协调节点                      远程集群
    │                            │
    │  ←───── 搜索请求 ────────── │
    │                            │
    │  (分发到已建立的连接)       │
    │                            │
    ├────────→ 连接1 (节点1)      │
    ├────────→ 连接2 (节点2)      │
    └────────→ 连接3 (节点3)      │
                                 │
    ←─────────────────────────────┼── 返回结果

配置建议 #

生产环境(标准) #

cluster.remote.connections_per_cluster: 3

建议: 保持默认值 3。适用于大多数生产环境,提供基本的负载均衡和冗余。

高并发场景 #

cluster.remote.connections_per_cluster: 6

建议: 增加到 5-10。当跨集群搜索请求量大时,增加连接数可以提高并发处理能力。

大型远程集群 #

cluster.remote.connections_per_cluster: 10

建议: 增加到 8-15。当远程集群节点数量多(如 50+ 节点)时,可以增加连接数以利用更多节点资源。

小型远程集群 #

cluster.remote.connections_per_cluster: 2

建议: 减少到 1-2。当远程集群只有少数节点时,不需要太多连接。

代码示例 #

easysearch.yml 配置 #

cluster:
  remote:
    production:
      seeds: ["prod-node1:9300", "prod-node2:9300"]
      # 使用默认连接数 3

高并发配置 #

cluster:
  remote:
    production:
      seeds: ["prod-node1:9300", "prod-node2:9300"]
      connections_per_cluster: 8

多个远程集群配置 #

cluster:
  remote:
    cluster_a:
      seeds: ["cluster-a-node1:9300"]
      connections_per_cluster: 3
    cluster_b:
      seeds: ["cluster-b-node1:9300"]
      connections_per_cluster: 5

动态更新配置 #

# 通过 API 动态更新连接数
PUT _cluster/settings
{
  "persistent": {
    "cluster.remote.connections_per_cluster": 5
  }
}

相关配置 #

配置项作用默认值
cluster.remote.<name>.seeds远程集群种子节点列表-
cluster.remote.node.attr节点属性筛选-
cluster.remote.initial_connect_timeout初始连接超时时间30s

连接数选择指南 #

远程集群规模推荐连接数说明
小型(< 10 节点)1-3基本冗余即可
中型(10-50 节点)3-5默认值适合
大型(50+ 节点)5-15利用更多节点资源
高并发场景8-20根据并发量调整

性能影响 #

连接数设置优点缺点
较小(1-2)节省资源负载均衡能力有限,单点故障风险
中等(3-5)平衡性能和资源标准设置
较大(10+)高并发处理能力强占用更多内存和网络连接

资源消耗 #

每个远程连接会消耗:

  • 网络连接资源
  • 内存(用于连接状态管理)
  • 线程资源

注意事项 #

  1. 动态更新: 此配置支持动态更新,修改后会触发连接重建。

  2. 按集群配置: 可以为每个远程集群单独配置连接数。

  3. 节点限制: 连接数不会超过远程集群中符合条件的节点数量。

  4. 与 node.attr 配合: 如果配置了 node.attr 筛选,连接数只会考虑符合条件的节点。

  5. 重新连接: 修改连接数后,现有连接会根据新配置进行调整。

  6. 负载均衡: 连接数越多,跨集群搜索请求的分发越均匀。

  7. 监控建议: 监控远程连接的使用情况,根据实际负载调整连接数。