如何优雅地下掉一台es节点
文章发布较早,内容可能过时,阅读注意甄别。
有时候可能某个节点需要某些维护,需要从集群中踢出,那么如何才能妥善将某个节点踢出呢?
第一步:下线节点
# 通过节点name下线 PUT _cluster/settings { "transient" : { "cluster.routing.allocation.exclude._name" : "elk-node2" } } # 通过IP下线 PUT _cluster/settings { "transient" : { "cluster.routing.allocation.exclude._ip" : "10.3.3.3" } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14表示第二个节点将要下线,操作之后就能够看到节点 2 上的分片都会往其他节点转移了。等转移完毕之后,就能下线了。
加回节点
如果只是重启节点,然后还要加入集群,可以转移完毕,重启,然后执行如下命令
PUT _cluster/settings { "transient" : { "cluster.routing.allocation.exclude._name" : "" } }
1
2
3
4
5
6让
_name
设为空,就好了。当然这个地方也可以替换成 ip,host 都可以。
其中下线的时候,可能会因为一些默认参数,导致下线速度很慢,可以通过如下参数进行一些调整。
调整单个节点的入口并发恢复的分片数量,默认是 2
PUT _cluster/settings { "transient" : { "cluster.routing.allocation.node_concurrent_incoming_recoveries" : "3" } }
1
2
3
4
5
6调整单个节点的出口并发恢复的分片数量,默认是 2
PUT _cluster/settings { "transient" : { "cluster.routing.allocation.node_concurrent_outgoing_recoveries" : "3" } }
1
2
3
4
5
6如上两个参数在遇到节点需要上下线时调整移动队列有非常大的作用。
集群内同时启动的数据任务个数,默认是 2 个
PUT _cluster/settings { "transient" : { "cluster.routing.allocation.cluster_concurrent_rebalance" : "30" } }
1
2
3
4
5
6调整恢复速度
PUT /_cluster/settings { "transient": {"indices.recovery.max_bytes_per_sec": "1580m"} }
1
2
3
4
上次更新: 2024/11/28, 21:21:13