文档章节

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

zhangwei_2943
 zhangwei_2943
发布于 2014/11/14 14:28
字数 1058
阅读 126
收藏 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
05/11
0
0
【互动问答分享】第11期决胜云计算大数据时代Spark亚太研究院公益大讲堂

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

Spark亚太研究院
2014/09/12
0
0
Container的新机遇:Docker

从技术上看,Container并非近几年的创新,OpenVZ、FreeBSD jails、Solaris Zones等都是Container技术(轻量级虚拟化技术,OS层虚拟化技术)的 实现,而Fedora和Mozilla中国的区代表 Gerard B...

莫问viva
2014/09/24
0
0
从Cloud Foundry谈企业PaaS环境的安全风险与评估

  * 本文作者:ipenox,本文属FreeBuf原创奖励计划,未经许可禁止转载   前言   PaaS是云计算领域的三大业态之一。PaaS作为应用的运行平台,提供一个操作系统级的容器,在该容器中安装...

FreeBuf
05/22
0
0
中国东信基于Kubernetes的容器云PaaS平台

“中国-东盟信息港”是按照国家“一带一路”倡议总体布局要求、建设更为紧密的中国—东盟命运共同体、21世纪海上丝绸之路的一个信息平台:http://www.caih.com。东信基于Rancher Kubernetes架...

RancherLabs
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
34分钟前
0
0
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
54分钟前
0
0
c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
4
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部