当Elasticsearch(ES)集群的CPU、内存、磁盘等资源使用率持续处于高位,或查询与写入性能无法满足业务需求时,可通过扩展节点数量、 提升节点规格、增加磁盘空间、新增节点类型等方式升级集群配置,恢复服务稳定性。
升配前须知
升配操作可能引发服务延迟、配置冲突及费用变更,请务必提前完整阅读以下须知内容。
升配前检查
未完成以下检查直接升配可能导致集群崩溃、数据丢失或服务不可用,请逐项检查验证。
集群健康
执行
GET _cluster/health确保集群为状态为GREEN。如遇集群状态不健康,请参照集群变更报错-集群状态不健康进行解决。负载安全
执行
GET _cat/nodes?v,建议CPU ≤ 60%,如果超出,客户端启用重试机制,同时增加索引副本数。索引就绪
执行
GET /_cat/indices?v检查是否存在状态为CLOSE的索引。如果存在,需执行POST /<index_name>/_open临时打开这些索引,否则配置变更可能失败,原因说明:存在CLOSE状态的索引时,集群状态无法达到GREEN。ES在执行某些敏感配置变更(如分片分配规则调整)前会强制要求集群状态为GREEN。
变配过程中集群会重新分配分片:
关闭索引的分片无法参与重分配。
导致依赖GREEN状态的操作失败。
导致集群状态无法达到GREEN(最高只能达到YELLOW)。
执行
GET _cat/indices?v检查索引副本数是否至少为1。对于多可用区实例,在变更时需确保集群中任意一个索引的副本数小于可用区数,建议副本数设置为1,变更完成后,手动增加副本数。
分片均衡
执行
GET _cat/shards?v检查是否存在不均衡的分片。重要升配前检查分片分布是否均衡,是预防升配过程中或完成后集群性能恶化甚至崩溃的关键措施。
prirep:副本分片(r)是否未分配(UNASSIGNED)。state:是否存在长期迁移卡住(RELOCATING)。
上述问题会阻止新节点正常接收分片,导致升配后集群状态持续YELLOW/RED,如存在上述问题,请参见集群负载不均解决方案进行解决。
方式一:通过控制台升配
在实例列表,单击升配。
更多操作入口:在基本信息页面,单击
在变配页面,根据业务需要调整配置项参数。
重要可调整的配置项参数因集群类型和版本不同而有所出入,以升配页面为准。
可用区数量变配规则如下,如遇可用区规格库存不足时,需迁移可用区下的节点后再升配。
扩增:支持从 1 个可用区扩增至 2 个或 3 个可用区。
支持节点规格(节点存储类型)升级,按性能从低到高排序:
上一代云盘:云盘(普通云盘)-> 高效云盘->SSD云盘。
说明已在部分地域及可用区逐步停止售卖,您在选择云盘时,建议选用ESSD云盘。
ESSD云盘:ESSD(Enterprise SSD)云盘结合25 GE网络和RDMA技术,为您提供单盘高达100万的随机读写能力和单路低时延性能。
本地盘。
说明本地盘是ECS实例所在物理机上的本地硬盘设备,为ECS实例提供本地存储访问能力,适用于对存储I/O性能、海量存储性价比有极高要求的业务场景。
SSD 云盘升级为 ESSD 云盘
当集群磁盘 IOUtil 使用率较高且经常打满时,建议将磁盘类型从 SSD 云盘升级为 ESSD 云盘,以提升 I/O 性能。
组合变更注意事项:若需同时进行规格升配、磁盘类型变更及扩容,请注意修改磁盘类型不支持原地变更,仅支持蓝绿变更。为避免多次数据迁移,建议分步操作:
先进行实例规格变更和扩容(可使用智能变更或原地变更),待服务恢复后再执行下一步。
单独进行磁盘类型变更(蓝绿变更)。蓝绿变更仅在数据同步完成切换节点时可能有闪断,对业务影响较小。
智能变更(默认开启):系统根据变配项自动选择最优变更方式。可手动关闭并指定变更方式:
变更方式
原理
耗时
服务影响和使用场景
蓝绿变更
添加新节点→拷贝数据→无缝切换
较长
节点IP会发生变化、集群性能可能出现短暂波动。
适用于对变更时长不敏感,对集群可用性要求较高的场景。
原地变更
滚动更新节点(无需数据拷贝)
较短
节点IP无变化、集群性能可能出现短暂波动。
适用于集群遇到性能瓶颈,期望快速完成变更的场景。
重要如果水位较高(如CPU>60%),谨慎选择原地变更。
说明原地变更并非所有操作都会触发滚动重启:
节点规格变更(如升级 CPU、内存)会逐个重启节点完成变更。
v3 实例扩容磁盘仅执行在线扩容,无需重启节点。
强制变更:跳过健康检查,但会触发集群强制重启,可能导致服务长时间中断(恢复时间取决于数据量),仅用于紧急扩容且集群已不可用场景。
单击查看产品服务协议、服务等级协议,无异议后,单击立即购买,系统按照付费方式收取费用。
变更期间,集群状态变为生效中,集群性能可能出现短暂波动,可能出现请求闪断;变更完成后,集群状态更新为正常。
方式二:调用API升配
集群升配API文档:UpdateInstance
进度监控与升配后验证
升配开始后查看进度:通过控制台->Elasticsearch实例->实例基本信息,单击展开详情:
升配完成后通过集群基本信息页确认配置是否生效:
集群状态恢复为正常表示配置已生效。
可用区是否与预期一致。
节点数和存储规格:确认新节点已加入集群、存储规格是否正确。
分片均衡:
GET _cat/allocation?v检查分片分布,如遇分片不均衡,请参考集群负载不均解决方案进行解决。
常见问题
升配与性能指标
Q:升配一定能解决我的ES集群性能问题吗?
A:不一定。升配(增加CPU、内存、磁盘等资源)并非万能解决方案。在决定升配前,请先分析具体瓶颈:
CPU瓶颈:持续长时间超过80%的CPU使用率(非短暂峰值)
内存瓶颈:频繁出现GC时间过长、内存交换(swap)或OOM错误
磁盘瓶颈:关注实际I/O吞吐量而非仅看%util指标(详见下文)
网络瓶颈:网络带宽持续打满,延迟明显增加
升配前请先确认实际瓶颈所在,避免不必要的资源浪费。有时通过索引优化、查询优化或调整配置可能比单纯升配更有效。
Q:为什么我的%util指标经常达到100%,但系统似乎运行正常?
A:iostat中的%util指标表示设备有I/O(即非空闲)的时间比率,不考虑I/O请求量有多少,只考虑有没有I/O活动。由于现代硬盘设备具备并行处理多个I/O请求的能力,即使%util达到100%,也不意味着设备已饱和:
例如:某硬盘处理单个I/O需要0.1秒,有能力同时处理10个I/O请求
当10个I/O请求依次提交时,需要1秒完成,此时%util为100%
若10个I/O请求一次性提交,0.1秒就完成,此时%util只有10%
重要提示:%util指标在现代存储系统中已基本失去参考意义,不应仅凭此指标判断是否需要升配。
Q:应该关注哪些指标来判断磁盘性能瓶颈?
A:应重点关注以下指标而非仅看%util:
I/O吞吐量:实际读写数据的速率(MB/s),与您的业务需求对比
响应时间:I/O请求的延迟时间,直接影响查询性能
IOPS:每秒I/O操作数量,与业务模式匹配
队列深度:反映I/O请求等待情况
建议:非长时间(持续数小时)达到100%的%util指标无需特别关注。真正的性能瓶颈应通过fio等专业工具进行压测,获取实际的极限带宽和IOPS值来判断。
Q:如何正确评估磁盘是否达到性能瓶颈?
A:请按以下步骤进行评估:
分析业务模式:了解您的读写比例、I/O大小等特征
关注实际吞吐量:与业务需求对比,而非仅看%util
使用专业工具测试:通过fio等工具模拟实际业务负载,测试磁盘在真实场景下的性能
评估查询延迟:ES查询响应时间是否满足业务要求
监控关键指标:如indexing latency、search latency等ES内部指标
如需确认是否需要升配,请提供完整的性能监控数据,包括但不限于:CPU使用率、内存使用情况、I/O吞吐量、查询延迟等,而非仅基于单一指标做决策。
升配操作影响
Q:升配集群支付后是否立即触发重启?能否指定重启时间?
A:变更配置(如升配、扩节点)在提交并支付后,系统将立即触发变更与重启流程,无法指定具体的重启时间。如果希望在特定时间点(如业务低峰期凌晨 3 点)执行重启,需在该时间点手动完成支付和提交操作。
Q:增加数据节点后是否需要重建索引?
A:不需要。增加数据节点是在线操作,集群会自动处理数据的重新分布(Rebalance),现有的索引、数据和业务查询都不会中断。