Easyearch 为了防止索引将磁盘空间完全占满,使用磁盘水位线进行磁盘空间控制。具体来说有三条磁盘水位线:low 、high 、flood。
低水位线
通过参数 cluster.routing.allocation.disk.watermark.low
进行设置,默认值 85%。也可设置成一个具体值,比如:400mb,代表须保留 400mb 空闲磁盘空间,否则就算超水位线。
一旦节点磁盘使用率超过了低水位线,Easysearch 集群不会将分片分配至该节点,但是不影响新建索引的主分片分配到该节点,新建索引的副本分配不能分配到该节点。
如果所有节点都超过高水位线,此时创建新索引会导致集群状态变成 yellow。
高水位线
通过参数 cluster.routing.allocation.disk.watermark.high
进行设置,默认值 90%。也可设置成一个具体值,比如:300mb,代表须保留 300mb 空闲磁盘空间,否则就算超水位线。
一旦节点磁盘使用率超过了高水位线,Easysearch 集群会尝试将分片移动到其他节点,不允许任何分片分配到该节点。
如果所有节点都超过高水位线,此时创建新索引会导致集群状态变成 red。
洪水位线
通过参数 cluster.routing.allocation.disk.watermark.flood_stage
进行设置,默认值 95%。也可设置成一个具体值,比如:200mb,代表须保留 200mb 空闲磁盘空间,否则就算超水位线。
一旦节点磁盘使用率超过了洪水位线,Easysearch 集群会为该节点上的所有索引添加只读锁 ,包括系统索引。只读锁会阻止新数据写入,当磁盘利用率低于高水位线时,只读锁会自动释放。
针对节点磁盘使用率,我们可以使用 INFINI Console 进行节点磁盘使用率告警,便于我们及时发现问题苗头,提前进行处理。