中国移动数据中心操作系统实践.pptx
中国移动数据中心操作系统 实践,第一部分,走向DCOS之路,第二部分,中国移动DCOS实践,第三部分,经验与分享,,云计算驱动企业IT架构演进,“烟囱”式IT系统架构,从2G到4G,中国移动业务发展的井喷,带来了IT系统的迅猛发展 竖井化巨石型应用的负面作用逐步凸显 IOE VS 去IOE? ITIL 瀑布式开发 VS DEVOPS 敏捷开发? 集中式架构 VS 分布式架构? 商业 VS 开源? 打破竖井、应用和平台解耦、打破供应商绑定 敏捷建设、聚焦支撑业务 统一管理建设运营,提升运维效率、提升资源利用率,降低TCO 小前台大中台,企业 IT 架构演进,资源池化、云化IT架构,,业界云化建设场景,1. 重心 - 从资源到业务 2. 建设模式 – 烟囱式到平台化 3.能力 – 组件到服务 4. 架构 – 集成到开放,WHY DCOS?X86化,虚拟机化等于云化吗?,(CMCC),(领先互联网公司),,(传统企业整体),,,,应用的快速部署开通受到极大制约:大部分应用系统在开发、测试、准发布和生产部署都有各自的环境,部署环境不一致,增加了测试的复杂度,导致需求的上线环节多、时间长,无法满足业务快速上线的要求,,传统虚拟化只能实现虚机级弹性伸缩,效果极其有限:伸缩范围只能是一台物理机,超过就是应用自己的事情。资源静态部署,峰值申请。忙闲时资源难以有效动态调整,无法做到弹性扩展,按需使用。,,现有资源利用率非常低: CPU平均利用率(10-20%)明显低于互联网公司 (50%以上)。TCO高,投资效益低下,基于IaaS层的云化先天不足:静态部署、只能大切小不能小聚大、不能维持应用环境的自动化封装,WHY DCOS?IAAS时代云化问题剖析,异地大二层?混合云部署?在线灰度发布?,资源动态共享,,Hadoop,Pregel,MPI,静态分区,动态共享,WHY DCOS?不仅仅是容器,,我们做的是DCOS的推广应用,不是容器的推广应用。后者只是前者的子集,DCOS,数据中心操作系统(DataCenter Operating System,DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件堆栈。它将所有数据中心的资源当做一台大型计算机来调度,可以视作这个大型主机的操作系统。,注:以Mesos为例,来自互联网,,技术架构选型,根据对适合构建DCOS的各种技术架构的评估,选择以Mesos为基础的方案。优点是成熟度高、两级调度框架、适合多种应用场景、混合部署、应用与平台耦合度低。,中国移动DCOS建设历程,2014年起,中国移动开始了数据中心操作系统的探索,并成功的应用于生产。,浙江移动手机营业厅系统成功迁移至DCOS平台,成为中国移动首个运行在DCOS架构下的生产系统; DCOS平台顺利通过双11手机营业厅充值1折秒杀活动验证,第一部分,走向DCOS之路,第二部分,中国移动DCOS实践,第三部分,经验与分享,DCOS功能框架,以开源技术Mesos +Marathon为核心 、结合Docker、HAProxy,在其上开发了DCOS控制台、资源配置模块、鉴权模块、统一日志中心、弹性扩缩容调度模块、监控管理模块、持续集成平台。,,DCOS架构图,结合行业主流技术方案,通过关键技术选型,确定中国移动DCOS技术架构,即以容器为基础封装各类应用和运行环境,以Mesos+Marathon为核心实现容器资源的分布式调度与协调。,,资源调度1,MPI job,MPI scheduler,Hadoop job,Hadoop scheduler,,Allocation module,Mesos master,Mesos slave,MPI executor,,Mesos slave,,MPI executor,task,task,Resource offer,Pick framework to offer resources to,*来自互联网,资源调度2,MPI job,MPI scheduler,Hadoop job,Hadoop scheduler,,Allocation module,Mesos master,Mesos slave,MPI executor,,Mesos slave,,MPI executor,task,task,Pick framework to offer resources to,,Resource offer,Resource offer = list of (node, availableResources) E.g. { (node1, ), (node2, ) },*来自互联网,,资源调度3,MPI job,MPI scheduler,Hadoop job,Hadoop scheduler,,Allocation module,Mesos master,Mesos slave,MPI executor,Hadoop executor,Mesos slave,MPI executor,task,task,Pick framework to offer resources to,task,Framework-specific scheduling,Resource offer,Launches and isolates executors,,*来自互联网,,任务调度,Mesos仅负责分布式集群资源分配 Marathon负责任务调度,故障转移,,服务注册,Etcd只是个独立的服务注册发现组件,只能通过在宿主机上部署Etcd发现组件,通过其发现宿主机的容器变化来发现,属于被动的发现,往往会出现发现延迟时间较长的问题,我们通过修改Etcd组件的发现接口,实现与Marathon的Event事件接口进行对接,达到Marathon的任何变动都会及时同步给Etcd组件,提高了系统的发现速度,并且避免在每个宿主机上部署Etcd发现组件。,,管理平台,数据中心容器视图,生产实践,,注册用户3000万,日活跃用户数300万 “双十一”抢购,并发数峰值近6万次/秒,,手机营业厅试点,B域核心--CRM系统全省迁移完成 截至16年5月,已有15套应用系统平稳运行在DCOS平台上,,多核心系统推广,自主开发DCOS管理平台,集快速部署、持续集成、日志、告警和弹性伸缩于一身,,管理平台 建设,DCOS优势分析,第一部分,走向DCOS之路,第二部分,中国移动DCOS实践,第三部分,经验与分享,应用改造,,接入层的无状态化改造 去http session 交互用http+json短连接 Session信息放缓存,应用改造,,内部服务调用的改造 HTTP接口:同接入层一样使用负载均衡方案HAProxy+Confd+Etcd; 服务化框架:使用服务化框架服务的注册发现功能,注意需要将容器外的IP和端口上报给配置中心。,WEB1,APP1,Marathon,WEB2,APP2,APP3,Zookeeper,弹性扩缩,,Marathon的扩缩容默认只能根据用户需要进行手动调整,我们结合多年的系统运维经验,实现基于并发数、响应时间、CPU和内存使用率等容量指标进行自动弹性扩缩容调度的算法。,数据中心切换,,踩过的坑,,网络中断引起服务注册发现异常,WEB,APP,ZOOKEEPER,2.WEB获取APP路由信息,1.APP启动注册路由信息,3.WEB访问APP,问题描述 应用前台大范围报错:no available app found。 问题分析 网络一直波动导致zk频繁选举,web从zk中获取的app信息未及时更新。 解决方案 增加APP节点信息定期对比校验机制。,踩过的坑,,容器分布不均衡,问题描述 生产过程中,发现个别计算节点CPU使用率较高,其上的应用访问速度慢甚至异常的情况。 问题分析 发现该服务器上的容器数量过多,导致资源紧张。 解决方案 设置Marahon constrains策略为hostname:GROUP_BY,踩过的坑,,F5-HAProxy健康检查异常,问题描述 测试过程中,发现基于TCP健康检测策略的F5设备出现HAProxy健康检测失败的情况。 问题分析 F5 TCP健康检查时需要HAProxy进行回包才能认为健康检测正常,而HAProxy只是代理功能,无回包功能。 解决方案 修改haproxy.cfg配置文件。,踩过的坑,,容器CPU资源超卖,问题描述 生产过程中,发现个别应用CPU使用率过高,出现CPU争抢情况,影响其他应用正常运行 问题分析 通过Marathon设置的CPU大小无法限定容器CPU实际使用大小,出现超卖情况。 解决方案 通过marathon设置Docker的cpu-quota参数,限制单容器CPU使用率。,踩过的坑,,问题描述 压力测试过程中,发现无论如何调整集群容器数量,TPS一直上不去。 问题分析 通过对负载均衡HAProxy的路由分析,发现请求分发并不均衡。 解决方案 修改haproxy.cfg配置文件,将balance负载均衡策略由roundrobin(轮询策略)修改为leastconn(最小连接)策略。,HAProxy负载不均衡,经验总结,联合研发的工作模式,依托开源社区,联合合作伙伴攻关,中国移动在运营商中率先完成DCOS试点建设,为中国移动的IT技术自主化推广实践积累了宝贵经验。,自动化弹性伸缩的技术架构,选择合适的开源技术路线,结合运维实践经验,实现应用根据业务压力变化而自动弹性扩缩容,成为运营商内首个实际案例。为IT私有云发展和IT架构转型工作奠定了坚实的基础。,传统应用改造的实践经验,对传统应用进行改造,实现了应用的无状态化,与DCOS平台上动态的扩展和伸缩无缝适配,积累了核心系统DCOS化改造的工作经验,自主开发的持续集成平台,基于Jenkins CI和DCOS,自主开发持续集成平台,初步实现代码编译、单元测试和上线发布的一键化和自动化,显著提高软件开发部署效率,