news 2026/4/23 17:19:18

Elasticsearch 存储水位线测试验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch 存储水位线测试验证

目录标题

  • Elasticsearch 存储水位线测试验证
    • 环境准备
    • 一、水位线说明
      • 默认水位线
      • 注意事项:本地存储场景
    • 二、查看水位线设置
      • 方式1:查看当前有效值(推荐)
      • 方式2:查看所有默认值
      • 方式3:查看磁盘使用情况
    • 三、修改水位线
      • 3.1 永久修改(重启保留)
      • 3.2 临时修改(重启失效)
      • 3.3 恢复默认值
      • 3.4 支持的格式
    • 四、只读索引解锁
      • 4.1 查看只读索引
      • 4.2 解锁单个索引
      • 4.3 批量解锁所有索引
      • 4.4 单个解锁 vs 批量解锁
    • 五、完整测试验证流程
      • 5.1 准备测试索引
      • 5.2 降低水位线触发只读
      • 5.3 验证只读状态
      • 5.4 解锁索引并验证
      • 5.5 恢复默认水位线
      • 5.6 清理测试数据
    • 六、常见问题
      • Q1: 水位线设置报错 "high disk watermark more than flood stage"
      • Q2: 磁盘空间已释放,索引仍然只读
      • Q3: PVC显示20G,ES认为磁盘充足
    • 七、验证记录
      • 测试环境信息

Elasticsearch 存储水位线测试验证

环境准备

# 加载环境exportKUBECONFIG=/bpx/.145-admin.conf# 获取ES密码exportES_PASS=$(kubectl get secret es-0c1a4a65-es-elastic-user-nqfusion-admin-ojsonpath='{.data.elastic}'|base64-d)echo$ES_PASS# 检查集群状态kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cluster/health?pretty"

一、水位线说明

默认水位线

阈值百分比含义
low85%低于此值时开始重新平衡分片
high90%高于此值时停止分配新分片
flood_stage95%高于此值时索引变为只读

注意事项:本地存储场景

使用csi-localpv/hostPath时:

  • ES看到的磁盘容量= 底层物理磁盘总容量(如200G)
  • PVC限制= K8s分配的软限制(如20Gi)
  • 水位线计算基于物理磁盘,而非PVC限制
PVC: 20Gi ──────────────────────────┐ 实际限制 物理磁盘: 200G ──────────────────────────────────────────────┐ ES用于水位线计算

二、查看水位线设置

方式1:查看当前有效值(推荐)

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cluster/settings?flat_settings=true"

输出示例:

{"persistent":{},"transient":{"cluster.routing.allocation.disk.watermark.flood_stage":"95%","cluster.routing.allocation.disk.watermark.high":"90%","cluster.routing.allocation.disk.watermark.low":"85%"}}
  • persistent: 永久设置(重启保留)
  • transient: 临时设置(重启失效)
  • 两者为空表示使用默认值

方式2:查看所有默认值

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cluster/settings?include_defaults=true&flat_settings=true"|\grep-E"cluster.routing.allocation.disk.watermark"

方式3:查看磁盘使用情况

# 查看各节点磁盘使用率kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cat/allocation?v&h=name,disk.used_percent,disk.total"# 查看详细分配信息kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cat/allocation?v"

三、修改水位线

3.1 永久修改(重启保留)

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_cluster/settings"\-H"Content-Type: application/json"\-d'{ "persistent": { "cluster.routing.allocation.disk.watermark.low": "80%", "cluster.routing.allocation.disk.watermark.high": "85%", "cluster.routing.allocation.disk.watermark.flood_stage": "90%" } }'

3.2 临时修改(重启失效)

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_cluster/settings"\-H"Content-Type: application/json"\-d'{ "transient": { "cluster.routing.allocation.disk.watermark.low": "80%", "cluster.routing.allocation.disk.watermark.high": "85%", "cluster.routing.allocation.disk.watermark.flood_stage": "90%" } }'

3.3 恢复默认值

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_cluster/settings"\-H"Content-Type: application/json"\-d'{ "transient": { "cluster.routing.allocation.disk.watermark.low": null, "cluster.routing.allocation.disk.watermark.high": null, "cluster.routing.allocation.disk.watermark.flood_stage": null } }'

3.4 支持的格式

# 百分比"low":"85%"# 绝对值(剩余空间)"low":"500gb""low":"15gb"# 组合(两者都满足才触发)"low":"85%, 500gb"

四、只读索引解锁

4.1 查看只读索引

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_all/_settings?pretty"|\grep-B2"read_only_allow_delete"

输出示例:

"blocks":{"read_only_allow_delete":"true"}

4.2 解锁单个索引

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT\"http://localhost:9200/<index_name>/_settings"\-H"Content-Type: application/json"\-d'{"index.blocks.read_only_allow_delete": null}'

用途:只解锁指定的索引,其他索引不受影响

4.3 批量解锁所有索引

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT\"http://localhost:9200/_all/_settings"\-H"Content-Type: application/json"\-d'{"index.blocks.read_only_allow_delete": null}'

用途:一次性解锁所有索引(注意:确保磁盘空间已释放)

4.4 单个解锁 vs 批量解锁

方式范围适用场景
单个索引只解锁指定索引精确控制,部分索引恢复写入
批量解锁解锁所有索引磁盘已清理,快速恢复所有索引

五、完整测试验证流程

5.1 准备测试索引

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/test_watermark"\-H"Content-Type: application/json"\-d'{"settings": {"number_of_shards": 1, "number_of_replicas": 0}}'

5.2 降低水位线触发只读

# 设置 flood_stage 为 30%(低于当前使用率)kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_cluster/settings"\-H"Content-Type: application/json"\-d'{ "transient": { "cluster.routing.allocation.disk.watermark.low": "25%", "cluster.routing.allocation.disk.watermark.high": "28%", "cluster.routing.allocation.disk.watermark.flood_stage": "30%" } }'

5.3 验证只读状态

# 等待ES检测(约30秒)sleep30# 检查集群块kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS"http://localhost:9200/_cluster/state?pretty"|grep-A3"blocks"# 尝试写入(应该失败)kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPOST"http://localhost:9200/test_watermark/_doc"\-H"Content-Type: application/json"\-d'{"message": "test"}'

预期错误:

{"error":{"type":"cluster_block_exception","reason":"index blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark...]"},"status":429}

5.4 解锁索引并验证

# 批量解锁所有索引kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_all/_settings"\-H"Content-Type: application/json"\-d'{"index.blocks.read_only_allow_delete": null}'# 验证写入成功kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPOST"http://localhost:9200/test_watermark/_doc"\-H"Content-Type: application/json"\-d'{"message": "test after unlock"}'

5.5 恢复默认水位线

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XPUT"http://localhost:9200/_cluster/settings"\-H"Content-Type: application/json"\-d'{ "transient": { "cluster.routing.allocation.disk.watermark.low": null, "cluster.routing.allocation.disk.watermark.high": null, "cluster.routing.allocation.disk.watermark.flood_stage": null } }'

5.6 清理测试数据

kubectlexec-nqfusion-admin es-0c1a4a65-es-data-0-celasticsearch --\curl-uelastic:$ES_PASS-XDELETE"http://localhost:9200/test_watermark*"

六、常见问题

Q1: 水位线设置报错 “high disk watermark more than flood stage”

原因:flood_stage 必须大于 high,high 必须大于 low

解决:同时设置三个值,确保 low < high < flood_stage

# 错误示例"flood_stage":"30%"# high默认是90%,报错# 正确示例"low":"25%","high":"28%","flood_stage":"30%"

Q2: 磁盘空间已释放,索引仍然只读

原因:ES不会自动解除只读锁,需要手动解锁

解决:执行解锁命令

curl-XPUT"_all/_settings"-d'{"index.blocks.read_only_allow_delete": null}'

Q3: PVC显示20G,ES认为磁盘充足

原因:使用本地存储时,ES看到的是物理磁盘总容量

建议:监控PVC使用量,不要仅依赖ES水位线


七、验证记录

测试项测试时间结果备注
默认水位线查询2025-01-04✅ 通过使用默认值 low=85%, high=90%, flood_stage=95%
水位线修改(persistent)-⏭️ 跳过使用 transient 方式测试即可
水位线修改(transient)2025-01-04✅ 通过成功修改为 low=80%, high=85%, flood_stage=90%
只读锁触发2025-01-04✅ 通过设置 flood_stage=25% 后成功触发,写入返回 429 错误
单个索引解锁2025-01-04✅ 通过解锁 test_watermark 索引后写���成功
批量索引解锁2025-01-04✅ 通过使用 _all 批量解锁所有索引成功
恢复默认值2025-01-04✅ 通过transient 设置恢复为空,使用默认值

测试环境信息

  • ES 集群: es-0c1a4a65
  • 集群状态: green (3节点)
  • 测试索引: test_watermark
  • 初始磁盘使用率: 33%-39%
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:25:32

电商客服语音回复:提升订单咨询处理效率

电商客服语音回复&#xff1a;提升订单咨询处理效率 在电商平台的日常运营中&#xff0c;一个看似简单的“您的订单已发货”通知&#xff0c;往往决定了用户对品牌服务体验的第一印象。随着消费者对响应速度和交互自然度的要求越来越高&#xff0c;传统的文本客服和机械化的语音…

作者头像 李华
网站建设 2026/4/23 10:45:26

使用Mathtype公式转语音?探索GLM-TTS在学术领域的应用

使用Mathtype公式转语音&#xff1f;探索GLM-TTS在学术领域的应用 在高校教师准备一节《高等数学》网课时&#xff0c;常会遇到这样的困扰&#xff1a;讲稿里满是“lim”、“∑”、“∂f/∂x”这类符号&#xff0c;传统语音合成工具一读就错&#xff0c;学生听着一头雾水&#…

作者头像 李华
网站建设 2026/4/23 12:13:50

安装linux系统,什么情况下/usr和/var和/var/lib需要单独分区

在安装linux系统时&#xff0c;当系统磁盘空间较大、需长期稳定运行或承担特定服务&#xff08;如数据库、Web服务&#xff09;时&#xff0c;建议将/usr、/var和/var/lib单独分区。以下是具体作用及分区场景分析&#xff1a; 一、目录作用 /usr 核心功能&#xff1a;存放系统…

作者头像 李华
网站建设 2026/4/23 10:46:56

Vertgrow Ai销冠:全面提升销售效率的AI驱动销售平台

Vertgrow Ai销冠平台是一个整合多种功能的销售工具&#xff0c;旨在帮助企业提升销售效益。通过包括客户获客、内容自动生成和智能直播等多项功能&#xff0c;企业可实现更精准的市场策略。该平台的设计充分考虑了不同企业的需求&#xff0c;从小型创业公司到大型企业&#xff…

作者头像 李华
网站建设 2026/4/23 10:44:54

简单理解:XT_QSPIx 和 DMA_CFG_INFO是什么关系?

// SPI FLASH DMA操作函数&#xff08;核心&#xff1a;启动DMA传输&#xff0c;等待完成/超时&#xff0c;返回结果&#xff09; static bool SPI_FALSH_DMA_OPT(XT_SPI_TypeDef *XT_QSPIx,SPI_DMA_CFG_TypeDef *DMA_CFG_INFO)XT_QSPIx 和 DMA_CFG_INFO 是 “硬件对象” 与 “…

作者头像 李华