文档章节

一种Paas平台集群Container容器管理的方法

zhangwei_2943
 zhangwei_2943
发布于 2014/11/14 14:28
字数 1058
阅读 132
收藏 0

    最近CloudFoundry 和 Docker的发展势头确实很猛啊,使用这两个开源项目来搭建Paas平台的公司也逐渐的多了起来,但是很多公司仅仅是代搭建了一套试验环境,或者生产环境的规模还很小,很多问题都没有暴露出来,京东云擎(JAE.JD.COM)也是使用CloudFoundry框架搭建的,在此框架的基础上做的二次开发。随着JAE项目的逐渐扩张,用户数越一天比一天多,要管理好上万个Container确实让我们头疼了好久。

   

    其实大家都知道Container的管理主要集中在几个方面,第一个就是从Router进来的流量如何能快速的定位到指定的Container,第二个就是Container容器的健康情况如何快速发现和恢复

    其实只要接触过CloudFoundry的人都知道,CF架构中不管是Container的快速定位还是Container的的健康检查这一块都强依赖NATS消息中间件,通过DEA定时上报Container的心跳(包括了URL和Container的host:port 映射情况),前端Router通过注册NATS的 router.register或router.unregister来更新容器的信息,HM 通过注册心跳来对比用户的期望状态和容器的实际运行状态是否一致,其实这本来是一个很好的组件解耦架构,但是当Container发展到一定规模的时候,nats的消息量就会很大,router或hm要处理的数据也会很多,最主要的问题还是,Container的数据不是经常变动的,也就是说每次传输的信息95%都是一致的。从而导致了Nats和Router做了很多重复的工作。通过定时上报这种模式还有一个缺点就是必须通过设置心跳超时来判断数据的准确性这样就会导致一定的数据延迟性。

   既然Container的数据有一个明显的特点就是不经常变法,那么能不能每次只发生变法的数据呢,如果真能这样就可以大大减少NATS的数据传输和Router处理的压力。我想到的一个办法就是通过zookeeper+NATS来做Container的管理

   具体的思路是这样的,每台DEA在启动的时候向zookeeper注册一个临时节点(节点的内容里面保存了dea所管理的所有Container信息),当有容器创建的时候通过nats发布一条Container创建的消息,同时改变dea临时节点的内容,当有Contaienr销毁(包括人为销毁或Container异常挂掉的销毁)的时候向Nats发布一条容器消费的消息,同时改变dea临时节点的内容,如果VM挂掉或DEA异常挂掉因为DEA注册的是临时节点,所以zookeeper会自动删除这个不存活的dea节点, 在router或hm模块里面 注册dea发布的Container创建或销毁的topic用来处理Container碧昂更的情况, 同时router 在启动的时候需要从zookeeper中获取所有的dea临时节点信息,循环处理每个节点将节点中的Container取出来存在内存里面,当zookeeper发现dea临时节点删除或创建的时候会以事件的方式通知 客户端(比如router),此时router根据事件的类型,如果是删除节点,则删除该dea里面的所有容器,如果是新增节点则增加节点里面的所有Container信息。

    这样一来既可以很好的管理所有Container还减少了很多重复的消息传递和处理,最主要的一个还是不用设置心跳超时从而达到容器的变法更加实时的体现在管理端。具体的逻辑图大概是这个样子。

 


© 著作权归作者所有

共有 人打赏支持
zhangwei_2943
粉丝 0
博文 3
码字总数 1832
作品 0
成都
架构师
私信 提问
时速云企业级容器PaaS技术沙龙 第九期【深圳站】

Docker容器技术的出现改变了企业应用从开发、构建到发布、运行的整个生命周期,而Kubernetes经历近4年的发展也已成为容器集群管理领域的事实标准,基于容器 + Kubernetes 的新型 PaaS 逐渐成...

wx5af5464b24a76
2018/05/11
0
0
时速云企业级容器PaaS技术沙龙 第九期【深圳站】

Docker容器技术的出现改变了企业应用从开发、构建到发布、运行的整个生命周期,而Kubernetes经历近4年的发展也已成为容器集群管理领域的事实标准,基于容器 + Kubernetes 的新型 PaaS 逐渐成...

时速云
2018/05/14
15
0
《Kubernetes集成外部服务实践》- 第三期Docker技术沙龙主题剖析系列【第一篇】

分享嘉宾:柴宗三,亚信大数据云平台部高级研发工程师。目前负责亚信DataFoundry大数据PaaS云平台。本文源自于3月12号《第三期Kubernetes沙龙》四个Topic之一,是《第三期kubernetes沙龙主题剖...

时速云
2016/03/16
599
0
【互动问答分享】第11期决胜云计算大数据时代Spark亚太研究院公益大讲堂

Q1:docker成熟度如何? Docker是2013年和2014年最火爆的云计算开源项目; Baidu公司是中国使用Docker最为深入和最大规模的公司,线上稳定运行数十万个Docker容器,目前已经使用Docker全面全...

Spark亚太研究院
2014/09/12
0
0
数人云1月Meetup上海|容器之Mesos/K8S/Swarm三国演义

容器正在成为企业级应用的新一代交付标准, Mesos/K8S/Swarm集群管理工具在容器生态圈里帮助企业客户排兵布阵,驰骋疆场, 呈现出三国鼎立的局面; 16年10月份北京场活动中IBM、新浪微博、A...

数人云
2016/12/20
54
2

没有更多内容

加载失败,请刷新页面

加载更多

“韭菜”年年有,只是今年有点多

2018 年的交易日结束了,股市的“韭菜”们终于可以放心的过一个“一无所有”的节了。该赔的都赔完了,2019 年,很多人可能连当“韭菜”的资格都没有了。   同时,丁香医生的一篇《百亿保健...

问题终结者
11分钟前
3
0
天啦噜!在家和爱豆玩"剪刀石头布",阿里工程师如何办到?

阿里妹导读:如今,90、00后一代成为消费主力,补贴、打折、优惠等“价格战”已很难建立起忠诚度,如何与年轻人建立更深层次的情感共鸣?互动就是一种很好的方式,它能让用户更深度的参与品牌...

阿里云官方博客
37分钟前
1
0
聊聊flink的Table API及SQL Programs

序 本文主要研究一下flink的Table API及SQL Programs 实例 // for batch programs use ExecutionEnvironment instead of StreamExecutionEnvironmentStreamExecutionEnvironment env = Stre......

go4it
46分钟前
2
0
mysqldump应用

备份单个库/表数据或库/表结构 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 备份文件名 1、导出数据库为dbname的表结构(其中用戶名為root,密码为dbpasswd,生成的...

阿dai
54分钟前
3
0
shell脚本与Python的交互

1、Python针对shell获取传入,输出参数 传入:"$num" 例如: $0表示文件名,$1表示shell获取的第一个参数 输出:通过打印shell结果的方式,输出参数给Python。 例如: echo "{$iplist}",Python调...

一口今心
56分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部