当前位置: 首页 > news >正文

【ELasticsearch】节点角色分离最佳实践

集群部署实践

  • 1.集群架构设计
  • 2.节点角色配置详解
    • 2.1 热层节点(Hot)
    • 2.2 温层节点(Warm)
    • 2.3 冷层节点(Cold)
    • 2.4 冷冻层节点(Frozen)
  • 3.分层存储流动逻辑
  • 4.关键配置说明
  • 5.硬件选型对比表
  • 6.为什么需要 data_content 角色 ?
  • 7.架构优势总结

本文介绍一个基于严格分层架构的 Elasticsearch 生产集群设计方案,满足 冷冻 四层存储需求,并结合硬件选型与角色配置说明。

1.集群架构设计

数据层节点角色组合核心功能节点数量分片策略
热层data_hot + ingest实时写入、高频检索≥3≥ 33副本数 ≥1≥11
温层data_content + data_warm近期访问数据、中等频率查询≥3≥ 33副本数 =1=1=1
冷层data_content + data_cold历史数据归档、低频查询2−32-323副本数 =1= 1=1 (可降为 000
冷冻层data_content + data_frozen长期存档、几乎不访问1−21-212副本数 =0=0=0 +++ 对象存储

2.节点角色配置详解

2.1 热层节点(Hot)

# elasticsearch.yml
node.roles: [ data_hot, ingest ]
node.attr.tier: hot
  • 硬件规格
    • CPU16核+(高频处理器,如 Intel Xeon Gold 63xx)
    • 内存64GB+(堆内存分配 ≤ 30GB,剩余给 OS Cache)
    • 磁盘NVMe SSD × 2(RAID 0),单盘 1 - 2 TB。NVMe 提供百万级 IOPS,应对高并发写入/实时查询。
  • 磁盘策略:单节点多磁盘条带化(提升 IO 吞吐)。

2.2 温层节点(Warm)

# elasticsearch.yml
node.roles: [ data_content, data_warm ]  # 关键:data_content持久化数据
node.attr.tier: warm
  • 硬件规格
    • CPU8核(中端处理器)
    • 内存32GB(堆内存 ≤ 16GB)
    • 磁盘SAS SSD × 4(RAID 10),单盘 2 - 4 TB。SAS SSD 成本低于 NVMe,但仍有数千 IOPS,适合中等查询负载。
  • 优化:关闭 index.refresh_interval(降低刷新频率)。

2.3 冷层节点(Cold)

# elasticsearch.yml
node.roles: [ data_content, data_cold ]
node.attr.tier: cold
  • 硬件规格
    • CPU4核(低功耗处理器)
    • 内存16GB(堆内存≤8GB)
    • 磁盘7200rpm HDD × 6(JBOD),单盘 8 -16 TB。HDD 每 TB 成本仅为 SSD 的 1/51/51/5,容量优先,容忍高延迟。
  • 策略:设置 index.codec: best_compression(最大化压缩)。

2.4 冷冻层节点(Frozen)

# elasticsearch.yml
node.roles: [ data_content, data_frozen ]
node.attr.tier: frozen
  • 硬件规格
    • CPU4核(共享资源)
    • 内存16GB
    • 磁盘SATA HDD × 1 (512GB 缓存盘) + 对接对象存储(如 AWS S3)。本地磁盘仅作缓存,长期数据存于对象存储(每 TB 成本 <<< $202020)。
  • 集成:使用 Elasticsearch 的 Searchable Snapshots 特性。

3.分层存储流动逻辑

ILM策略触发滚动
30天后
90天后
卸载索引
新数据写入
热层节点
索引移至温层
索引移至冷层
创建快照上传至S3
冷冻层按需挂载查询

4.关键配置说明

  • ILM 策略示例
    PUT _ilm/policy/tiered_policy
    {"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size":"50gb"}}},"warm": {"min_age":"3d", "actions": {"allocate": {"require": {"tier":"warm"}}}},"cold": {"min_age":"30d", "actions": {"allocate": {"require": {"tier":"cold"}}}},"frozen": {"min_age":"90d", "actions": {"searchable_snapshot": {"snapshot_repository":"s3_repo"}}}}}
    }
    
  • 节点属性分配
    • 启动参数中添加:-Enode.attr.tier=hot(各层对应值不同)
  • 冷冻层集成对象存储
    PUT _snapshot/s3_repo
    {"type": "s3","settings": {"bucket": "my-frozen-archive"}
    }
    

5.硬件选型对比表

层级存储类型单节点容量成本/TB/年适用场景
热层NVMe SSD2−42-424 TBTBTB$1,500+1,500+1,500+日志、实时监控
温层SAS SSD8−168-16816 TBTBTB$800800800近线业务数据
冷层HDD(JBOD)48−9648-964896 TBTBTB$150150150审计日志、历史订单
冷冻层S3∞∞$202020合规存档(7年以上)

:成本基于公有云/自建 IDC 混合模型估算,实际需按供应商报价调整。

6.为什么需要 data_content 角色 ?

  • 核心作用:在 7.9+ 版本中,data_content 角色替代了传统的 data 角色,明确标识该节点存储持久化数据(非时序数据)
  • 分层必要性:温 / 冷 / 冷冻层的数据需长期保留,必须用 data_content 防止误删。
  • 与热层分离:热层使用 data_hot(可自动清理滚动索引),避免持久化占用高性能资源。

7.架构优势总结

  • 成本优化:SSD 使用量减少 70%+70\%+70%+,存储成本下降 555 倍(热 → 冷冻层)
  • 性能隔离:避免高 IO 负载(热层)影响归档查询(冷冻层)
  • 扩展灵活:每层独立扩容(如冷层优先加磁盘,热层优先加 CPU)
  • 合规就绪:冷冻层依托对象存储实现 WORM(Write Once Read Many)

🚀 实际部署建议:使用 Kubernetes Operators(如 ECK)或 Terraform 实现分层节点自动化部署。

http://www.dtcms.com/a/301499.html

相关文章:

  • 【LeetCode 热题 100】35. 搜索插入位置——二分查找(左闭右开)
  • 剑指offer第2版:双指针+排序+分治+滑动窗口
  • Web开发系列-第0章 Web介绍
  • 面试题:Vue2 中 template 的解析过程详解
  • CentOS 镜像源配置与 EOL 后的应对策略
  • 修改docker容器内的时区为东八区
  • 字符串是数据结构还是数据类型?
  • 常见认证机制详解
  • 哈希表应用(map,set共同作用)
  • Dify 深度解析:开启 AI 应用开发的无限可能
  • VUE3(四)、组件通信
  • 1439-素数环2
  • 基于深度学习的图像分割:使用DeepLabv3实现高效分割
  • QT6 源,七章对话框与多窗体(17)用于辅助多文档 MDI 窗体设计 QMdiArea 的类 QMdiSubWindow:
  • [10月考试] B
  • 3.5-非关系型数据库-反规范化-sql语言
  • 市电有电检测电路
  • [硬件电路-96]:什么是闭环反馈?什么是闭环正反馈控制?什么是闭环负反馈控制?
  • RK3568 Linux驱动学习——Linux驱动开发准备工作
  • 企业IT管理——突发病毒事件应急处理预案模板
  • 永磁同步电机控制算法--弱磁控制(虚拟电阻)
  • 51c大模型~合集160
  • 重温经典,小巧方便的 WinXP 来啦!提供离线驱动
  • 【编号444】雅鲁藏布江(上中下)游8级水系湖泊数据合集
  • net8.0一键创建支持(RabbitMQ)
  • 神经网络知识讨论
  • 嵌入式硬件篇---驱动板
  • 【学习笔记】DexMimicGen:通过模仿学习实现双臂灵巧操作的自动化数据生成
  • 数据结构基础内容(第三篇:堆栈)
  • 深度解析 inaSpeechSegmenter:高效音频语音分割与检测开源工具