写点什么

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

  • 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:396245
用户头像

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

关注

评论

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

视频动态壁纸:Dynamic Wallpaper 激活版

真大的脸盆

Mac Mac 软件 动态壁纸 高清动态壁纸

使用 Metabase 连接 Databend Cloud 实现大屏展示

Databend

大顶堆的实现(基于数组存储的完全二叉树)

Java你猿哥

Java 二叉树 ssm 实战

太全了!马士兵内部共享—1658页《Java面试突击核心讲》

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类

汀丶人工智能

数据挖掘 机器学习

熬了一个月肝完这份阿里P8的Java面试手册,我从20K变成了30K

Java你猿哥

Java 面经 校招 春招 八股文

流批一体在 AI 核心电商领域的探索与实践

Apache Flink

大数据 flink 实时计算

美团二面:细数 Redis 阻塞的9种情况

做梦都在改BUG

Java redis 面试

JVM级别的本地缓存框架Guava Cache:探寻实现细节与核心机制

Java你猿哥

Java JVM ssm Guava Cache

即时通讯技术文集(第10期):IM通信协议该选TCP还是UDP [共12篇]

JackJiang

软件测试/测试开发丨app自动化测试之Appium WebView 技术原理

测试人

软件测试 自动化测试 测试开发 appium

五分钟带你学会微服务熔断原理分析与源码解读

Java你猿哥

微服务 ssm 微服务实战 微服务熔断

C#/VB.NET:如何将PDF转为PDF/A

在下毛毛雨

C# .net PDF 文档转换 PDF/A

喜讯:祝贺行云绽放荣获深圳市专精特新企业称号

行云管家

云计算 深圳 专精特新

阿里是如何使用分布式架构的?阿里内部学习手册分享

Java你猿哥

分布式 ssm 分布式架构 分布式实战

精品!阿里P7爆款《K8s+Jenkins》技术笔记,高质量干货必收藏

做梦都在改BUG

Java Kubernetes k8s jenkins

Github点击破百万!这部《从零开始学架构》神书就此霸榜

Java你猿哥

Java 架构 ssm 面经 架构实战

狂刷《Java权威面试指南(阿里版)》,冲击“金三银四”有望了

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

人工智能打造充满创造力的新世界,华为云开发者日无锡站成功举办

Geek_2d6073

医疗卫生机构等保测评法律依据有哪些?多久要测评一次?

行云管家

医疗 等保

Qualcomm QCN9074 4x4 MIMO 802.11ax MX6974 F5 WIFI6 Module

MAXON

QCN9074

春招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

这一次,NineData新功能上线,真的是拼了

NineData

人工智能 sql 开发规范 数据复制服务 企业开发系统

源码中常见的 where 1=1 是一种高级优化技巧?

Java你猿哥

Java 源码 ssm

我有一篇Java Stream使用手册,学了就是你的了!

做梦都在改BUG

微信小程序管理软件有哪些特点?

没有用户名丶

微信小程序

RabbitMQ 延迟消息实战

做梦都在改BUG

Java 消息队列 消息中间件 Rabbit MQ

人工智能打造充满创造力的新世界,华为云开发者日无锡站成功举办

华为云开发者联盟

人工智能 华为云 元宇宙 华为云开发者联盟 企业号 3 月 PK 榜

卷起来了!阿里最新出品“微服务全阶笔记”,涵盖微服务全部操作

程序员小毕

Java 程序员 微服务 SpringCloud springcloudAlibaba

机器学习算法(三):基于horse-colic数据的KNN近邻(k-nearest neighbors)预测分类

汀丶人工智能

数据挖掘 机器学习

视频编辑场景下的文字模版技术方案

百度Geek说

企业号 3 月 PK 榜 视频编辑 端渲染 富文本素材

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