前段时间有客户找我咨询在云上购买Elasticsearch服务的问题,但我此前对此了解的不多,不能提供太多有价值的建议,因此在这个假期抽时间研究了一下阿里云上的Elasticsearch服务。
阿里云是Elastic公司在中国的签约合作伙伴,Elastic授权阿里云提供托管的ELK(Elasticsearch、Logstash、Kibana)服务,阿里云上的Elasticsearch 都带有Elastic公司的X-Pack白金版插件包许可。
Elasticsearch的主要应用场景有两个:
- 搜索、主要是对海量信息提供快速的全文检索服务,信息的变化量相对不大,但需要对大量的用户请求进行快速响应。
- 日志、对海量的日志进行存储和检索服务,日志带有时序信息且写入量巨大,对日志进行检索的用户通常不会太多。
这两个应用场景阿里云都有对应的“自研”解决方案,那就是开放搜索服务Opensearch和日志服务SLS,其中Opensearch的核心引擎为包括淘宝、天猫在内的大量阿里巴巴业务提供搜素服务,而SLS服务在阿里巴巴更是无处不在,所有的阿里云服务默认情况下都会使用SLS日志服务,甚至包括云上的Elasticsearch服务本身的日志信息都是存在SLS日志服务中,Opensearch和SLS对于像淘宝天猫、阿里云这样的要求超大规模、低成本、多租户的应用场景非常合适,但对于大多数的非阿里系用户来说灵活性、应用生态、用户社区可能更加重要一些,其实即便是阿里内部也在大量的使用Elasticsearch服务。
对于阿里内部也在大量使用Elasticsearch通过两点可以佐证:
- 智能运维工具、阿里云提供了一个名为EYou(智能运维)的Elasticsearch运维工具,能够对集群的运维状态提供全方位的健康诊断和优化建议,可以定期对集群的运行状态进行体检,并根据体检结果的进行有针对性的优化。
- 丰富的节点类型、阿里云提供数据节点、Kibana节点、专有主节点、冷数据节点、协调节点、弹性节点 供用户选择。
更丰富的节点类型本来是一件好事,但对于有选择困难的用户来说也意味着更多的纠结,下面是我对这些节点功能的介绍以及选择建议。
- 数据节点、存储数据、并通过选举产生Master主节点来管理集群状态,正常情况下根据需要选择数据节点即可,数据节点的规格和数据要视应用场景和数据量而定,通常搜索类型的业务建议选择磁盘性能更强的节点,且单个节点不建议配置过大的存储空间,日志类型的业务则可以选择少量大存储空间的节点。
- Kibana节点、ELK中K,提供数据可视化支持,其开发工具模块也是Elasticsearch最重要的交互式运维工具,阿里云用户可免费使用一个1核2G规格的Kibana节点,也可以根据需要选择更高配置的节点,假如只作为交互工具使用,使用免费规格的Kibana节点即可。
- 专有主节点、当主节点出现资源紧张或失效时,将对整个集群的运行产生严重影响,因此当集群的规模较大时可以考虑配置专门的主节点而不是由数据节点通过选举来兼任主节点。
- 冷数据节点、Elasticsearch 支持通过标签选择来进行冷热数据的分离存储,冷数据节点只使用高效云盘以降低存储成本。
- 协调节点、当在查询时使用复杂的合并聚合时,就需要多个节点进行“协调”,正常情况下数据节点可以充当协调的角色,但这种协调势必带来额外的资源开销,假如查询的量比较大,就有必要设置专门的协调节点了,另外要使用https协议访问Elasticsearch也需要开通协调节点,假如应用程序只是在VPC内网访问Elasticsearch,大可不必为了https来开通协调节点,因为运维用的Kibana 无论是否开通协调节点都支持https访问。
- 弹性节点、对于一些周期性波动的业务可以选择定时拉起一定数量的弹性节点来对集群进行临时的扩容,Elasticsearch的弹性节点有些类似于RDS的只读节点的作用,而且弹性节点的计费方式和RDS只读节点一样也是只支持按量付费。
以下是选择三个数据节点、两个协调节点、一个Kibana节点的状态:
在开通协调节点后,就可以使用https协议对Elasticsearch进行访问,但在此之前需要确保所有的程序均以修改使用https协议访问:
Elasticsearch作为一款开源软件,可以自行购买ECS搭建和运维,那么使用阿里云的托管服务有哪些理由呢?
从我目前的使用体验来看,有如下理由:
- EYou智能运维工具,凝结了阿里云运维和使用Elasticsearch的一些经验教训,让我们少走弯路。
- 升降配不停机、Elasticsearch在运行过程中难免要对节点的类型、数量、配置进行调整,阿里云上的托管集群在对集群进行升级、降级配置时集群可以继续对外提供服务。
- 自带X-Pack收费插件、X-Pack是Elastic 公司进行商业运营重要的收入来源,因此一些像机器学习、身份认证等重要的功能都放在X-Pack包中,单独购买也意味着一笔不菲的投入。
- 日志增强版实例、阿里云针对高IO吞吐的日志型业务提供日志优化增强型的实例,可以提升100%的写入性能。
- 专属插件、阿里云提供专属的中文分词插件aliws。
在进行Elastic购买时可以通过选型工具对集群的配置进行容量规划,假如写入的吞吐达到一定的量级,阿里云就会建议使用增强型的集群:
以下是一些aliws分词器和icu分词器的对比:
ICU:我——为人——人——人人——为我
Aliws:我——为——人人——人人——为我
以上就是我对阿里云上的Elasticsearch的初步体验,希望对准备在云上开通Elasticsearch的用户有所帮助。