业务在使用ES集群读取ES数据,如果同时向ES集群写任务时,会遇到RT涨的情况,会出现一些抖动,尤其是在计算框架大量增加并发度像ES集群写的情况下会出现抖动,目前的话是大数据计算集群减少并发写。以后还是期望增加并发度,加快写入速度,预期会对ES集群读性能带来挑战
目前线上是采用的 5台 64C 128G 1THDD,机器配置比较高,使用比较稳定,在集群同时大量读写时出现一些抖动,没有发生过 FGC等状况,平均延迟都在毫秒级 。集群索引所占据的数据量大概为300-500G。 集群的搭建使用的是默认配置,没有对ES节点角色进行区分,也就是5个节点可以同时承担Master / Data / Ingest / Coordinating / Machine Learning 的职责,随着数据和业务量的增加未来估计会遇到挑战。
据目前监控数据ES整体比较稳定,是否扩容及部署架构调整具体还是要根据业务使用和集群性能监控数据作出综合评估。
如下图数据监控数据:
图 :过去7天数据云查询响应时间
数据访问监控数据P99响应时间大多在30ms以内,极个别情况会出现超过100ms情况,结合ES集群监控数据(具体可查看最后参考链接及数据)可暂时保持现有集群架构,后期持续观察监控数据对集群进行角色拆分及扩容。
通常ES集群中有以下角色的节点类型 Master / Data / Ingest / Coordinating / Machine Learning
各个角色的作用如下:
一个节点在默认情况会下同时扮演这些角色,在开发环境通常数据量不大通常部署一个节点的ES集群。生产环境下就需要根据数据量,写入和查询的吞吐量,选择合适的部署方式 ,通常资源足够的话最佳的实践方式是设置单一角色的节点 ,如下图所示:
角色 | cpu | 内存 | 磁盘 |
---|---|---|---|
Master | 低配置 | 低配置 | 低配置 |
Data Node | 高配置 | 高配置 | 高配置 |
ingest | 高配置 | 中等配置 | 低配置 |
Coordinating | 中/高配置 | 中/高配置 | 低配置 |
单独分出几个节点部署成ingest 角色 前面挂个LB主要承担部分数据接入操作,独立几个coordinatiing 节点 前面挂个LB主要做数据处理查询聚合读的操作,当系统中有大量的复杂查询及聚合时候,增加 Coordinating 节点,便于增加查询的性能。
随着业务量和数据量上升, 当前ES集群使用的是默认配置,没有对ES节点角色进行区分的使用方式,在未来估计会受到一定的压力和挑战,当前根据监控数据和ES集群监控,暂时满足业务需求,后续集群架构需要进行一定的调整,进行角色职责的拆分。一些节点混合部署,或者完全独立,当数据量过大,磁盘容量无法满足需求,可以增加数据节点, 当系统中有大量的复杂查询及聚合时候,增加 Coordinating 节点,增加查询的性能 ,同时可以对Coordinating和ingest、Data节点进行拆分,进一步减小节点承担的压力。
过去六小时创建索引读数据延迟(单位毫秒)
过去六小时搜索写数据延迟(单位毫秒)
过去二十四小时创建索引写数据延迟(单位毫秒)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。