配置项作用 #
cluster.routing.allocation.type 配置项指定分片分配器(Shards Allocator)的类型,决定集群如何将分片分配到各个节点上。不同的分配器使用不同的算法来实现负载均衡。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
balanced(平衡分配器)
是否必需 #
可选配置项
配置值说明 #
| 值 | 说明 |
|---|---|
balanced | 平衡分配器,默认推荐 |
分配器类型详解 #
Balanced(平衡分配器) #
平衡分配器是 Easysearch 的默认分配器,通过权重计算实现集群的负载均衡。
均衡维度:
平衡分配器考虑以下因素:
分片数量均衡
- 确保每个节点上的分片数量大致相等
磁盘使用均衡
- 考虑每个节点的磁盘使用情况
- 防止单个节点磁盘过满
索引分布均衡
- 尽量将同一索引的分片分散到不同节点
- 提高容错能力
权重配置
- 不同维度的权重可配置
- 实现灵活的均衡策略
权重配置 #
平衡分配器使用以下权重配置来决定分片分配策略:
| 配置项 | 默认值 | 说明 |
|---|---|---|
cluster.routing.allocation.balance.index | 0.55 | 索引分布权重 |
cluster.routing.allocation.balance.shard | 0.45 | 分片数量权重 |
cluster.routing.allocation.balance.threshold | 1.0 | 触发重新平衡的阈值 |
工作原理 #
平衡分配器算法
│
├──→ 计算每个节点的负载分数
│ ├── 分片数量 * shard权重
│ ├── 索引分布 * index权重
│ └── 磁盘使用 * 磁盘权重
│
├──→ 比较节点间分数差异
│ └── 差异 > threshold → 需要平衡
│
└──→ 执行分片重新分配
└── 移动分片到分数较低的节点
使用示例 #
# 默认配置(推荐)
cluster.routing.allocation.type: balanced
# 自定义平衡权重
cluster.routing.allocation.balance.index: 0.6
cluster.routing.allocation.balance.shard: 0.4
cluster.routing.allocation.balance.threshold: 1.0
推荐设置建议 #
生产环境建议:使用默认值 balanced
特殊场景调整权重:
# 更重视索引分布(提高容错性)
cluster.routing.allocation.balance.index: 0.7
cluster.routing.allocation.balance.shard: 0.3
# 更重视分片数量均衡(提高负载均衡)
cluster.routing.allocation.balance.index: 0.4
cluster.routing.allocation.balance.shard: 0.6
# 降低平衡阈值(更敏感的平衡触发)
cluster.routing.allocation.balance.threshold: 0.8
权重调整示例 #
场景 1:大索引场景
某些索引比其他索引大得多,希望优先考虑磁盘均衡:
cluster.routing.allocation.balance.index: 0.7
cluster.routing.allocation.balance.shard: 0.3
场景 2:大量小分片场景
分片数量很多,希望优先考虑分片数量均衡:
cluster.routing.allocation.balance.index: 0.3
cluster.routing.allocation.balance.shard: 0.7
场景 3:减少重新平衡
减少不必要的分片移动:
cluster.routing.allocation.balance.threshold: 1.5
平衡阈值说明 #
threshold 参数控制何时触发分片重新平衡:
节点间分数差异 > threshold → 触发平衡
| 阈值设置 | 平衡频率 | 网络开销 | 适用场景 |
|---|---|---|---|
| 0.5 | 高 | 高 | 需要严格均衡 |
| 1.0(默认) | 中 | 中 | 通用场景 |
| 2.0 | 低 | 低 | 减少平衡操作 |
监控分片平衡 #
# 查看分片分布
GET /_cat/allocation?v
# 查看集群平衡状态
GET /_cluster/allocation/explain
# 查看节点统计
GET /_nodes/stats/indices?filter_path=**.shards
平衡分配器的优势 #
智能均衡
- 考虑多个因素
- 自动优化分片分布
可配置性
- 权重可调
- 适应不同场景
性能优化
- 减少热点节点
- 提高查询性能
容错性
- 分散同一索引的分片
- 提高可用性
与其他配置的关系 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
cluster.routing.allocation.type | 分配器类型 | balanced |
cluster.routing.allocation.enable | 是否启用分配 | all |
cluster.routing.rebalance.enable | 是否启用重新平衡 | all |
常见问题 #
问题 1:分片分布不均衡
检查平衡权重配置,根据实际需求调整。
问题 2:频繁重新平衡
提高 threshold 值,减少平衡触发频率。
问题 3:某些节点负载过高
检查节点资源使用情况,考虑调整权重或使用节点属性进行分配控制。
注意事项 #
- 静态配置:修改分配器类型需要重启节点
- 权重配置:权重配置为动态配置,可在线调整
- 平衡开销:分片重新平衡会产生网络和磁盘开销
- 监控影响:调整权重后应监控集群表现
- 测试验证:生产环境调整前应在测试环境验证





