news 2026/4/17 12:31:58

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/16 15:01:47

诗歌朗诵艺术再现:探索AI在文学表达中的边界

诗歌朗诵艺术再现&#xff1a;探索AI在文学表达中的边界 在朗读一首古诗时&#xff0c;我们为何会被某位名家的演绎深深打动&#xff1f;或许不只是因为文字本身&#xff0c;而是那声音里的停顿、轻重、气息与情感起伏——这些细微之处构成了语言的艺术灵魂。长久以来&#xff…

作者头像 李华
网站建设 2026/4/16 21:29:29

GPU算力租赁广告植入:在技术博客中自然推广硬件资源

GPU算力租赁广告植入&#xff1a;在技术博客中自然推广硬件资源 在语音合成技术快速演进的今天&#xff0c;我们早已不再满足于“机器念字”式的生硬播报。从智能助手到有声内容创作&#xff0c;用户对语音的自然度、情感表达和个性化提出了前所未有的高要求。以GLM-TTS为代表的…

作者头像 李华
网站建设 2026/4/17 12:31:40

技术文档SEO优化:提升GLM-TTS相关内容搜索排名

技术文档SEO优化&#xff1a;提升GLM-TTS相关内容搜索排名 在AI语音合成技术迅速渗透教育、媒体与数字人产业的今天&#xff0c;一个开源项目能否被广泛采用&#xff0c;往往不只取决于其算法能力——开发者能不能快速找到它、看懂它、用起来&#xff0c;才是决定成败的关键。G…

作者头像 李华
网站建设 2026/4/11 1:56:53

错误码说明文档:帮助开发者快速定位GLM-TTS调用问题

GLM-TTS 故障排查与运行机制深度解析 在语音合成系统日益复杂的今天&#xff0c;开发者面临的挑战早已不止于“能不能生成语音”&#xff0c;而是“为什么这次没生成”——尤其是在部署像 GLM-TTS 这类基于大模型的零样本语音克隆系统时&#xff0c;一个看似简单的请求失败背后…

作者头像 李华
网站建设 2026/4/16 14:14:44

金融风控通知:自动生成个性化的风险预警语音

金融风控通知&#xff1a;自动生成个性化的风险预警语音 在金融风控的实际运营中&#xff0c;时间就是防线。当系统检测到一笔异常交易时&#xff0c;能否在黄金十分钟内触达客户&#xff0c;往往决定了资金是否能够成功拦截。然而现实是&#xff0c;许多机构仍依赖人工坐席逐个…

作者头像 李华
网站建设 2026/4/16 21:33:20

地理定位优化服务的技术现状与行业分析

在当下数字化转型如浪潮般涌来的情形里&#xff0c;一种叫做GEO也就是地理定位优化的服务&#xff0c;已然变成了企业在网络上精准获取客户、提高本地化营销效率的关键技术方面的支撑。这项服务借助对搜索引擎、地图应用以及各类本地生活平台的内容开展有针对性的优化&#xff…

作者头像 李华