返回
剖析ES分片扩容之道,集群搭建与运维优化指南
后端
2023-12-06 16:57:28
**起</**
众所周知,ES( Elasticsearch)是一种旨在广泛用于搜索引擎的开源分布式搜索和数据存储引擎。由于其全托管、可扩展且近乎无限的扩展灵活性而备受开发者的青睐。
分片扩容是ES集群运维中一项重要的优化工作,如果不合理地规划分片扩容策略,极有可能会给集群的稳定性、性能和可用性带来意想不到的隐患。
**破</**
在本文中,我们将从ES的基本原理入手,带领大家逐步搭建一个ES集群,并从六个维度全面剖析出如何扩容ES分片,并从五个维度入手来优化集群运维,助力开发者们驾驭ES,轻松应对线上业务的复杂多变。
**一、ES集群的搭建**
1、ES集群架构概述
一个完整的ES集群至少包含3个节点,一个主节点和2个数据节点,这些节点可以部署在不同的物理机或容器中。
主节点用于管理集群的元数据、协调数据变更和选举新主节点,数据节点用于存储和检索数据。
2、集群搭建
搭建ES集群,需要遵循一定的顺序:
(1)确认机器间防火墙、端口、账号密码等信息一致;
(2)确定集群拓扑,指定主节点、数据节点的IP和端口,并做好集群节点的规划;
(3)在所有集群机器上依次解压ES的发行包,并把集群配置文件进行必要的优化和调整,例如:
设置集群名
修改/config/elasticsearch.yml
修改该行:
#node.name:
为:
node.name: "my-node-1"
(4)依次启动各个节点,确认各个节点均启动正常后,使用如下命令检查集群的运行信息:
$ curl 'http://ip:port/_cat/health?h=ip,status,node.role,activeShards,relocatingShards,unassignedShards'
**二、ES分片扩容优化**
1、扩容前注意事项
在进行ES集群的分片扩容前,需要预先判断集群扩容的风险评估,以防在扩容过程中引起集群不稳定的隐患,造成业务中断。
扩容前需要关注的几个关键指标如下:
- 线上集群运行的稳定性;
- 线上业务的写入和检索的吞吐量;
- 线上集群的数据量和增长率;
- 预计扩容完成后集群的性能损耗;
- 扩容过程中引发的不稳定因素,如业务抖动,数据丢失等风险评估。
2、扩容维度
(1)单Index扩容
- 扩容前,将Index中的分片冻结;
- 通过API重新设定分片数量;
- 等待集群重新进行路由和数据迁移;
- 解冻Index。
(2)单Index数据路由优化
- 将写入的热点数据分布到多节点,避免单点写入读写延迟;
- 优化数据路由,将关联性较高的数据路由到同一个分片。
(3)多Index拆分
- 根据业务特征,把Index按照时间戳、业务ID、数据分类等特征拆分成多个Index;
- 拆分后的多个Index会按规则路由到不同的分片,满足业务的高并发和写入效率需求;
- 周期性的把过期的Index归档,保证集群容量和性能。
(4)数据滚动
- 将过往的数据归档到一个新Index;
- 随着新Index的写入,数据不断向后滚动;
- 过往数据归档到冷热存储介质,释放集群的存储和资源压力。
(5)集群扩容
- 扩容集群容量,新增数据节点,缓解集群因数据和写入量不断增大而导致的性能瓶颈;
- 新老节点数据迁移和均衡,保证集群整体的性能和稳定性;
- 动态调整数据路由规则,将热点数据路由到新增节点。
(6)分布式缓存
- 使用分布式缓存中间件,将热点数据、公共数据和计算中间产出等数据缓于内存中;
- 减少数据节点的读写频率,降低GC的频率,大幅提升集群性能;
- 减少对ES数据节点的访问频次,保证数据的最终一致性。
**三、集群运维优化**
1、运维维度
(1)集群日常指标的实时监测
- 节点集群的运行稳定性;
- 单节点资源使用率:磁盘IO、内存、GC、线程、TCP连接数;
- 整个集群的TPS、QPS、读写延时。
(2)集群容量规划和扩容评估
- 现有集群资源使用率和业务增长的曲线评估;
- 业务和场景增量对集群资源的需求评估;
- 扩容后的集群性能损耗和风险评估。
(3)集群数据迁移和日常优化
- 数据的均衡性检测和数据路由优化;
- 过期、冗余数据的归档和清除策略;
- 冷热数据的分级存储优化。
(4)集群容灾和异地多活
- 副本策略优化,保证数据的完整性和一致性;
- 跨集群的数据容灾和恢复方案;
- 异地多活集群的负载均衡和数据一致性保障。
(5)集群升级和运维自动化
- 制定集群的升级和重启计划;
- 运维自动化工具的开发和接入;
- 通过工具来自动化的监测集群的运行稳定性和资源使用率。
2、度量和评估
- 线上业务指标波动前后集群指标的波动幅度和响应时延;
- 扩容前后的资源使用率、检索延迟、写入延迟等集群性能指标;
- 扩容前后的集群稳定性,如节点宕机率、集群脑裂、服务抖动等;
- 扩容前后的集群安全性,如权限管控的优化、防护策略的完善等。
**结</**
ES分片扩容和集群运维是ES集群优化的核心内容,也是保障ES集群稳定、高效和可持续运营的关键。
本文从搭建ES集群的维度出发,全面剖析了ES分片扩容优化的维度和方法,并从集群运维的维度出发,总结了集群运维优化的经验和最佳实