• 1. 中国移动数据中心操作系统 实践
  • 2. 第一部分走向DCOS之路第二部分中国移动DCOS实践第三部分经验与分享
  • 3. 云计算驱动企业IT架构演进“烟囱”式IT系统架构从2G到4G,中国移动业务发展的井喷,带来了IT系统的迅猛发展 竖井化巨石型应用的负面作用逐步凸显 IOE VS 去IOE? ITIL 瀑布式开发 VS DEVOPS 敏捷开发? 集中式架构 VS 分布式架构? 商业 VS 开源? 打破竖井、应用和平台解耦、打破供应商绑定 敏捷建设、聚焦支撑业务 统一管理建设运营,提升运维效率、提升资源利用率,降低TCO 小前台大中台企业 IT 架构演进资源池化、云化IT架构
  • 4. 业界云化建设场景传统建设模式小型机业务系统X86(A) 物理机中间件私有云建设模式PaaS+中间件IaaS+虚拟化X86业务系统PaaS+云服务X86容器运维小型机业务系统X86虚拟化(B) 虚拟化(C) 云化(D) 平台化中间件运维运维运维运维ARM虚拟机业务系统开发第三方应用运维运维运维运维物理机1. 重心 - 从资源到业务 2. 建设模式 – 烟囱式到平台化 3.能力 – 组件到服务 4. 架构 – 集成到开放
  • 5. WHY DCOS?X86化,虚拟机化等于云化吗? 降低风险 降低运营支出 降低资本支出 提高敏捷性 全面优化 简化高效灵活统一对数据中心内部整体目标架构没有统一的规划设计 标准化的硬件和软件体系 业务基础架构建设以月为单位 进程级细颗粒度资源共享 资源动态调度 业务基础架构建设以分钟为单位 实现数据中心级弹性伸缩传统孤岛标准化IaaS 资源池化PaaS和应用 资源池化DCOS化虚拟化服务化智能化孤岛X86化通过服务化实现共享的平台架构 业务基础架构建设以日为单位 实现集群级弹性伸缩通过虚拟化实现共享的基础架构 业务基础架构建设以周为单位 实现虚拟机级弹性伸缩(CMCC)(领先互联网公司)(传统企业整体)
  • 6. 部署 效率应用的快速部署开通受到极大制约:大部分应用系统在开发、测试、准发布和生产部署都有各自的环境,部署环境不一致,增加了测试的复杂度,导致需求的上线环节多、时间长,无法满足业务快速上线的要求弹性 伸缩传统虚拟化只能实现虚机级弹性伸缩,效果极其有限:伸缩范围只能是一台物理机,超过就是应用自己的事情。资源静态部署,峰值申请。忙闲时资源难以有效动态调整,无法做到弹性扩展,按需使用。利用 率现有资源利用率非常低: CPU平均利用率(10-20%)明显低于互联网公司 (50%以上)。TCO高,投资效益低下基于IaaS层的云化先天不足:静态部署、只能大切小不能小聚大、不能维持应用环境的自动化封装......WHY DCOS?IAAS时代云化问题剖析异地大二层?混合云部署?在线灰度发布?......
  • 7. 资源动态共享HadoopPregelMPI静态分区动态共享
  • 8. WHY DCOS?不仅仅是容器需求助力敏捷开发快速部署 动态部署高可用 容灾监控弹性扩缩容高资源利用率我们做的是DCOS的推广应用,不是容器的推广应用。后者只是前者的子集
  • 9. DCOSLinux OSDCOSResource ManagementLinux KernelMesosProcess ManagementLinux KernelDockerJob Schedulinginit.d, cronMarathon, ChronosInter-Process CommunicationPipe, SocketRabbitMQFile Systemext4HDFS, Ceph数据中心操作系统(DataCenter Operating System,DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件堆栈。它将所有数据中心的资源当做一台大型计算机来调度,可以视作这个大型主机的操作系统。 注:以Mesos为例,来自互联网
  • 10. 技术架构选型MesosYarnKubernetesDocker M+C+SCF/OpenShift调度级别二级调度 (Dominant Resource Fairness)二级调度 (FIFO,Capacity Scheduler,Fair Scheduler)二级调度(基于Predicates和Priorities两阶段算法)一级调度 (提供Strategy 和Filter两种调度策略)CF 一级调度 (基于Highest-scoring调度策略)/OpenShift使用Kubernetes生态活跃活跃活跃非常活跃活跃一般适用场景通用性高,混合场景大数据生态场景目前较单一较单一较单一成熟度高高中低中应用与平台耦合度低中中低高应用案例分析Twitter、Apple、Airbnb、Yelp、Netflix、ebay、VerizonHadoop生态圈应用目前快速发展中,生产环境应用较少很少较少,PaaS整体解决方案,应用与平台的耦合度较高 根据对适合构建DCOS的各种技术架构的评估,选择以Mesos为基础的方案。优点是成熟度高、两级调度框架、适合多种应用场景、混合部署、应用与平台耦合度低。
  • 11. 中国移动DCOS建设历程2014年起,中国移动开始了数据中心操作系统的探索,并成功的应用于生产。2014年3-8月开始关注Docker容器化技术,并启动Docker应用的技术验证2014年11月将核心系统CRM的一个完整集群组迁移到容器运行,Docker投入生产2015年11月2015年12月10日上线CRM营业厅应用2016年4月底已有15套应用系统平稳运行在DCOS平台,涵盖CRM营业厅、手机营业厅等多套核心系统。124562015年5-9月提出数据中心操作系统的设想,同苏州研发中心及合作伙伴建设DCOS验证网,使用Mesos+Marathon+Docker方案3浙江移动手机营业厅系统成功迁移至DCOS平台,成为中国移动首个运行在DCOS架构下的生产系统; DCOS平台顺利通过双11手机营业厅充值1折秒杀活动验证
  • 12. 第一部分走向DCOS之路第二部分中国移动DCOS实践第三部分经验与分享
  • 13. DCOS功能框架EtcdEtcdEtcd服务注册 服务引流应用容器化 (Docker封装)应用(Docker)应用(Docker)HAproxyHAproxyHAproxy节点节点节点节点MESOSMARATHONzookeeper物理机或虚拟机资源调度 任务调度DCOS 管理平台监控管理模块弹性扩缩容调度模块资源配置模块统一日志中心鉴权模块持续集成平台Dashboard以开源技术Mesos +Marathon为核心 、结合Docker、HAProxy,在其上开发了DCOS控制台、资源配置模块、鉴权模块、统一日志中心、弹性扩缩容调度模块、监控管理模块、持续集成平台。
  • 14. Mesos Cluster (Master)Mesos Master Marathon Zookeeper EtcdMesos Master Marathon Zookeeper EtcdMesos Master Marathon Zookeeper EtcdGit服务器应用包、镜像JenkinsMesos Cluster (Slave)Docker ContainerDocker ContainerDocker ContainerMesos SlaveMesos SlaveMesos SlaveDistributed File System(Ceph、HDFS…)Docker RegistryLBHAProxy ConfdHAProxy Confd部署弹性调度构建构建/上传PushPull服务发现代码DCOS架构图结合行业主流技术方案,通过关键技术选型,确定中国移动DCOS技术架构,即以容器为基础封装各类应用和运行环境,以Mesos+Marathon为核心实现容器资源的分布式调度与协调。
  • 15. 资源调度1MPI jobMPI schedulerHadoop jobHadoop schedulerAllocation moduleMesos masterMesos slaveMPI executorMesos slaveMPI executortasktaskResource offerPick framework to offer resources to*来自互联网
  • 16. 资源调度2MPI jobMPI schedulerHadoop jobHadoop schedulerAllocation moduleMesos masterMesos slaveMPI executorMesos slaveMPI executortasktaskPick framework to offer resources toResource offer Resource offer = list of (node, availableResources) E.g. { (node1, <2 CPUs, 4 GB>), (node2, <3 CPUs, 2 GB>) }*来自互联网
  • 17. 资源调度3MPI jobMPI schedulerHadoop jobHadoop schedulerAllocation moduleMesos masterMesos slaveMPI executorHadoop executorMesos slaveMPI executortasktaskPick framework to offer resources totaskFramework-specific schedulingResource offerLaunches and isolates executors*来自互联网
  • 18. 任务调度Mesos仅负责分布式集群资源分配 Marathon负责任务调度,故障转移
  • 19. 服务注册Etcd只是个独立的服务注册发现组件,只能通过在宿主机上部署Etcd发现组件,通过其发现宿主机的容器变化来发现,属于被动的发现,往往会出现发现延迟时间较长的问题,我们通过修改Etcd组件的发现接口,实现与Marathon的Event事件接口进行对接,达到Marathon的任何变动都会及时同步给Etcd组件,提高了系统的发现速度,并且避免在每个宿主机上部署Etcd发现组件。MarathonEtcdConfdHAProxy
  • 20. 管理平台
  • 21. 数据中心容器视图
  • 22. 生产实践注册用户3000万,日活跃用户数300万 “双十一”抢购,并发数峰值近6万次/秒手机营业厅试点B域核心--CRM系统全省迁移完成 截至16年5月,已有15套应用系统平稳运行在DCOS平台上多核心系统推广自主开发DCOS管理平台,集快速部署、持续集成、日志、告警和弹性伸缩于一身管理平台 建设
  • 23. DCOS优势分析DCOS优势高资源利用率高效的跨数据中心的资源调度DCOS相较于虚拟机有着基于CPU、内存、IO的更细粒度的资源调度,多个计算框架或应用程序可共享资源和数据,提高了资源利用率。高可用性、容灾DCOS平台展现了其在线性扩展、异地资源调度等方面的优异性能,无需大二层网络实现跨机房的资源调度。,弹性扩缩容DCOS平台所有组件采用分布式架构,应用跨机房分布式调度。自动为宕机服务器上运行的节点重新分配资源并调度,保障业务不掉线,做到故障自愈。彻底解决应用的扩缩容问题,容量管理从“给多少用多少”向“用多少给多少”转变,被动变主动。应用的扩缩容时间从传统集成方式的2-3天缩短到秒级,可以根据业务负载自动弹性扩缩容。
  • 24. 第一部分走向DCOS之路第二部分中国移动DCOS实践第三部分经验与分享
  • 25. 应用改造接入层的无状态化改造 去http session 交互用http+json短连接 Session信息放缓存ClientHAProxyWEB1WEB2WEB3RedissessionId
  • 26. 应用改造内部服务调用的改造 HTTP接口:同接入层一样使用负载均衡方案HAProxy+Confd+Etcd; 服务化框架:使用服务化框架服务的注册发现功能,注意需要将容器外的IP和端口上报给配置中心。WEB1APP1MarathonWEB2APP2APP3Zookeeper
  • 27. 弹性扩缩Marathon的扩缩容默认只能根据用户需要进行手动调整,我们结合多年的系统运维经验,实现基于并发数、响应时间、CPU和内存使用率等容量指标进行自动弹性扩缩容调度的算法。
  • 28. 数据中心切换
  • 29. 踩过的坑网络中断引起服务注册发现异常WEBAPPZOOKEEPER2.WEB获取APP路由信息1.APP启动注册路由信息3.WEB访问APP问题描述 应用前台大范围报错:no available app found。 问题分析 网络一直波动导致zk频繁选举,web从zk中获取的app信息未及时更新。 解决方案 增加APP节点信息定期对比校验机制。
  • 30. 踩过的坑容器分布不均衡问题描述 生产过程中,发现个别计算节点CPU使用率较高,其上的应用访问速度慢甚至异常的情况。 问题分析 发现该服务器上的容器数量过多,导致资源紧张。 解决方案 设置Marahon constrains策略为hostname:GROUP_BY
  • 31. 踩过的坑F5-HAProxy健康检查异常问题描述 测试过程中,发现基于TCP健康检测策略的F5设备出现HAProxy健康检测失败的情况。 问题分析 F5 TCP健康检查时需要HAProxy进行回包才能认为健康检测正常,而HAProxy只是代理功能,无回包功能。 解决方案 修改haproxy.cfg配置文件。
  • 32. 踩过的坑容器CPU资源超卖问题描述 生产过程中,发现个别应用CPU使用率过高,出现CPU争抢情况,影响其他应用正常运行 问题分析 通过Marathon设置的CPU大小无法限定容器CPU实际使用大小,出现超卖情况。 解决方案 通过marathon设置Docker的cpu-quota参数,限制单容器CPU使用率。
  • 33. 踩过的坑问题描述 压力测试过程中,发现无论如何调整集群容器数量,TPS一直上不去。 问题分析 通过对负载均衡HAProxy的路由分析,发现请求分发并不均衡。 解决方案 修改haproxy.cfg配置文件,将balance负载均衡策略由roundrobin(轮询策略)修改为leastconn(最小连接)策略。HAProxy负载不均衡
  • 34. 经验总结联合研发的工作模式依托开源社区,联合合作伙伴攻关,中国移动在运营商中率先完成DCOS试点建设,为中国移动的IT技术自主化推广实践积累了宝贵经验。自动化弹性伸缩的技术架构选择合适的开源技术路线,结合运维实践经验,实现应用根据业务压力变化而自动弹性扩缩容,成为运营商内首个实际案例。为IT私有云发展和IT架构转型工作奠定了坚实的基础。传统应用改造的实践经验对传统应用进行改造,实现了应用的无状态化,与DCOS平台上动态的扩展和伸缩无缝适配,积累了核心系统DCOS化改造的工作经验自主开发的持续集成平台基于Jenkins CI和DCOS,自主开发持续集成平台,初步实现代码编译、单元测试和上线发布的一键化和自动化,显著提高软件开发部署效率
  • 35. 谢谢三墩IT人