老集群加新节点后一些有用的ES curl api命令
-
查看每台机器在某天日志的shards数量:
curl -s "172.24.27.232:9200/_cat/shards" | grep '20211011' | awk '{print $NF}' | sort -r | uniq -c | sort -r
注意替换ip和日期,示例中是广州集群的一台es节点,查看日期是2021年10月11号 -
查看正在重平衡的切片列表
curl -s "172.24.27.232:9200/_cat/shards?v" | grep '>'
-
查看某个索引在集群各节点的切片分布
curl -s "172.24.27.232:9200/_cat/shards?v" | grep 'uls_1234_20211011'
-
查看某个节点上的小切片,便于手动将这些切片reroute出去实现切片平衡。
curl -s "172.24.27.232:9200/_cat/shards?v" | grep '20211011' | grep '172.24.27.232' | grep 'mb'
。可以按kb,mb,gb来筛选。 -
重点来了,手动reroute:
curl -s -X POST "172.24.27.232:9200/_cluster/reroute" -H 'Content-Type: application/json' -d '{"commands":[{"move":{"index":"uls_123_20211011-000001","shard":0,"from_node":"172.24.27.232","to_node":"172.24.27.63"}}]}'
这里面的shard数值表示移动该索引的第几个shard,号码可以通过 GET _cat/shards?v 命令返回的第二列查到。 -
加快重平衡的速度,要同时设置两个选项:
出处:https://discuss.elastic.co/t/increasing-shard-relocation-speed/54009/5
cluster.routing.allocation.cluster_concurrent_rebalance #集群的最大并发重平衡分片数量
cluster.routing.allocation.node_concurrent_recoveries #单个节点的最大并发恢复分片数量
比如:
curl -XPUT "http://172.24.31.50:9200/_cluster/settings" -H "Content-type: application/json" -d '{ "transient":{"cluster.routing.allocation.cluster_concurrent_rebalance":8}}'
curl -XPUT "http://172.24.31.50:9200/_cluster/settings" -H "Content-type: application/json" -d '{ "transient":{"cluster.routing.allocation.node_concurrent_recoveries":8}}'