安全重启步骤
- 暂停数据写入程序,停止索引数据,同时备份集群
- 关闭集群shard allocation
- 执行同步刷新POST /_flush/synced
- 关闭节点修改变更配置
- 先重启全部Master节点,再运行其他节点
- 集群health status变成yellow开启集群shard allocation
- 等待recovery完成重新开启数据写入程序
速度调优
- 可临时增大 max_bytes_per_sec;随后在进行更改
- 可以多节点同时操作
- 可以将历史索引的副本数暂时调整为0;集群恢复后在进行调整
- 使用 _forcemerge
相关API
- 增大max_bytes_per_sec:
http://localhost:port/_cluster/settings?flat_settings=true{"transient" : {"indices.recovery.max_bytes_per_sec" : 200mb}}
- 恢复max_bytes_per_sec:
http://localhost:port/_cluster/settings?flat_settings=true{"transient" : {"indices.recovery.max_bytes_per_sec" :null}}
重启或删除节点操作步骤
1、停止数据写入,备份数据
2、禁用分片分配
关闭节点时,分配过程会等待index.unassigned.node_left.delayed_timeout(默认情况下为一分钟),然后再开
始将该节点上的分片复制到集群中的其他节点,这可能涉及大量I /O操作, 由于关闭的节点升级后即将重新启动,
因此该I / O是不必要的。 在关闭节点之前禁用此功能,可以避免浪费大量的时间进行分配复制及消耗高额I/O资
源。
# curl -X PUT "http://127.0.0.1:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "persistent": { "cluster.routing.allocation.enable": "none" } }'
3、停止非必要的索引和执行同步刷新
# curl -X POST http://127.0.0.1:9200/_flush/synced
尽管可以在升级过程中继续建立索引,但如果临时停止非必要索引并执行同步刷新,则碎片恢复速度会更快。
在执行同步刷新时,请检查响应以确保没有故障。 由于挂起索引操作而失败的同步刷新操作会在响应主体中列出,
尽管请求本身仍然返回200状态。如果请求失败,请重新发出请求。
3、关闭即将升级版本的节点
////////////////////////////////////////////////按照实际需求操作/////////////////////////////////////////////////////
4、启动升级的节点
执行启动命令启动新升级的节点并通过查看日志文件或 curl -X GET “estest:9001/_cat/nodes” 确认节点重新加
入群集。
5、等待集群变黄重新启用分片分配
节点加入群集后,请删除cluster.routing.allocation.enable设置以启用分片分配:
# curl -X PUT "http://127.0.0.1:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "persistent": { "cluster.routing.allocation.enable": null } }'
6、等待节点恢复
可以通过提交_cat /health请求来检查进度:
# curl http://127.0.0.1:9200/_cat/health
1575097592 15:06:32 es-yt red 5 3 627 627 0 12 4717 14 2.5s 11.7%
未同步刷新的分片可能需要更长时间才能恢复。
可以通过提交_cat/recovery请求来查看单个碎片的恢复状态:
# curl http://127.0.0.1:9200/_cat/recovery
7、在其他节点重复上述操作
当节点恢复并且群集稳定时,对每个需要更新的节点重复以上步骤。(也可同时对集群各节点执行重启操作)
排除停用节点
步骤1 排除停用节点
可以通过告知群集将其从分配中排除来停用节点。
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
这将导致Elasticsearch将该节点上的分片分配给其余节点,而不会将群集状态更改为黄色或红色(即使您的副本数设置为0)。重新分配所有分片后,您可以关闭节点并执行您需要执行的任何操作。 完成后,Elasticsearch将再剩余节点上再次重新平衡分片。
步骤2 检查集群健康状态
curl -XGET 'http://ES_SERVER:9200/_cluster/health?pretty'
如果没有节点relocating,则排除节点已经被安全剔除,可以考虑关闭节点。
步骤3 判定数据是否还存在
查看节点上是否还有文档存在。
curl -XGET 'http://ES_SERVER:9200/_nodes/NODE_NAME/stats/indices?pretty'
上述三步,能保证节点稳妥删除。