文档章节

基于Kubernetes的ESaaS架构及实现细节(一)

WaltonWang
 WaltonWang
发布于 2018/02/07 21:17
字数 1138
阅读 1297
收藏 14

概述

ESaaS(ElasticSearch as a Service)是ElasticSearch on Kubernetes的产品实现,是利用DockerKubernetes等容器虚拟化和编排调度系统,将ElasticSearch抽象为CaaS(Container as a Service)平台上的一种服务,实现秒级创建和扩缩容一个用户自定义的ElasticSerach集群,并且保证高可用和数据安全等方面。

关键组件

  • ElasticSearch 2.x
  • Kubernetes 1.9
  • Docker 1.12.6

解决的痛点:

  • ES集群初始化部署周期长,从申请服务器到交付,可能需要数天。
  • 部署过程自动化程度不高,开发测试环境中纯手动部署,线上半自动化部署,经常出错需要调测环境。
  • 集群的扩容也是人为操作,效率低且容易犯错。
  • ES服务器经常面临资源浪费的情况。
  • 各种插件的安装麻烦,并且有些需要重启节点,人为操作不当会带来风险。
  • 没有提供完善的ES集群和服务器的监控告警方案。
  • 没有提供配套的Kibana服务,人工部署Kibana并对接ES效率低。
  • ES集群之间没做资源隔离,机架机柜的物理隔离等。
  • 没有接入日志系统,查看系统和ES集群日志很不方便。

目标

  • 集群统一管理Portal,提供ES集群自助申请和集群信息看板;
  • 提供用户配额管理;
  • 秒级扩容缩容;
  • 完整的平台和ES集群监控和告警能力;
  • 提供统一的ES集群配置修改入口;
  • 外围插件的自助部署;
  • 节点的自助安全重启等;

架构

高可用部署架构

输入图片说明

必要说明

  • ESaaS Portal提供用户云上自助申请ES集群和运维的入口,ESaaS做好相关业务逻辑能力,最终调用后端Kubernetes API进行ES集群的创建和管理;ESaaS Portal要求对接权限管理系统,进行用户登录验证和权限控制;
  • 为了保证ElasticSearch集群的高可用,在开发测试环境,要求同一个ES集群的同一个role(比如client/master/data)的ES nodes不能有多个部署在同一台服务器上;在生产环境,以上情况则要求跨机架部署;
  • ES集群在Kubernetes中目前均考虑使用本地存储,不用分布式存储;
  • ES集群的data node Pod需要挂载两个hostpath volume,分别为存储data的data volume和存储ES plugin的plugin volume,对应服务器上的hostpath /es/$cluser-name/data/data/es/$cluser-name/data/plugin;
  • ES集群的master和client node Pod需要挂载一个hostpath volume,存储ES plugin的plugin volume,对应服务器上的hostpath /es/$cluser-name/client(or master)/plugin;
  • ESaaS平台提供Apache httpd服务用于托管常用插件,称为ES Plugin Repository,目前优先考虑托管jar类型plugin。某个ES集群要给某个或者某些ES nodes安装jar plugins时,将从ES Plugin Repository中下载plugin文件到对应的/es/$cluser-name/client(or data,master)/plugin;

逻辑架构

输入图片说明

必要说明

  • 每个ES集群的data nodes的部署通过一个Kubernetes StatefulSet来管理;

  • 每个ES集群的master nodes的部署通过一个Kubernetes Deployment来管理,并通过一个Kubernetes Headless Service来做master nodes的反向代理,这样在KubeDNS中该Headless Service Name对应解析到每个ES master nodes Pod的IP地址;

  • 每个ES集群的client nodes的部署通过Kubernetes Deployment来管理,并通过一个Kubernetes NodePort Service来做client nodes的反向代理(后续ES集群数多了后,考虑使用Ingress Nginx来代理ES client),每个ES集群对外暴露$Client-IP:$NodePort;

  • 同一个ES集群中所有nodes的elasticsearch.yml均使用如下规则的部分配置:

    	cluster.name: "elasticsearch-${NAMESPACE}"
    
    	node.name: "${POD_NAME}-${NAMESPACE}"
    
    	network.host: ${POD_IP}
    
    	# hosts填写ES master的Headless Service Name
    	discovery.zen.ping.unicast.hosts: “es-${NAMESPACE}”
    

在下一篇博文 ESaaS架构及实现细节(二) 中将介绍这个方案需要注意和考虑的关键实现细节,内容涉及二十多项。

© 著作权归作者所有

WaltonWang
粉丝 227
博文 106
码字总数 226882
作品 0
深圳
程序员
私信 提问
高手问答第 231 期 —— 聊聊云原生服务网格 Istio

Kubernetes 在容器编排领域已经成为无可争辩的事实标准;微服务化的服务与容器在轻量、敏捷、快速部署运维等特征上匹配,这类服务在容器中的运行也正日益流行;随着 Istio 的成熟和服务网格技...

局长
08/12
8.3K
47
Kubernetes杭州集市干货大起底,你get了吗?

2018年3月31日,在美丽的西子湖畔,CNCF Meetup——Kubernetes GeekGathering 2018杭州站与众多新朋老友如约相会,此次技术集会由K8S技术社区、EasyStack、网易云联合主办,谐云科技、网银互...

k8scaptain
2018/04/20
0
0
vivo基于Kubernetes构建企业级TaaS平台实践

Author: xidianwangtao@gmail.com vivo TaaS架构 关于如何将Kubernetes和TensorFlow整合起来的Topic,以及我们的CaaS技术栈的介绍,请参考过往的两篇文章,在这里我不再赘述。 浅尝TensorFlo...

WaltonWang
2018/01/11
466
0
QCon技术干货:个推基于Docker和Kubernetes的微服务实践

2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目。在这个无比需要创新与速度的时代,由容器、微服务、DevOps构成的云原生席卷整个IT界。在近期举办的QCon全球软件开发大会上,个推应用平...

个推君
2018/10/24
0
0
Kubernetes 的未来是 Serverless

从容器革命开始就有两件事情变得清晰起来:首先,技术堆栈中各层的脱钩产生了清晰的,原则性的分层概念,具有明确的约定,所有权和责任。其次,引入这些层使开发人员能够专注于对他们至关重要...

云技术之家
2018/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部