zoukankan      html  css  js  c++  java
  • ES节点磁盘空间不均导致分片无法分配的临时收敛思路

    ● 系统环境说明

    Linux环境:centos 7.2
    腾讯云ES Service:7.5.1
    Java:1.8.0_181

    ● 集群配置

    32核64GB, 3个(数据节点)
    1000GB SSD云硬盘 x1

    问题异常:


    节点之间磁盘空间使用率不均,个别节点磁盘被写满,分片无法分配。

    问题原因

    1. 由于ES balance机制是仅按分片数均衡,所以经常会遇到这种个别节点磁盘被占满的问题;
    2. 发生这种问题的主要原因是因为集群有个别比较大的索引,而分片又比较少,不能被有效均衡,所以导致个别节点磁盘占用率比较高。

    解决思路

    这种问题可以从以下操作思路进行缓解:

    1. 把一些相对没那么大的分片块(1g~10g),一点一点从磁盘已满的节点挪到磁盘空间相对富余的节点;
    2. 需要做对称挪动,否则刚才步骤1中挪动的分片可能还会被balance回去。所以把一些数据量非常小的历史分片(1k~1m)挪到磁盘空间紧张的节点,这样就没有打破分片数的均衡;
    3. 整个操作中需要关注集群的分片balance情况(allocation api),观察集群分片是否均衡,否则收敛是徒劳的。

    分片挪动:

    POST _cluster/reroute {
        "commands" : [ {
            "move" :
                {
                  "index" : "test", "shard" : 0,
                  "from_node" : "node1", "to_node" : "node2"
                }
            }
        ]
    }
  • 相关阅读:
    Javascript高级篇-Function对象
    Object类、instanceof
    [一]Head First设计模式之【策略模式】(鸭子设计的优化历程)
    匿名内部类
    设计模式之单例模式
    长江商业评论读书笔记
    [转]Freemarker数据类型转换
    面向对象编程——概论(一)
    IP地址处理模块IPy
    系统性能模块psutil
  • 原文地址:https://www.cnblogs.com/daemonyue/p/14208265.html
Copyright © 2011-2022 走看看