美文网首页
ES集群重启最佳实践

ES集群重启最佳实践

作者: A_You | 来源:发表于2019-06-08 10:08 被阅读0次

    线上集群规模

    • data节点:12
    • 单index大小:20GB ~ 40GB
    • 副本数:1
    • 索引数(按天拆分索引):600

    非安全重启面临的问题

    • 直接kill掉节点,可能导致数据丢失
    • 集群会认为该节点挂掉了,集群重新分配数据进行数据转移(shard rebalance),会导致节点直接大量传输数据
    • 节点重启之后,恢复数据,同样产生大量的磁盘、网络流量,耗费机器和网络资源的。

    安全重启步骤

    • 暂停数据写入程序
    • 关闭集群shard allocation
    • 手动执行POST /_flush/synced
    • 重启节点
    • 重新开启集群shard allocation
    • 等待recovery完成,集群health status变成green
    • 重新开启数据写入程序

    速度调优

    • 可临时增大 max_bytes_per_sec;随后在进行更改
    • 可以多节点同时操作
    • 可以将历史索引的副本数暂时调整为0;集群恢复后在进行调整
    • 使用 _forcemerge

    相关API

    • synced flush: curl -XPOST localhost:9200/_flush/synced
    • _forcemerge: forcemerge?max_num_segments=1
    • 禁用 shard allocation curl -XPUT localhost:9200/_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "none" }}
    • 启用 shard allocation:curl -XPUT localhost:9200/_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "all" }}
    • 增大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}}
    • 一些查看恢复速度的API:curl localhost:9200/{index}/_stats?level=shards&pretty curl localhost:9200/{index}/_recovery?pretty&human&detailed=true curl localhost:9200/_cat/recovery

    总结

    按照上述操作,集群重启恢复(恢复80%)使用 1小时;随后就开启数据写入,恢复速率大大减慢,但并不影响正常使用

    相关文章

      网友评论

          本文标题:ES集群重启最佳实践

          本文链接:https://www.haomeiwen.com/subject/frnpxctx.html