文章四:Elasticsearch 的扩容与集群升级

集群扩容:

集群扩容需求背景:

  1. 存储容量瓶颈:集群磁盘使用率超过 50% 时需启动扩容评估,超过 75% 时必须立即扩容,避免触发磁盘水位保护机制导致写入异常。
  2. CPU 与系统负载过高:节点 CPU 使用率长期居高不下、系统 Load 持续高于核数,导致查询与写入响应延迟显著增加。
  3. 内存资源不足:节点整体内存占用过高,包括 JVM Heap 内存和文件系统缓存(Filesystem Cache)不足,引发频繁 GC、查询性能下降。
  4. IO 与网络瓶颈:集群出现节点级 IO、机架级 IO 或网络 IO 瓶颈,影响分片迁移、数据同步和业务读写性能。
  5. 版本性能与功能升级需求:旧版本存在性能局限,新版本(如 ES 7.7+ 引入 off-heap 内存优化、ES 7.13.x 新增 Frozen Tier 冷数据层)有显著性能提升和新特性支持,需通过扩容适配新架构。

集群扩容方案:

横向扩容:

纵向扩容:

  • 增加垂直硬件的吞吐能力
  • 提升硬件性能提升最明显

程序内核升级:

新的版本的ES的性能一定是优于老版本的,可以采用升级内核的方式解决问题。这也是一种变相扩容的方式。

集群扩容总体方案:

  • 集群规模可以:10~20 20~40 40~60.60~80.但是不建议扩充超过100节点的集群,
  • 如果超过的话可以使用CCS这种方式解决问题,对于数据的同步可以使用CCR。

集群横向扩容实战:

  1. 禁用集群自动平衡,因为我们添加新的节点时,他会自动的将分片进行平衡,但是如果我们的节点启动失败,就会造成问题。还有就是假设我们增加多个节点的话,每个节点的加入都会让他进行一次资源的平衡,这个也占用es的资源。
复制代码
   PUT _cluster/settings
   {
     "persistent": {
       "cluster": {
         "routing": {
           "rebalance.enable":"none"
         }
       }
     }
   }
   参数含义:让 Elasticsearch 自动把分片均匀分配到所有节点上,不让某个节点压力太大。
  1. 新增节点全部部署之后,重新开启

es集群挂载多个磁盘:

同一个 ES 节点 同时使用多块本地磁盘(像 Windows C 盘、D 盘一样),提升容量、IO,且一块盘坏了只影响部分数据,不整节点崩溃。

编辑配置文件

复制代码
# 数据存储路径(多个磁盘/目录)
path.data:
  - /data1/es-data
  - /data2/es-data
  - /data3/es-data

# 其他必须配置
cluster.name: es-cluster
node.name: node-1
network.host: 0.0.0.0

授权目录

复制代码
mkdir -p /data1/es-data /data2/es-data /data3/es-data
chown -R elastic:elastic /data1 /data2 /data3

重启es

复制代码
./bin/elasticsearch -d

集群缩容:

ES 缩容不是直接关节点! 直接关节点 = 数据丢失 / 集群变红 / 业务崩溃。正确缩容 = 先把数据挪走 → 再下线节点 → 最后删除。

java 复制代码
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._ip": "要下线的节点IP"
  }
}

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._host": "主机名"
  }
}

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._name": "节点名称"
  }
}

之后等待当前节点上所有的分片都迁移完成。迁移完成之后在执行关闭节点操作

取消exclude:

java 复制代码
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._ip": null
  }
}


##其他的配置也同样

索引升级实战

下面的案例使用滚动升级的案例,将已有版本进行升级:

升级 Elasticsearch |弹性安装与升级指南 8.19 |弹性 这个是滚动升级的官网。按着官网操作就可以了。

集群降级

集群升级之后不可以进行降级操作,只能是通过原始的方式,reindex这种方式。

相关推荐
星辰_mya9 小时前
CountDownLatch深度解析
java·开发语言·后端·架构
伊甸39 小时前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存
cfm_29149 小时前
JVM新一代垃圾收集器深度解析:G1与ZGC
java·jvm
x***r1519 小时前
.NET 10 SDK 安装教程(dotnet-sdk-10.0.100-win-x64详细步骤)
java·服务器·前端
摇滚侠9 小时前
MyBatis 入门到项目实战 MyBatis 的缓存 56-61
java·缓存·mybatis
让我上个超影吧10 小时前
Claude code:Hooks
java·数据库·ai编程
RH23121110 小时前
2026.6.8Linux
java·数据库·中间件
blue_dou10 小时前
灵活拓展能力对决:多款CRM自定义与数据互通实测
大数据·人工智能
于指尖飞舞10 小时前
java后端面试题(多线程极简)
java·开发语言
IT 行者10 小时前
GitHub Spec Kit 实战(四):读懂和干预 /speckit.plan——AI 最自由发挥的一步
java·人工智能·github·ai编程·claude