📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

node.local_storage 配置项用于控制节点是否允许将元数据等数据持久化到本地磁盘

此设置不影响节点是否存储实际的索引数据(由 node.data 控制),但如果 node.local_storage 设置为 false,则 node.datanode.master 也必须为 false

注意:此配置项已被废弃,推荐使用 node.roles 配置来替代。

配置项属性 #

  • 配置路径: node.local_storage
  • 数据类型: Boolean(布尔值)
  • 默认值: true
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 否(需要重启节点生效)
  • 废弃状态: 已废弃,使用 node.roles 替代

配置项详解 #

工作机制 #

节点本地存储机制

启用本地存储 (node.local_storage: true):
├── 可以持久化元数据
├── 可以存储集群状态
├── 可以存储索引数据 (如果 node.data: true)
├── 可以参与主节点选举 (如果 node.master: true)
└── 正常节点模式 ✅


禁用本地存储 (node.local_storage: false):
├── 不持久化元数据
├── 不存储集群状态
├── 不能存储索引数据 (node.data 必须为 false)
├── 不能参与主节点选举 (node.master 必须为 false)
├── 仅作为协调节点运行
└── 轻量级节点模式 ✅

存储内容说明 #

本地存储的内容

启用时持久化的内容:
├── 集群元数据
│   ├── 索引配置
│   ├── 映射定义
│   ├── 别名信息
│   └── 设置信息
├── 节点状态
│   ├── 节点 ID
│   ├── 节点属性
│   └── 发现信息
├── 索引数据
│   ├── 分片数据
│   ├── 事务日志
│   └── 段文件
└── 快照信息


禁用后的行为:
├── 元数据存储: 内存中 ❌
├── 集群状态: 不持久化 ❌
├── 索引数据: 不存储 ❌
└── 重启后: 重新获取

角色限制验证 #

配置验证规则

规则 1: local_storage = false 且 data = true
├── 配置冲突 ❌
├── 启动失败
└── 错误: 不能在没有本地存储时存储数据


规则 2: local_storage = false 且 master = true
├── 配置冲突 ❌
├── 启动失败
└── 错误: 不能在没有本地存储时作为主节点


规则 3: local_storage = false 且其他角色
├── data = false ✅
├── master = false ✅
├── ingest = true/false ✅
└── 正常运行


正确配置示例:
# 协调节点
node.local_storage: false
node.data: false
node.master: false
node.ingest: false

与 path.data 的关系 #

path.data 配置关系

启用本地存储:
node.local_storage: true
path.data: /data/easysearch
    │
    ├── 使用指定路径
    ├── 存储元数据
    ├── 存储索引数据
    └── 正常工作 ✅


禁用本地存储但有 path.data:
node.local_storage: false
path.data: /data/easysearch
    │
    ├── 配置冲突 ❌
    ├── 启动失败
    └── 不应配置数据路径


禁用本地存储且无 path.data:
node.local_storage: false
# 不设置 path.data
    │
    ├── 使用空路径数组
    ├── 仅作为协调节点
    └── 正常工作 ✅

配置建议 #

生产环境(默认) #

node:
  local_storage: true  # 默认值

建议: 保持默认值 true。大多数节点需要本地存储。

协调节点 #

node:
  local_storage: false  # 禁用本地存储
  data: false
  master: false

建议: 协调节点禁用本地存储,减少资源占用。

数据节点 #

node:
  local_storage: true  # 必须启用
  data: true

建议: 数据节点必须启用本地存储。

主节点 #

node:
  local_storage: true  # 必须启用
  master: true

建议: 主节点必须启用本地存储以存储集群元数据。

推荐配置(使用新角色) #

# 协调节点(无本地存储)
node.roles: []

# 数据/主节点(有本地存储)
node.roles: [ "data", "master" ]

建议: 使用 node.roles 替代废弃的配置。

代码示例 #

easysearch.yml 基础配置 #

node:
  local_storage: true

协调节点配置 #

node:
  name: "coordinating-node"
  local_storage: false
  data: false
  master: false
  ingest: false

数据节点配置 #

node:
  name: "data-node-1"
  local_storage: true
  data: true
  master: false

主节点配置 #

node:
  name: "master-node-1"
  local_storage: true
  master: true
  data: false

推荐使用角色配置 #

# 协调节点(无本地存储)
node.roles: []
node.name: "coordinating-node"

# 数据节点(有本地存储)
node.roles: [ "data" ]
path.data: /data/easysearch

# 主节点(有本地存储)
node.roles: [ "master" ]
path.data: /data/easysearch

相关配置 #

配置项作用默认值
node.local_storage本地存储开关true
node.data数据节点角色true
node.master主节点角色true
path.data数据路径-
node.roles节点角色列表(推荐)-

角色映射关系 #

废弃配置与新角色映射

协调节点 (无本地存储):
旧配置:
node.local_storage: false
node.data: false
node.master: false
node.ingest: false


新配置 (推荐):
node.roles: []  (空列表)


全功能节点 (有本地存储):
旧配置:
node.local_storage: true
node.data: true
node.master: true
node.ingest: true


新配置 (推荐):
node.roles: [ "master", "data", "ingest" ]


数据节点 (有本地存储):
旧配置:
node.local_storage: true
node.data: true
node.master: false


新配置 (推荐):
node.roles: [ "data" ]

性能影响分析 #

node.local_storage 设置优点缺点
true持久化数据、完整功能磁盘 I/O 开销
false无磁盘开销、轻量无状态、需重新加载数据

资源消耗对比 #

资源消耗分析

启用本地存储:
├── 磁盘使用
│   ├── 元数据存储
│   ├── 集群状态
│   ├── 索引数据
│   └── 事务日志
├── 磁盘 I/O
│   ├── 读取操作
│   ├── 写入操作
│   └── 持久化开销
└── 故障恢复
    ├── 快速恢复
    └── 数据保留


禁用本地存储:
├── 磁盘使用: 无 ✅
├── 磁盘 I/O: 无 ✅
├── 内存使用: 较少 ✅
├── 启动速度: 快 ✅
└── 故障恢复: 无需恢复 ✅

使用场景 #

推荐启用 local_storage 的场景 #

  • 数据节点: 需要存储索引数据
  • 主节点: 需要持久化集群元数据
  • 摄取节点: 可能需要存储管道信息
  • 持久化需求: 数据必须持久化

推荐禁用 local_storage 的场景 #

  • 协调节点: 仅处理查询分发
  • 轻量网关: 作为查询网关
  • 资源受限: 无可用磁盘
  • 无状态部署: 云环境无状态节点

集群规划建议 #

集群存储规划

小型集群:
├── 所有节点启用 local_storage
├── 简化配置
└── 足够应对需求


中型集群:
├── 数据节点: local_storage: true
├── 主节点: local_storage: true
├── 协调节点: local_storage: false
└── 分层架构


大型集群:
├── 协调节点层: local_storage: false
├── 数据节点层: local_storage: true
├── 主节点层: local_storage: true
└── 清晰分离


云环境:
├── 有状态节点: local_storage: true
├── 无状态节点: local_storage: false
├── 弹性伸缩
└── 成本优化

注意事项 #

  1. 已废弃: 此配置项已被废弃,推荐使用 node.roles

  2. 需要重启: 修改此配置需要重启节点。

  3. 角色限制: 禁用后 data 和 master 必须为 false。

  4. 数据路径: 禁用后不应配置 path.data。

  5. 元数据丢失: 重启后需要重新获取元数据。

  6. 状态依赖: 依赖其他节点的持久化能力。

  7. 集群稳定: 确保有足够的持久化节点。

  8. 监控建议: 监控协调节点的内存使用。

  9. 网络依赖: 所有数据都需要从其他节点获取。

  10. 迁移建议: 新配置使用 node.roles

部署模式 #

节点部署模式

有状态节点:
├── local_storage: true
├── 持久化数据
├── 完整功能
└── 推荐: 数据节点、主节点


无状态节点:
├── local_storage: false
├── 无持久化
├── 轻量级
└── 推荐: 协调节点


混合部署:
├── 有状态层: 数据和主节点
├── 无状态层: 协调节点
├── 弹性扩展
└── 成本优化

废弃说明 #

配置迁移指南

从废弃配置迁移到新配置

协调节点:
旧配置:
node.local_storage: false
node.data: false
node.master: false
node.ingest: false


新配置 (推荐):
node.roles: []


数据节点:
旧配置:
node.local_storage: true
node.data: true
node.master: false


新配置 (推荐):
node.roles: [ "data" ]


主节点:
旧配置:
node.local_storage: true
node.master: true
node.data: false


新配置 (推荐):
node.roles: [ "master" ]


迁移步骤:
1. 备份当前配置
2. 确定所需角色
3. 更新配置文件
4. 滚动重启节点
5. 验证集群状态