运维大规模ES集群的思考和实践

Elasticsearch是_一个分布式、RESTful风格的搜索和数据分析引擎。_在开源搜索领域已经遥遥领先其余产品。随着近年来ES的快速发展,ES已经逐步从单一搜索引擎进化成一个全能型的数据产品。在日志监控,全文检索,数据库加速,大数据分析等不少领域获得普遍应用。数据库

▲数据库引擎排名,数据来源:https://db-engines.com/en/ranking▲缓存

京东智联云ES支撑了公有云,私有云和京东集团内部的大量ES集群。京东商城,京东物流,京东金融等各个业务领域都对ES服务有很大量的需求。目前已使用数十万核,上万个节点,数十万亿个文档。性能优化

如何利用云厂商的优点,高效,可靠,稳定的运维如此大规模的ES集群是咱们须要思考和解决的问题。下面我将从几个维度介绍咱们的思考和实践。并发

1、基础设施和服务编排

云厂商相较于用户自建最大的优点在于弹性。弹性给用户带来的不只仅是方便易用,还有下降成本。京东智联云ES依托于云舰的服务编排能力,可以达到快速,灵活的部署集群,支持对集群水平扩缩,垂直变配,存储扩容等弹性能力。另外京东智联云ES还提供了 云硬盘 、 本地盘 、 对象存储 多种存储方式,知足不一样场景下的用户需求。app

另外服务编排还提供了 故障自愈能力 。物理机故障场景,会自动将故障机器上的es节点failover到其余节点;es节点故障场景,会自动尝试重启es节点若是仍然没法恢复则会迁移es节点到其余物理机节点。运维

2、运维

▲京东智联云ES运维能力▲分布式

1,监控警告

如此大规模的集群,须要全局和指标丰富的运维监控系统,来保障系统运维的可视化。经过咱们的运维经验积累,京东智联云的运维监控系统,已经可以实时的发现异常集群,并可以经过各个监控指标分析发现问题的缘由。ide

2,多版本支持

ES版本特别多,因为历史缘由不少旧系统很难升级,且不一样用户上云对版本需求差别较大,因此须要支持不少不一样的版本。目前支持的大版本有2.x,5.x,6.x,7.x。多版本的管理复用同一套编排管理系统,可以快速支持新es版本上线。性能

3,性能优化

ES的特色是开箱即用,但ES可配置项很是多,对于不一样的业务场景和需求,集群须要不一样的调优配置,非专业用户每每很难使用的很是合理。下面列举一些常见问题:测试

4,数据迁移

5,索引生命周期管理

索引生命周期管理是用户很经常使用的一个管理功能。按天或月周期建立索引,保留必定时间后删除过时索引,永久保留指定时间的索引(例如大促期间的索引)。ES从6.6版本在x-pack中开始支持索引生命周期管理功能的测试版本,但低版本不支持该功能。京东智联云ES将该功能拓展到全部ES版本并提供UI化设置,比经过原生kibana配置或者API配置更加简单实用。

6,探索智能化运维

探索智能化运维,咱们的运维知识和经验产品化提供给用户,根据用户的业务场景,综合各项监控指标,给出集群的健康情况和解决建议。例如节点负载不均,分片设置不合理,堆内存占用过高,GC时间太长,filedata占比过高,集群负载较高,分片数量太大,写入或者查询线程池队列有堆积或者reject,集群的读写流量异常波动等。

7,监控指标数据自治系统

自动化运维或者自治运维是终极目标,随着智能化运维能力的提升,经过监控指标数据自治系统就可以自主得出决策并执行,彻底不须要人工介入。

3、应用场景优化

ES的应用场景主要涉及日志检索,数据库加速,监控指标,数据分析等领域。不一样的业务场景具备不一样的特色,对性能的需求也不尽相同,因此须要针对不一样场景有不一样的优化方案。

1. 日志检索场景, 并发写入量大,实时性要求不高,存储量大,数据有冷热属性。针对这种场景能够提升索引写入缓存大小来提高写入性能;增长refresh interval时间间隔来减小segment数量;将translog.durability使用HDD来下降存储成本。

2. 数据库加速场景, 对于没有事务性要求,且须要检索海量数据的结构化查询场景,ES是替代关系型数据库的不错选择。京东主要应用的业务有商品,优惠券,订单,对帐,物流等。此场景的特色是延迟敏感,须要高性能,高可用。

3. 监控指标, 并发写入量大,时序特性,不须要高可用,数据有冷热属性。

4. 数据分析场景, 数据分析维度较多,聚合查询。写入量大,查询量小,但须要聚合查询。京东主要应用的业务有订单交易分析,用户画像等。

4、服务化

专业的人作专业的事,托管ES产品 第一步解决了用户本身搭建集群, 管理集群的效率和成本问题,但用户仍然须要了解ES的原理知识,调优知识,索引配置,集群配置,分片设置等等和业务无直接关系的知识,使用好ES仍然须要很高的门槛。因此托管ES产品的 第二步就是服务化, 用户只须要提出业务的需求,不用再关心服务后面ES集群的参数。例如用户从自身的业务场景入手,提供写入查询性能指标的指望,另外用户只须要定义索引的mapping,不须要关心索引的settings,分片数量等配置信息。从集群的规格配置到索引的合理设置都由后台自动设置和优化。

5、将来思考

给用户提供简单可靠的产品是咱们的终极目标。因此将来咱们会从两个方面提高优化咱们的产品,一是从用户的角度对外呈现产品形态,经过产品服务化更贴近用户的使用习惯,下降用户使用门槛,提供更加简单且实用的使用方式。二是从运维的角度加强后台的自治运维能力,包括智能检测和修复能力,故障自愈能力,自动弹性能力,数据配置托管能力等,作到从托管产品变成托管服务。

相关文章
相关标签/搜索