搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
spring hadoop
›
360的容器化之路
0
2
0
分享
360的容器化之路
yr123
发表于 2015-8-20 17:00:39
[显示全部楼层]
只看大图
阅读模式
关闭右栏
2
13141
问题导读
1、360如何让Docker落地。
2、如何使Docker适配现有技术架构 ,完成线上环境快速部署扩容?
3、使用Docker技术,在构建持续集成环境方面的积累有哪些?
4、使用Docker构建PaaS环境如何加速中小业务快速孵化上线?
编者的话:容器化技术作为“搅局者”,势必面临适配公司已有架构的挑战,本文将为大家介绍360如何让Docker落地。主要包括三方面内容:一,结合公司业务特点,如何使Docker适配现有技术架构 ,完成线上环境快速部署扩容;二,“让产品失败的更廉价”,使用Docker构建PaaS环境加速中小业务快速孵化上线;三,使用Docker技术,在构建持续集成环境方面的一些积累。
容器化技术作为“搅局者”,势必面临适配公司已有架构的挑战,本文将为大家介绍360如何让Docker落地。主要包括三方面内容:一,结合公司业务特点,如何使Docker适配现有技术架构 ,完成线上环境快速部署扩容;二,“让产品失败的更廉价”,使用Docker构建PaaS环境加速中小业务快速孵化上线;三,使用Docker技术,在构建持续集成环境方面的一些积累。
以Docker为主的容器化技术现在可谓风生水起,大家都觉得它可能会颠覆整个IT格局。我们刚开始接触到Docker的时候也觉得它非常好,有很多优点吸引我们。因为它的颠覆性我们称它为“搅局者”。
改造“搅局者”Docker
我们先来看看这位搅局者的优点:
Namespace、CGroups虚拟化, 相比传统虚拟化会有更好性能,反映在生产环境中就是能更大程度的利用资源。
启动速度快,虚拟机最快也得30秒-1分钟,它的启动创建都是秒级。
镜像分层技术,解决了快速变更环境的问题。
这些优点很吸引我们,我们非常希望把它用在生产环境中,但是我们发现理想很美好,现实很残酷。我们之前基础架构都是使用传统虚拟机化技术就是虚拟机。我们要使用Docker就会面临这几个问题 :
不能SSH,紧急问题怎么排查?
怎么监控?
基础服务如何对接?
最重要的问题: 这东西稳定么,线上业务当然不能出问题。
所以,在应用Docker的时候,我们犯了犹豫,因为按照它推荐的方式,我们无法直接立马就在线上业务使用。因为Docker本身也对业务的架构设计有一定要求,比如我们常说的容器无状态,容器中不要留中间数据。我们发现公司的业务架构改造起来困难很大,涉及到方方面面,所以我们决定要Docker去适应公司的架构。
接下来我们就是要解决Docker技术”落地”的问题。
我们对Docker改造点主要有:
容器内部绑定独立IP。
容器内部开启多进程服务。
自动添加监控。
CPU配额硬限制。
容器绑定独立IP这样外部可直接SSH了。
我们考虑在容器内部运行多个进程服务,因为默认容器只开启一个进程,这无法满足我们要求,所以我们大胆进行了改造。我们甚至在镜像里实现了chkconfig让以前的RPM包原生可用。
自动添加监控让创建的容器自动添加到Zabbix中。CPU配额硬限制 Docker 1.7版本已经支持了,我们在这之前自己实现了一套。
改造Docker支持这些功能后,我们又开发了一套调度系统,负责管理调度在集群上如何创建容器,我们也调研了一些开源的调度系统,发现都不满足需求,所以自己开发了一套。
通过这些手段我们就可以让Docker技术“落地”了,而带来的好处是,之前的体系我们要上线新的业务大约需要40分钟,使用Docker缩短到了5分钟。
这是分享的第一部分因为“搅局者”Docker使用遇到了困境,所以我们对它进行了一些改造,更好适配公司场景,让技术“落地”。
基于Docker做一个内部PaaS平台
紧接着我们基于Docker做了一个内部PaaS平台。公司每天会上线很多业务,这些业务有些是体量很大的重要业务,有些是带有试错性质的小业务。
传统业务上线的步骤会非常得严谨,流程会比较长,这些流程其实也对业务稳定性会有保障。有些试错性质的小业务,使用同样的流程变得不太合适,所以我们就想加速小业务上线流程,让他们可以快速上线,验证自己得价值。基于这种考虑,而且Docker天生的特点就特别适合干这个。
这是界面的一个截图,主要是前端Web UI去访问一个调度层 ,调度层通过调用Docker API来创建容器。目前PaaS平台支持PHP、Node.js、Python、Java等语言。
除了创建容器,我们还需要,创建Git仓库、配置访问代理等,总之研发一键就可以让业务进入待上线状态,只要他传完代码就可以上线了。
目前这个平台跑了300+业务,让很多研发只要有一个idea,就可以快速实施上线,很受他们欢迎。
这也是我们应用Docker的第二部分,通过私有PaaS平台,加速业务孵化。
关于持续集成
第三部分是关于持续集成。
持续集成当然是Docker最纯粹的玩法了,通过『Dockerfile-构建镜像-创建新容器』来完成环境的变更。
这块比较复杂,我们大致分了9个模块,比如调度模块、监控模块、存储模块等。
首先我们做了一个配置转换模块来转换Dockerfile,这样即可以统一镜像构建标准,同时也降低了编写Dockerfile的学习成本。
调度模块就直接用的Mesos和Marathon,镜像Registry直接使用了 Registry V2因为它性能更好对高并发支持也很好,最后是镜像构建模块,使用的是Jenkins CI。
但是我们发现一个问题:镜像构建在高并发下其实并不快。 比如装一个RPM包,SSH肯定会比重新build快得多。所以我们做了很多优化在镜像构建这一块,现在结果是100个任务同时构建我们也能达到和传统集群管理如Puppet一样的效率。
Q&A
问:开发自己的调度系统大概花了多久,有遇到特别的技术难点吗?
答:大约2个工程师一个月样子,没有太多得困难。因为调度逻辑比较简单。
问:您刚才说,通过绑定独立的IP就可以直接使用SSH了。
答:通过绑定独立的IP就可以直接使用SSH了,官方关于network那篇文档有介绍实现方案。
问:一般Docker的服务封装是no daemon的,这时如果重启服务,容器也会退出的,如何debug?
答:可使用supvirsod或者monit等将no daemon封装一下。
问:你们服务的注册发现用的是什么?
答:我们基础架构组开发了一个,名字叫QConf,已经开源在GitHub上。
问:你说Zabbix做的一个容器监控,那有没有一个基于宿主机的监控方式?因为据我所知你这样的话每个容器都要运行一个代理吧。
答:我们就是使用宿主机里安装Zabbix代理,通过Zabbix自发现来动态获取容器列表,再基于自定义的监控脚本获得每个容器的监控数值。
问:你们的那些业务跑在Docker里了?
答:目前360的很多Web2.0业务已经跑在了上面,像影视、新闻、免费WIFI等。
问:Docker建议无状态,那么是否意味着不建议存放数据?比如MySQL,还是说通过-v来解决?
答: 这其实是数据存储问题,你可以使用分布式存储来存储数据,只要数据和逻辑分离容器就无状态了。
问:Docker建议无状态,那么是否意味着不建议存放数据?比如MySQL,还是说通过-v来解决?
答:我理解就是容器无状态就是基于镜像创建的马上就能线上使用。
问:线上Docker的稳定性如何?
答:目前运行都很稳定,没有出现容器异常崩溃等情况。
问:Container中跑多个进程,那么PID为1的进程你们是由什么控制的,直接由对应的应用程序还是其他什么?
答:之前用了supervisord 现在使用S6。
问:Registry面对大量的并发,有测试出大致的性能占比吗,整个registry是mirror还是其他架构?
答:Registry目前我们更新到了V2,我们测试V2在高并发pull和push上性能非常好,镜像存储使用共享存储,这样Registry也可以横向扩展。
问:如果容器配置用户可以直接访问的IP,在宿主虚拟机中是否可以基于Open vSwitch实现,否则会太依赖虚拟机网络?
答:这个可以的,实际上我们也测试过没问题,当时基于稳定性考虑没有使用。
问:奇虎的CPU配额管理是如何实现的?
答:这个Docker 1.7已经实现了,我们和官方的实现思路是一致的。
问:关于容器中数据存储是怎么做的,如果是共享存储如何进行对应?
答: 可以试试GlusterFS或者Ceph。
问:容器绑IP,容器重启后IP要重新绑吧,IP会变吗?
答:需要重新绑,可做成自动化脚本。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(2)人评论
电梯直达
正序浏览
a_zhen
发表于 2015-8-21 15:45:11
Docker,很陌生啊,得抓紧时间啦,赶紧学啊
回复
使用道具
举报
显身卡
OPENGLSSH
发表于 2015-9-24 18:20:47
docker现在很流行啊,发现好多互联网公司都在用这东东
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
yr123
中级会员
关注
65
主题
65
帖子
8
粉丝
TA的主题
电商数据分析基础指标体系
2015-10-14
HDFS中的集中化缓存管理
2015-10-9
基于Hadoop集群的大规模分布式深度学习
2015-10-8
MapReduce程序的工作过程
2015-10-8
Spark 1.5版本说明
2015-10-7
24小时热文
矩阵分析引论罗家洪(第四版)
互联网大厂年终福利曝光:看看别人家老板怎
像高手一样发言:七种常见工作场景的说话之
携程允许员工春节回乡办公2个月
数据治理实施方案
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈