《超大规模Docker化的实战经验(23页).pdf》由会员分享,可在线阅读,更多相关《超大规模Docker化的实战经验(23页).pdf(23页珍藏版)》请在三个皮匠报告上搜索。
1、超大规模Docker化的实战经验毕玄阿里巴巴研究员DockerAlibabaDockerAlibaba一、Docker化前的阿里二、Docker化的目标三、Docker化碰到的问题四、未来目 录content一、Docker化前的阿里123虚拟化ECST4:基于LXC的“VM”标准化内部自定义的基线部署模式多种多样,甚至不同语言不同部署系统碰到的问题标准化不好推进,不同业务模式接受度不同,标准化推进不力导致各种系统都很难做;需要更强制的DevOPS模式;多种部署模式导致的重复建设。二、Docker化的目标123虚拟化将Docker改造成更像“VM”。标准化有效推进DevOPS;各种语言系统都走
2、同样的部署链路。双11核心买家链路全部Docker化核心应用全部Docker化,快速推进。Docker和DevOPS、标准化更强制的DevOPS模式dockerfile描述了整个运行环境;更有效的推进标准化部署是销毁用镜像重新拉起;意味着目录的规范性非常重要。三、Docker化碰到的问题123Swarm规模化带来的挑战稳定性Docker Engine更像“VM”各种bug fix和功能增强Docker生态从编译到部署Swarm规模化的挑战官方 Swarm is production ready and tested to scale up to one thousand(1,000)nodes
3、 and fifty thousand(50,000)containers.我们改造后单Swarm实例health nodes稳定在2W+;Swarm 规模化的挑战优化连接管理保证同一个engine各种极端情况下同一时间只建立一个连接避免一个连接起一个系统线程,从而解决了连接暴增后系统crash的问题优化后单实例管理2W+个node只需要40个系统线程优化锁管理严格控制锁的使用,最小化锁粒度,解决了极端情况下swarm实例夯住的问题优化大批量node的加入删除修改diff算法,减少node刷新时的cpu开销避免实例重启时大批量node并行建立连接对系统的冲击Swarm HA-自己实现了一套sw
4、arm-proxy证书和多实例多集群管理不同证书路由到不同集群的swarm实例,没有独立集群的证书路由到公共集群公共集群上不同证书创建的实例互相不可见(修改swarm实现做了过滤)单实例热备管理故障自动切换,平滑升级回滚见下页图swarm.alibaba-VIP(LVS)swarmproxyETCDswarmproxyswarmproxyswarm机房A:currentSwarm机房B:standbyswarm机房B:currentSwarm机房C:standbyswarm机房C:currentSwarm机房A:standby机房A机房B机房CDocker Engine更像“VM”的AliDo
5、cker延续在T4的经验,完善namespace;top/load/free/dirquota/df/netstat等;很多改造都可在这里获取 https:/ Engine各种bug fix和功能增强Daemon升级或crash后,所有容器被自动销毁的问题cpuset、cpuacct和cpu子系统mount到一起时cgroup操作错误的bug支持基于目录的磁盘配额功能(依赖内核patch)支持指定IP启动容器,支持通过DHCP获取IP支持启动容器前后执行特定脚本支持镜像下载接入各种链式分发和内部mirror的机制增加docker build时的各种参数优化效率和适应内部运维环境优化Engine
6、和registry的交互Docker生态从编译到部署,在没做优化前,整个速度比以前慢了大概两倍多,最差情况甚至慢了有四五倍;编译打包优化 cache 三级cache:mirror、超级节点、单机 应用镜像分层Docker生态从编译到部署,在没做优化前,整个速度比以前慢了大概两倍多;镜像分发优化 基于地域部署,基于机房路由的mirror 每一个image layer的BT模式下载加超级节点cacheDocker生态从编译到部署,在没做优化前,整个速度比以前慢了大概两倍多;发布流程优化流式分发镜像分批预热Docker生态多种部署模式需求Docker自身的部署机制增加了hotfix部署机制Velocity模板类型本地cache四、未来12全面AliDocker化直接跑在物理机上的应用也迁移到AliDocker。Docker生态体系输出到阿里云把阿里大规模Docker实践的经验体系化、工具化的输出到阿里云,为云上Docker用户谋福利。