Elasticsearch:High disk watermark

你的 Elasticsearch 集群上有各种 “水位” 阈值。 当一个节点上的磁盘填满时,要跨越的第一个阈值将是 “低磁盘水位”。 第二个阈值将是 “高磁盘水位”。 如果你超过此阈值,则 Elasticsearch 将尝试将分片从该节点重新定位到集群中的其他节点。

如何解决这个问题

超过此阈值是一个警告,你不应在达到更高阈值 flood_stage 之前延迟采取行动。 你可以采取以下措施来解决问题:

  • 删除旧索引
  • 从现有索引中删除文档
  • 减少副本数量(在旧索引上)
  • 增加所有节点上的磁盘空间
  • 向集群添加新节点

尽管你可能不愿意删除数据,但在日志系统中,删除旧索引(如果可用的话,你可以稍后从快照中恢复)通常比丢失新数据要好。 但是,此决定将取决于你的系统架构和你可用的排队机制。

检查每个节点上的磁盘空间

你可以通过运行以下命令查看每个节点上的可用空间:

GET _nodes/stats/fs

检查集群是否正在重新平衡

如果高水位已经通过,那么 Elasticsearch 应该开始重新平衡从该节点到仍然低于低水位的其他节点的分片。 你可以通过调用以下方法检查是否有任何重新平衡正在进行:

GET _cluster/health/

如果你认为您的集群应该将分片重新平衡到其他节点,但事实并非如此,则可能有一些其他集群分配规则阻止了这种情况的发生。 最可能的原因是:

  • 其他节点已经在低磁盘水位之上
  • 集群分配规则控制节点之间的分片分布,并与重新平衡要求相冲突。 (例如,区域感知分配)。
  • 正在进行的再平衡操作太多了
  • 其他节点已经包含可以重新平衡的分片的主分片或副本分片。

检查集群设置

你可以使用如下的命令查看已使用的设置:

GET _cluster/settings

如果它们不合适,你可以使用如下命令修改它们:

注意:阈值可以指定为百分比和字节值,但前者更灵活且更易于维护(以防不同的节点具有不同的磁盘大小,例如在热/温部署中)。

如何避免它

有多种机制可以自动删除陈旧数据。

如何自动删除陈旧数据:

1) 应用 ILM(索引生命周期管理

   使用 ILM,你可以让 Elasticsearch 在当前索引大小达到给定年龄时自动删除索引。

2) 使用基于日期的索引

    如果你的应用程序使用基于日期的索引,那么使用脚本或 Elasticsearch curator 等工具可以轻松删除旧索引。

3) 使用快照离线存储数据

    离线存储快照数据并在需要查看或研究存档数据时将其恢复可能是合适的。

4) 自动化/简化添加新数据节点的过程

    使用 terraform 等自动化工具自动向集群添加新节点。 如果这是不可能的,至少要确保你有一个明确记录的过程来创建新. 节点、添加 TLS 证书和配置,并在短时间内将它们带入 Elasticsearch 集群并在可预测的时间范围内。

更多阅读:Elasticsearch:Low disk watermark

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值