Elasticsearch
Elasticsearch 是一款基于 Apache Lucene 框架构建的开源的、分布式的、可扩展的、(准)实时的文档存储和搜索引擎。在提供搜索服务以及日志分析方面已经日趋成熟,尤其是在 Elasticsearch 5.x 发布之后,在规范性、功能、性能等方面都有了极大的改进,并且进入了迅速迭代的过程,版本发布之快令人乍舌。
360Hulk 云平台,作为业界首屈一指的私有云平台,绝不甘落寞,也在 Elasticsearch 上做了很多尝试,推出了面向搜索的 Elasticsearch 服务和面向日志分析的 ELK 服务。目前已经在公司内部大范围应用,承载数据量 200+TB,日访问量超 1000 亿次。今天小编就为大家带来 Elasticsearch 在 360 私有云平台的实践。
Elasticsearch 服务架构
Master 节点独立
因为 master 承担着集群元数据管理的职责,例如 indices、sharding 等信息的维护,如果 master 节点和 data 节点混用的话,master 相关功能的性能没法保证,而且一旦发生故障,集群恢复时间将被大大拉长。因此我们的 Elasticsearch 集群采用 3 个独立的 master 方案(有且只有唯一的一个节点真正承担着 master 的角色),一方面保证 master 相关功能的稳定,另一方面通过配置 discovery.zen.minimum_master_nodes: 2 降低了 master 选举时出现脑裂的几率。
负载均衡
我们使用 data 节点承接访问,但是为了业务使用的便捷性,集群使用了 LVS 将请求均衡的分担到各个 data 节点;同时提供了 RS 的动态监测机制,当 data 节点失联的时候,LVS 会自动过滤掉该节点的请求。
业务独享集群
结合 360 业务的特点,为了尽量适配不同业务的需求场景,同时尽量降低各个业务线之间的相互影响,每个业务线可以申请自己独享的集群。同时,这种方案还大大降低了 Elasticsearch 集群不可用(当然这种情况出现几率极低,但不能保证不发生)的时候影响业务的范围。
用户认证和权限隔离
集群集成了 SearchGuard(不要问我为啥不用 X-Pack,因为穷,且懒),实现了用户认证和访问权限控制,做到了集群内部更细粒度的隔离,实现了各个子业务线内部应用之间的访问隔离。
分词支持
集群默认集成了 ik 分词(小编在这给各位看官一点提示:因为 Elasticsearch 5.x 之后关闭了 Site Plugins 的支持,所以需要自己编译然后拷贝相应文件到 Elasticsearch Plugin 目录),并且支持扩展分词词典和 stopword 扩展词典的动态更新。
用户端功能
基于 Hulk 私有云平台的自助功能
集群申请
状态查看
常用性能监控图表
indices 展示
权限申请等自助服务
新建集群
提供多种类型配置的套餐
提供多种类型配置的套餐可供业务选择,兼顾空间、成本和性能的考量。
界面化展示
默认提供配置好的 Kibana 服务,用户可以开箱即用,不用自己搭建和维护。
管理员功能
基于 Hulk 私有云平台的管理功能
群集的配置
集群初始化
节点启停管理
资源回收等功能
Zabbix 监控
基于 FromDual 框架的自定义监控指标,全面监控集群运行状态,及时告警;并且实现了简单场景的故障自动恢复(例如由节点存活报警自动触发的进程自启动等)
WebAdmin 管理功能扩展
Elasticsearch 5.x 之后关闭了对 Site Plugins 的支持,直接导致了诸如 head、kopf 等一批插件死翘翘。不过作者对 kopf 功能进行了彻底的重构(using Scala, Play Framework, AngularJS and Bootstrap),推出和 Elasticsearch 完全解耦的 Cerebro,不仅外观看起来更加高大上,支持独立部署,而且在易用性以及对 Elasticsearch 更高版本特性的支持上都有了很大提升。
总结
怎么样,看了上面的介绍,各位看官是不是都想跃跃欲试了呢。欢迎大家积极留言探讨。
我们后续也会持续推出 Elasticsearch 服务在 360 私有云平台实践过程中的诸多技术点来跟大家分享,敬请期待吧。
本文转载自公众号 360 云计算(ID:hulktalk)。
原文链接:
https://mp.weixin.qq.com/s/h8TthWUfdP0L_7HiY9-hBw
评论