阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

大众点评容器云平台:运营超一年,承载大部分业务

  • 2015-08-10
  • 本文字数:2219 字

    阅读完需:约 7 分钟

Docker 容器的应用场景之一就是构建企业私有云平台,它简单、轻量的特点不仅可以降低私有云的构建难度,而且还能更高效的利用物理资源。同时,容器在安全性方面的短板恰恰因为私有云的应用场景而显得不再重要。但基于容器的私有云也有不少挑战,比如网络、监控、用户习惯等方面都需要有好的解决方案。大众点评在 2014 年 7 月就基于 Docker 搭建了私有云平台,目前平台承担了大部分的线上的业务,实例数 2800 个左右,Docker 物理集群 300 多台。InfoQ 记者采访了大众点评云平台首席架构师盛延敏,听他分享大众点评私有云平台实战过程中踩过的坑和经验教训。另外,盛延敏还将在 8 月 28 日~29 日举办的 CNUTCon 全球容器技术大会上分享题为《大众点评的容器私有云实战》的演讲,敬请关注。

InfoQ:点评是从什么时候开始使用 Docker 构建私有云平台的?未使用容器云之前,点评内部有基于其他技术搭建私有云吗?基于 Docker 的私有云会有哪些优势?有哪些挑战?

盛延敏:我们从 2014 年开始基于 Docker 搭建点评的私有云平台。原先点评的应用都是部署在 KVM 上的,大量重复性的操作耗费了运维同学不少的时间和精力,特别是扩容和缩容这块。所以就萌发了使用 Docker 搭建一个私有云平台的想法,借助云平台,将应用标准化,运维自动化。从目前使用情况来看,基本达到了原先设想的目标。

未使用容器云之前,点评内部谈不上使用过私有云。从实践来看,基于 Docker 的私有云可以带来更高效的物理资源使用率,更快的部署以及更加统一规范的标准化运行环境。较虚拟化云,其优势还是很明显的。关于挑战,我的主要体会是安全和规范,Docker 还不能做到完全的多租户环境,这一点对于安全敏感的企业级应用是一个不小的挑战。不过,对于私有云而言,这一点倒不是一个致命的短板。另外一个从实践来看,大家对于从 KVM 过渡到 Docker 的使用环境,使用习惯也是一个不小的挑战。举个例子,在 KVM 时代,应用上线前是一定要分配一些 KVM 实例的,这样可以加速应用上线发布的速度。到了 Docker 时代,Docker 可以支持实例秒级创建,是不是还一定要预先分配实例?这其实是一个使用习惯的问题。

InfoQ:你们的容器云平台使用了哪些开源的技术栈?

盛延敏:底层使用了 Docker,通过 Dockerfile、Docker Registry 统一管理应用的标准化运行环境。这一块是整个容器云的基石。
组件之间的交互使用了 NATS,通过消息的『发布 - 订阅』模型,将各个组件之间的耦合最小化。这也是参考和学习了 Cloud Foundry 公有云架构。

接入层使用了 Nginx 和 ZooKeeper,对于 Web 类型的应用,通过和 Nginx 暴露的 Restful 接口交互,完成实例在集群内的注册以及注销。对于服务类型的应用,通过在 ZooKeeper 上注册和注销服务 IP 和端口,便于服务客户端发现和更新该服务。

InfoQ:从我的理解来看,基于容器的私有云,需要用户了解 Docker 等技术,并且容器推荐的是使用微服务架构。那你们在内部推进这样的私有云是否困难?架构方面的问题如何解决?

盛延敏:你说的很对。所以我们从一开始就制定了合适的目标,其中最重要的是不要让用户感觉到 KVM 切换到 Docker 这个转换,在这个目标基础上我们做了大量的工作。比如,用户并不需要自己了解 Dockerfile,我们使用 Dockerfile 来定制应用运行的环境,如果需要更新运行时环境,也是由云平台团队来维护。如果你需要 Node.js 的环境,我们可以帮助定制一个 Node.js 的镜像。再比如,我们更改了 Docker 的代码,让其从推荐的微服务架构演变到目前的『虚拟机』架构。开发和运维可以通过 IP 直接访问到 Docker『虚拟机』,基于 IP 的应用基础架构也不需要开发和运维做剧烈的改变。通过这些方法,加上公司内部的支持,逐渐推动了私有云平台的加速建设。

InfoQ:目前有哪些业务跑在容器上了?怎么样的业务适合容器云?

盛延敏:基本上除搜索和数据库以外,点评现有的业务大多都有跑到容器上的。当然覆盖率还在提升当中。只要是可以标准化的业务,经过改造基本都可以跑到容器云上。当然这里面也有一些特殊情况,例如 IP 本身是不是对外暴露的,是否可以支持横向扩展等等。

InfoQ:监控、网络方面的问题是如何解决的?

盛延敏:监控点评有业绩比较有名的 CAT(Central Application Tracking),所以我们的监控也是接入 CAT 的。通过收集 CGroups 和 Docker 实例的实时信息,将内存、CPU、网络等源源不断的上报到 CAT。再由 CAT 提供查询,检索和展示。当然,也支持告警。

关于网络,主要是采用了 Linux bridge 工作在 level 2 的模式,使公共 IP 得以暴露出来,这部分我们是做了定制的。

InfoQ:目前私有云的有哪些基础功能?可以做什么,不可以做什么?接下来有什么规划?

盛延敏:主要的基础功能包括实例的创建和销毁、缩容和扩容,和 DevOps 工具集成等等。接下来会把精力放到整个平台的演进上,包括模块的进一步拆分,新的镜像的支持,和运维工具 Puppet 的集成等等。

InfoQ:这么长时间的应用,有做过复盘吗?未来有什么计划?

盛延敏:我们还是复盘过的,其实我们自己觉得也比较幸运,刚开始决定做 PaaS 的时候,正是 Docke 技术出现并繁荣的时候,在 Docke 上构建整个私有云平台是一个比较明智的决定。更早一点的话,说不定就使用 LXC 或者 Warden 了。未来的计划还是跟公司的业务需求紧密结合,最大能力的发挥 PaaS+Docker 的威力。

InfoQ:你将在 CNUTCon 上分享哪些内容?

盛延敏:上述的内容都会有涉及到。另外,还有大量我们的『干货』分享,都是我们曾经踩过的坑哦。欢迎大家捧场。谢谢!

2015-08-10 08:396088
用户头像

发布了 219 篇内容, 共 134.8 次阅读, 收获喜欢 190 次。

关注

评论

发布
暂无评论
发现更多内容

netty案例,netty4.1基础入门篇九《自定义编码解码器,处理半包、粘包数据》

小傅哥

Java Netty

程序开发中的持续集成、持续交付、持续部署

石云升

持续集成 持续交付 持续部署 自动化部署

netty案例,netty4.1中级拓展篇十《Netty接收发送多种协议消息类型的通信处理方案》

小傅哥

Java Netty 小傅哥

世界很大,我想去看看

escray

学习 面试

netty案例,netty4.1基础入门篇四《NettyServer收发数据》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇八《Netty心跳服务与断线重连》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1高级应用篇二,手写RPC框架第二章《netty通信》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇五《NettyServer字符串编码器》

小傅哥

Java Netty

netty案例,netty4.1基础入门篇八《NettyClient半包粘包处理、编码解码处理、收发数据方式》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇七《Netty请求响应同步通信》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1高级应用篇一,手写RPC框架第一章《自定义配置xml》

小傅哥

Java Netty

netty案例,netty4.1基础入门篇一《嗨!NettyServer》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇二《Netty使用Protobuf传输数据》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇一《Netty与SpringBoot整合》

小傅哥

Java Netty

大龄程序员的自我介绍 v 0.1

escray

学习 面试 自我介绍

netty案例,netty4.1基础入门篇零《初入JavaIO之门BIO、NIO、AIO实战练习》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇十二《简单实现一个基于Netty搭建的Http服务》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇四《Netty传输文件、分片发送、断点续传》

小傅哥

Netty 小傅哥

netty案例,netty4.1基础入门篇七《嗨!NettyClient》

小傅哥

Netty 小傅哥

netty案例,netty4.1中级拓展篇三《Netty传输Java对象》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇五《基于Netty搭建WebSocket,模仿微信聊天页面》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇二《NettyServer接收数据》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇六《NettyServer群发消息》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇三《NettyServer字符串解码器》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1基础入门篇十《关于ChannelOutboundHandlerAdapter简单使用》

小傅哥

Netty 小傅哥

大众点评容器云平台:运营超一年,承载大部分业务_服务革新_小盖_InfoQ精选文章