--- title: "远程集群连接数配置" date: 2026-01-03 lastmod: 2026-01-03 description: "cluster.remote.connections_per_cluster 配置项用于控制到每个远程集群建立的最大连接数,影响跨集群搜索的性能和负载分布。" tags: ["远程集群", "跨集群搜索", "连接", "负载均衡"] summary: "配置项作用 # 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 个连接) 连接建立过程 # 初始连接: 连接到配置的种子节点 节点发现: 通过种子节点获取远程集群的节点列表 筛选节点: 根据 node." --- ## 配置项作用 `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) │ │ ←─────────────────────────────┼── 返回结果 ``` ## 配置建议 ## 生产环境(标准) ```yaml cluster.remote.connections_per_cluster: 3 ``` **建议**: 保持默认值 `3`。适用于大多数生产环境,提供基本的负载均衡和冗余。 ## 高并发场景 ```yaml cluster.remote.connections_per_cluster: 6 ``` **建议**: 增加到 `5-10`。当跨集群搜索请求量大时,增加连接数可以提高并发处理能力。 ## 大型远程集群 ```yaml cluster.remote.connections_per_cluster: 10 ``` **建议**: 增加到 `8-15`。当远程集群节点数量多(如 50+ 节点)时,可以增加连接数以利用更多节点资源。 ## 小型远程集群 ```yaml cluster.remote.connections_per_cluster: 2 ``` **建议**: 减少到 `1-2`。当远程集群只有少数节点时,不需要太多连接。 ## 代码示例 ## easysearch.yml 配置 ```yaml cluster: remote: production: seeds: ["prod-node1:9300", "prod-node2:9300"] # 使用默认连接数 3 ``` ## 高并发配置 ```yaml cluster: remote: production: seeds: ["prod-node1:9300", "prod-node2:9300"] connections_per_cluster: 8 ``` ## 多个远程集群配置 ```yaml cluster: remote: cluster_a: seeds: ["cluster-a-node1:9300"] connections_per_cluster: 3 cluster_b: seeds: ["cluster-b-node1:9300"] connections_per_cluster: 5 ``` ## 动态更新配置 ```bash # 通过 API 动态更新连接数 PUT _cluster/settings { "persistent": { "cluster.remote.connections_per_cluster": 5 } } ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `cluster.remote..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. **监控建议**: 监控远程连接的使用情况,根据实际负载调整连接数。