• 1. 蚂蚁金服Docker实践的挑战与方案
  • 2. Agenda蚂蚁容器服务(ACS)简介 ACS实践 计算 网络 服务编排 快速交付 总结
  • 3. ACS简介应用场景与架构
  • 4. ACS简介(一)以容器为载体,为PaaS/SaaS按需提供计算存储网络资源,提高资源的利用率与交付速度 适配多种IaaS环境,对PaaS/SaaS屏蔽IaaS实现细节 实现容器/集群级别的标准化与可复制/可迁移
  • 5. ACS简介(二)ACS搜索服务网关服务消息队列高速缓存其他PaaSSaaSSaaS其他BootstrapX-LinkAliyun IaaS
  • 6. ACS整体架构PaaSACS SwarmACS DockerACS DockerACS SwarmACS DockerManagementDocker clusterBootstrap
  • 7. ACS应用场景(一)金融云平台中实现了基于ACS/Docker的全流程管理。
  • 8. ACS应用场景(二)ACS在蚂蚁内部当前主要作为IaaS平台,为了兼容已有架构与运维体系,基本原则是把容器作为VM使用。 ContainerPaaSContainerContainerContainerContainers ClusterSSH
  • 9. 计算动态,优化的cpuset资源分配,Swarm集群下依然能够简易透明的控制cpu资源调度。
  • 10. Cpuset设置存在的问题(一)012Core 0Socket 0CPU113Core 1214Core 2315Core 3416Core 4517Core 5618Core 0Socket 1719Core 1820Core 2921Core 31022Core 41123Core 5
  • 11. Cpuset设置存在的问题(二)012Core 0Socket 0CPU113Core 1214Core 2315Core 3416Core 4517Core 5618Core 0Socket 1719Core 1820Core 2921Core 31022Core 41123Core 5
  • 12. Cpuset分配的解决方案Docker DaemonSwarm Managercpuset=21,23cpuset=6,7Docker DaemonDocker DaemonDocker Daemoncpuset=8,9cpuset=12,13docker create –l cpuset.ncpu=2
  • 13. 网络为了屏蔽不同的IaaS,ACS提供了VLAN driver和VXLAN driver适配物理网络与阿里云ECS经典网络。
  • 14. VLAN网络基于VLAN的大二层网络,同时带来了MAC NAT和ARP Proxy功能;改进的Endpoint生命周期将更适合IaaS平台。
  • 15. 对网络的需求跨host的容器直连 容器需要有独立IP 兼容现有的网络架构
  • 16. ACS VLAN driverDocker DaemonVLAN PluginKV(Zookeeper)NodeDocker DaemonVLAN PluginNodeDocker DaemonVLAN PluginNodeSwarm ManagerSwarm Clusters
  • 17. 大二层网络的经典问题易环路 整网MAC地址过多,易超出交换机CAM表容量 广播流量大,影响范围大,ARP报文数量多会带给交换机巨大压力
  • 18. MAC=m2 IP=ip2MAC NAT与ARP Proxyovsbr0bond0veth1veth2eth0eth0MAC=m0MAC=m1 IP=ip1MAC=m3 IP=ip3veth3eth0src MACm1dst MACmsrc MACm0dst MACmsrc MACmdst MACm0dst IPip3src MACmdst MACm3dst IPip3ARP op=1IPip3ARP op=2MACm0
  • 19. libnetwork
  • 20. 官方Docker IP地址引发的问题容器重启后,IP地址较容易发生变动,依赖传统方式(puppet/ssh)的运维和监控等功能无法正常工作。 指定IP创建容器,在容器启动前如果IP被其他容器占用,则无法启动成功。 Swarm集群中,IP变动和被占用的概率都被放大
  • 21. Endpoint生命周期ContainerEndpointCreate-StartCreate & JoinStopLeave & DeleteDelete-Rename* RenameConnect* Create & JoinDisconnect* [Leave &] Delete* 只在container运行时执行
  • 22. Endpoint生命周期改造ContainerEndpointCreateCreateStartJoinStopLeaveDeleteDeleteRenameRenameConnect* Create & JoinDisconnect* [Leave &] Delete* Container非运行时不执行Join/Leave
  • 23. VXLAN网络VXLAN driver提供了在Aliyun经典网络内的跨host容器互联功能
  • 24. ACS VXLAN网络ID=10 IP=192.168.0.1ID=11 IP=192.168.0.1ID=10 IP=192.168.0.2ID=11 IP=192.168.0.1
  • 25. ACS VXLAN优点不依赖交换机配置,很强的自定义网络能力 同一网络内跨Host的容器间直连 不同网络二层隔离 不同网络网段地址可重复
  • 26. 服务编排增强的compose工具提供了更复杂的部署功能;扩展的relabel功能为基于容器的服务提供了统一模型
  • 27. acs-composeacs-composev1 YAMLsLoadBalanceDNSStorageSQL databaseACScontainerextended labelsStep1 – Service AStep2 – Service B,Ccreate/referenceSLBLVSOSSRDSHDFSOther
  • 28. 基于Label的服务模型Docker DaemonSwarm Managerc3Docker DaemonDocker Daemonc1, ip=ip1c2, ip=ip2run –l service.name=A, scale=2Service dispatcherDocker DaemoneventsServicesserviceAIPip1serviceAIPip2
  • 29. Container relabel功能Docker DaemonSwarm Managerc3, ip=3Docker DaemonDocker Daemonc1, ip=ip1c2, ip=ip2update c3 –l service.name=AService dispatcherDocker DaemoneventsServicesserviceAIPip3
  • 30. 快速交付基于Bootstrap的一键建站,打包了ACS以及基于ACS的基础服务,为上层服务的快速交付提供保障
  • 31. 快速交付(一)DashboardBootstrapSwarm ManagerSwarm NodelibmachineSwarm NodeSwarm快速交付(一)
  • 32. 快速交付(二)DashboardBootstrapSwarm ManagerSwarm NodelibmachineSwarm NodeX-LinkdockerclientServices: [A, B, C]ACS快速交付(二)
  • 33. BootstrapBootstrap封装了libmachine,根据输入的Node信息列表,可完成集群搭建,扩容缩容等功能。 Bootstrap抽象了集群概念,支持官方Swarm,ACS,Mesos,K8s等集群。 Bootstrap libmachine扩展了以下功能: 增加了alios provision 增加了非SSH的配置通道 引入了docker-machine-aliyun-driver
  • 34. X-Link部署流程EnvService EndpointsService LoaderService A Deploy ImageDeployService B Deploy ImageACS SwarmService A Deploy JobService B Deploy JobScriptscomposeService AService BAPIX-Link
  • 35. ACS Docker热升级基于docker-1.11.1-experimental,但该版本热升级后容器存在无法重启,网络资源无法恢复的缺陷。我们完成了以下修复: 提供了libnetwork Restore功能,在热升级后完成恢复网络配置: 恢复sandbox信息 重启embed DNS服务 修复了热升级后存在的RWLayer Mount的缺陷
  • 36. 总结优化的cpuset设置,使CPU配置对容器使用方友好且透明 增加了MAC NAT及ARP Proxy的大二层网络,使交换机不再是限制二层网络规模的瓶颈 改造后的endpoint生命周期能够有效的维持IP地址,使Docker容器作为VM使用时更加贴近运维及监控场景 扩展的vxlan driver有效支持了Aliyun ECS经典网络 增强的acs compose解决了编排过程中使用外部资源的问题 改进的libmachine,解决了多平台,多通道的搭建问题 增加了Restore功能的libmachine,为Docker完善了热升级功能