• 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"
                }
            }
        ]
    }
  • 相关阅读:
    php遍历目录下的所有文件夹
    PHP 遍历文件
    PHP中public protected private的区别
    mysql数据库优化的方法
    Thinkphp 验证器
    PHP 接口
    php获取表单的值
    PHP 数组
    php 递归
    [go系列] 函数
  • 原文地址:https://www.cnblogs.com/daemonyue/p/14208265.html
Copyright © 2020-2023  润新知