es任务 如何kill_Elasticsearch集群重启及滚动升级步骤和官网命令改进

本文介绍了一种在Elasticsearch集群中管理分片的方法,通过合理配置transient和persistent参数,避免了在节点操作过程中引发分片重新分配的问题。文章详细记录了关闭和启动ES集群的步骤,并给出了具体的操作命令。
摘要由CSDN通过智能技术生成

ES集群实际使用中,如果按照官网文档操作,在单个节点操作过程中,会出现分片重新分配的情况。本文对官网的步骤参数进行了修正,使用了transient和persistent结合的方式,不会引发分片重新分配。

1. 关闭ES集群

1.1. 禁止分片自动分布

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'

{

"persistent" : {

"cluster.routing.allocation.enable" : "none"

},

"transient" : {

"cluster.routing.allocation.enable" : "none"

}

}

'

1.2. 执行同步刷新

curl -X POST "localhost:9200/_flush/synced"

1.3. 关闭各节点

发送TERM信号关闭进程

kill

2. 启动ES集群

2.1. 依次启动

nohup /opt/elasticsearch/bin/elasticsearch >> /dev/null 2>&1 &

2.2. 查看集群状态是否正常(green)

通过命令或者head界面查看。

命令:

curl -XGET "http://localhost:9200/_cat/health"

curl -XGET "http://localhost:9200/_cat/nodes"

2.3. 启用分片自动分布

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'

{

"persistent" : {

"cluster.routing.allocation.enable" : "none"

},

"transient" : {

"cluster.routing.allocation.enable" : "all"

}

}

'

2.4. 查看集群状态和分片情况

curl -XGET "http://localhost:9200/_cat/health"

curl -XGET "http://localhost:9200/_cat/recovery"

3. 错误操作

如果集群未设置persistent的自动分配分片参数,则不要只使用persistent来关闭自动分配分片,在整个集群重启之前,不生效,会导致在单个节点关闭的情况下,分片迁移到其他节点。要同时设置transient,保证既在单个节点关闭的情况下,分片不会重新分配,也能保证集群重启后,分片不会重新分配。

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'

{

"persistent" : {

"cluster.routing.allocation.enable" : "none"

}

}

'

可以看到,整个集群未关闭重启的情况下,某个节点的重启日志,cluster.routing.allocation.enable并未生效:

[2020-09-07T01:21:44,679][INFO ][o.e.c.s.ClusterSettings ] [es-node-3] updating [cluster.routing.allocation.enable] from [ALL] to [all]

[2020-09-07T01:21:44,679][INFO ][o.e.c.s.ClusterSettings ] [es-node-3] updating [cluster.routing.rebalance.enable] from [ALL] to [none]

整个集群重启后,这个persistence才生效。

[2020-09-07T01:35:30,610][INFO ][o.e.c.s.ClusterSettings ] [es-node-3] updating [cluster.routing.allocation.enable] from [ALL] to [none]

5. 滚动升级或者单个节点维护

使用transient方式关闭分片自动分配即可。

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'

{

"persistent" : {

},

"transient" : {

"cluster.routing.allocation.enable" : "none"

}

}

'

节点重启后,分片仍会处于unsigned状态,开启分片自动分配后,unsigned的分片就会立刻在被重启的节点上生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值