One - One Code All

Blog Content

ES的集群shard平衡分片分配

容器化 运维   2018-05-30 23:36:41

集群节点临时重启,禁用分片自动分配


一个集群节点重启前要先临时禁用自动分配,设置cluster.routing.allocation.enable为none,否则节点停止后,当前节点的分片会自动分配到其他节点上,本节点启动后需要等其他节点RECOVERING后才会RELOCATING,也就是分片在其他节点恢复后又转移回来,浪费大量时间。


首先禁用自动分配

curl -XPUT http://127.0.0.1:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}'

然后再重启集群

集群启动后再改回配置

curl -XPUT http://127.0.0.1:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}'


shard分配

cluster.routing.allocation.enable

以下动态设置可用于控制分片和恢复:
cluster.routing.allocation.enable
启用或禁用特定种类的分片的分配:

  • all - (默认值)允许为所有类型的分片分配分片。

  • primaries - 仅允许分配主分片的分片。

  • new_primaries - 仅允许为新索引的主分片分配分片。

  • none - 任何索引都不允许任何类型的分片。

重新启动节点时,此设置不会影响本地主分片的恢复。 如果重新启动的节点具有未分配的主分片的副本,会立即恢复该主分片。


重新平衡分片分配

cluster.routing.rebalance.enable
为特定类型的分片启用或禁用重新平衡:

  • all - (默认值)允许各种分片的分片平衡。

  • primaries - 仅允许主分片的分片平衡。

  • replicas - 仅允许对副本分片进行分片平衡。

  • none - 任何索引都不允许任何类型的分片平衡。

cluster.routing.allocation.allow_rebalance

  • 始终 - 始终允许重新平衡。

  • indices_primaries_active - 仅在所有主分片激活时。

  • indices_all_active - (默认)仅当所有分片都激活时。

cluster.routing.allocation.cluster_concurrent_rebalance
允许控制群集范围内允许的并发分片重新平衡数。 默认为2。
请注意,此设置仅控制由于群集中的不平衡而导致的并发分片重定位数。 此设置不会因分配过滤或强制感知而限制分片重定位。




上一篇:Docker容器启动后就停止,exited
下一篇:修改Docker容器启动配置参数

The minute you think of giving up, think of the reason why you held on so long.