2016年1月22~23日,ECUG Con 2015大会在北京新疆大厦举行,ECUG(Effective Cloud User Group,实效云计算用户组)是由Erlang爱好者、分布式领域的知名专家组成的民间技术团体。ECUG Con是该组织一年一度交流云计算产业前沿技术的大会。来自数人云的肖德时分享了“Docker在数人云的实践”主题演讲。
数人云也是在2015年Docker最火的时候加入了这个创业大军的,所以肖德时此次分享主要讲述Docker在数人云的最佳实践。
作为一家创业公司,数人云在2015年只做了一件事情,那就是提供PaaS功能,而容器技术是不可缺少的重要组成部分,这也就是为什么现在很多企业内部会大量使用Docker的原因。只不过现在的问题是,我们能用一个小小的芯片就可以取代60年前需要用卡车拉的一台电脑,可是为什么现在企业不能用一台电脑管理整个电脑集群,让复杂的事情简单化,既节省人力又便于管理?
肖德时在这里说,其实谷歌本身计算管理的方式就是经过二十多年的磨练才达到现在的高水平的,也希望国内也有这样的管理方式。谷歌的管理架构有几个特点。首先推出的是针对容器的ECS架构,符合国内创业需求。所有云化的请求都是ELB请求,完全依赖于硬件的支撑,这不是企业架构里面最重要的部分。
在管理引擎和控制面板方面,数人云所做的就是上图黄色部分,也是核心组件。除了追求快速度之外,还要让它具备管理机器集群的能力,提供资源和CPU,最核心的任务是管理UI和内部交互。所有通信都是独立的,而且全部用Docker进行容器化包装,所有组件的分发都是通过中央来进行分发。
数人云之前做部署的时候用的是镜像包转变。从微服务架构到分布式DCOS架构设计的转变过程中欠考虑的事情就是没有考虑分布式状况。但在实际应用场景中,分布式架构可以带来的好处,一是可以快速复制,二是可以在廉价的机器上进行计算。所以,用Docker的目的是把现有的微服务包装起来,能够快速的分发,实现多方面去复制。从本质上来说,数人云的架构是把环境带上做Ruild、Ship、Run的实现,而且内部每一个开发者和运维,都会用Docker的方式来交互。
在创业一年之后,肖德时总结了他们的团队做了哪些有决定性的事情。
数人云现在需要管理的App有50多款,根本不可能用人工的方式去管理,所以他们采用自己的MySQL管自己的数人云:搭建3套关系来应对快速迭代的需要,不需要做很多的架构设计。
在分享过程中,作为Docker的开发者之一的肖德时也谈到了Docker的另一面。Docker本身现状是有坑的:
有的人问为了节省资源可不可以在物理机里多启动一个Docker,在这种情况下可以对Docker做迁移?肖德时解释说,
如果是在进程无状态的情况下,必须要这么做。有状态的话,在中断时间用分布式存储解决序列化问题。迁移的过程是调度,从一台机器上调到另外一台机器上。
另一个来自传统企业的听众问到,如何把传统应用快速迁移到云环境下?肖德时回答说:
分布式存储这一块也是Docker发力的地方,迁移过程中遇到一个问题就是,如果企业内部有几千个应用同时单点访问一个盘,那么IO性能肯定是很差的。解决的办法就是把IO分流,变相的把IO性能分到更多机器上,通过挂盘的方式来解决,目前这是最成熟的方式。