首页>会议文档 >

数人云肖德时-基于Mesos打造高可用微服务系统实践

page:
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践
数人云肖德时-基于Mesos打造高可用微服务系统实践

数人云肖德时-基于Mesos打造高可用微服务系统实践

所属会议:GOPS 2016全球运维大会 上海站会议地点:上海


下载

手机看
活动家APP客户端

扫二维码下载
或点击下载
Android iOS

4244次
浏览次数
GOPS 2016全球运维大会 上海站所有文档 GoogleSRE孙宇聪-分布式共识系统在高可用架构中的应用 腾讯 周小军-大规模Web Server集群的高效运维 存储及数据中心行业分析师张广彬-你以为你以为的超融合就是超融合? 迅达云成李孟-CDN、DNS的部署与优化 360 李洪亮-360网络运维自动化演进之路 携程 陈剑明-携程基于应用的自动化容量管理与评估 京东商城韩建飞-多快好省运营大规模弹性云集群 ZStack张鑫-为什么说IaaS不是容器的未来 IBM 刘光亚-BlueDock –行业容器混合云管理平台详解 阿里云 李斌-CaaS在微服务开发运维中的最佳实践 《PaaS实现与运维管理》作者余何-沉默的大多数——中小企业IT运维的互联网之路 UnixHot运维社区创始人赵舜东-中小企业运维与自动化运维实践 首都在线周东波-运维背后的逻辑 B站 devops梁晓聪-B站运维系统从无到有的演进之路 中交兴路车联网许颖维-中小企业如何优雅地管理多机房服务器账号 YY 互娱 刘亚丹-基于DevOps理念的私有PaaS运维平台实践 跟谁学资深运维专家郭宏泽-Devops传统企业中的生产实践 Minghua Ye-使用开源软件打造类似Google的开发和生产环境 携程旅行网沈强-呼叫中心座席接入异地双活技术实现 美国道富银行 李卓-用户导向的全球研发团队运维转型之路 蓝鲸 党受辉-如何从零打造百人级别的DevOps团队 优维科技 王津银-运维,为DevOps持续交付而生 金山云赵帅-Docker在devops中的应用 Oracle, InnoDB团队Principle Software Developer赖铮-MySQL 5-7中的InnoDB的新特性及亮点 唯品会 师陈群-唯品会大规模Redis集群存储架构演进 涂彦-从0到300,腾讯游戏运维团队成长解密 北京蓝海 科黎卫-运维管理的场景化思维 阿里云周正中-PostgreSQL内核优化及生产实践那些事 微信事业群- 技术架构部周汤-微信支付数据库管理实践 阿里巴巴 范伦挺-阿里大数据计算平台运维实践 文太友-DNS运维之路 eBay Cloud Services 李健-eBay Hadoop 海量集群自动化运维实践 西山居 尹会生-大数据时代运维的机遇与挑战 中国太平洋保险集团胡罡-建设金融服务云,开启服务新模式 恒丰银行 潘文杰-Openstack在恒丰银行的生产实践 擎创信息屈中冷-见微知著 - 海量运维数据分析的价值 中国银联 鲁逸丁-中国银联云运维平台:产品、场景与技术 中国人寿 桂林-中国人寿自主研发自动化运维平台成功要素 苏州研发中心徐军-中国移动DCOS平台研发与运维实践经验总结 OStorage 李明宇-OpenStack Swift对象存储在SSD上的优化 百度 总监杨一-Openstack在百度开放云的系统改进 网易 黄文宇-云时代下游戏运维 孙杰-传统大型企业的云技术转型实践与思考 盛大 胥峰-盛大游戏万台服务器自动化运维实战 蘑菇街 赵成-从0到1:蘑菇街运维技术管理体系建设分享 优云软件蒋君伟-CMDB+自动化的管理融合 大众点评 张冠宇-亿级别PV的大型互联网公司运维架构演变 百度 张乐-持续交付:高效率和高质量可以兼得 UnitedStack有云许长豹-OpenStack-运维可视化 韩晓光-传统运维 VS 互联网运维 从哪来到哪去 太平洋保险杜颖君-传统保险企业运维平台化探索之路 腾讯 梁定安-夯实海量运营质量的三个运维实践经验 Ucloud 许杨毅-IaaS平台运营的数据之魅 《海量运维、运营规划之道》作者唐文-海量运维与运营规划之道2-0 京东 范超-从618京东大促看电商业务运维 上海交通大学 刘骋昺-爱奇艺Hadoop平台的运维管理实践 蓝鲸 党受辉-我们的承诺,你们的蓝鲸 听云廖雄杰-运筹帷幄--追溯应用性能问题的根源 Google SRE孙宇聪-SRE:Google运维揭密 Chris-如何制定服务的SLO Twitter 郭斯杰-Twitter千亿级消息中间件的DevOps实践与经验 大河云联 庞俊英-网络运维的昨天、今天和明天 腾讯 刘昕-移动端用户体验优化:一秒钟法则及实践 华为 张丹-大型实时对战手游的移动网络用户体验优化 云智慧高驰涛-详解APM数据采样与端到端 杭州数云罗兴峰-APM应用与整合分享 携程 刘以初-后微软时代 高效运维发起人萧田国-重新定义运维:我们的下一站 金山企业信息化专家万勇-破局灯下黑 Akamai中国祝一格-利用CDN简化Web运维和实时可视能力 凤凰网,原IT总监王建新-大型互联网公司和创业公司内部IT运维分析 携程网 雷兵-传统企业网络安全运维的转型与变革 绿盟科技候奎宇-互联网+下的安全服务实践 上海豌豆 李睿-CTF赛之攻防对抗的艺术 找钢网 卞军军-B2B创业型企业的安全运营与驱动 平安科技 刘瑞恺-微信公众号的自动化安全监

文档介绍

肖德时,十五年计算机行业从业经验,曾为红帽 Engineering Service 部门内部工具组 Team Leader,Docker/Mesos 社区代码贡献者。 现负责数人云云计算的研发及架构设计工作,深入研究 Docker,Mesos 集群, 云计算等领域

演讲实录

很高兴在这里和大家分享一下如何用开源软件打造一个高可用以及微服务的架构。是Apache的一个开源项目,其宗旨是像一台电脑一样管理整个集群,它源于Google的Borg系统,有一套cluster管理平台对无数台机器进行管理。Twitter、Airbnb的服务器及苹果电脑的Siri大数据应用都是跑在Apache Mesos上面,基于Apache Mesos系统我们也做了一个轻量级PaaS平台。


高可用




什么是高可用?将概念缩小到维基百科的简单定义,可以看到它有如下几个特征。第一,消灭单点问题,系统要把单点支持住;第二能冗余,HA的架构;第三,快速检测,失败能够自动切换。




一开始做这套系统时,我们想到Load Balance,把系统做一个负载,这样有了HA的架构,但是里面Load Balance本身又是一个单点。大家可能会想把Load Balance做成cluster,用DNS的方式去做,但是DNS本身要来回切,切两个IP之间的轮换,这个本身依然有单点的问题。以一个单数据中心的角度来说,最好有一个能挑的IP, IP最好是固定的。然后在里面去做Load Balance的Proxy,底下是App Server,再去切换,这样就是一个高可用的架构不断的演进过程。




这个过程里面会涉及到几个问题,我们来看一下Mesos系统是怎么解决这些问题的。首先,在任何高可用的架构里面,锁是必须的,但是高可用在当前的发展过程中,scaling的过程一定要做分布式系统,所以对于锁的要求就比较多。第二,要有自己的控制节点,即Mesos的节点,它主要是控制这些资源的提供,这是它的一种基本的架构,实际计算节点在下面,这些Slave节点的特点是即使进程死掉了,也保证任务一定能运行起来。


这也是应用跟集群之间松耦合的过程,Mesos是非常成熟的架构,可以帮助企业实现高可用的架构。


微服务




我们也从头说起。微服务最初是一个Web,一个DB,按照第一个方式走,顶不住的时候开始加Cache。这样的架构很有可能变成一个单体,但是内部还是不能去松耦合,虽然加了Cache还是有依赖,发展到最后,我们知道构建一个高可用或者智能的架构其实是一个想象中的过程。实际上需要的模块应该是一个整体,模块里面的东西应该能够水平扩展,做一些精细化的运营,这才是微服务的一些比较核心的理念。




第三个案例里,首先要分层,每一层都是可以支撑的,其运营的难度不会很高,底层DB关了,但是因为有容灾的DB,上一层不会受到影响。Mesos高可用的架构是一种具体的实现方法。第二,微服务我们可以混合部署,不需要关心部署在什么地方,只要把有状态的应用变成无状态,撒在集群里面,让充分的计算资源来支撑业务,有状态的业务仍然需要专心管理,但是有状态和无状态之间可以精心地设计。基于Mesos做这种微服务的架构,用混合部署的方式支撑业务,消灭单点,支持容灾,还能在出现task出错之后自动切换。这是分布式架构应有的一些特性,也是我们对微服务的一些理解。


系统实践


数人云是一家创业公司,我们利用了一些当前比较时髦的一些技术,比如说容器。 本身是一个集群系统,但其部署仍较复杂。大家都希望运维能够标准化,一般想到的是Ansible和SaltStack。


Docker标准化镜像非常方便,于是我们用Docker的方式把这些组件都标准化,打成image,通过一个DSL的文件撒下去,也同样实现了这样的集群。复制以后,下次不再需要配置,按照这个方式快速地执行。Ansible和Salt也是一样的过程,那么选择这套方案的原因是,我们认为image的管理比对脚本的管理更方便一点,有仓库和版本的概念。我们也利用了的一个先进的理念——应用中心导向的build、ship、run,能把所有的配置信息都用一个DSL写成一个Json文件下发下去,通过控制器在全部的机器上自动部署。基于Linux本身的四层的路由IPVS进行分化。我们不用Docker所有的特性,只需要其deliver的特性。


刚才我们混合部署了一套微服务的架构,但真正把它部署下去,监控起来也是非常麻烦的。因为每一个小的App都有自己的性能的瓶颈,也有自己的指标,如何把它们汇总起来是一个问题,比如说你的十个App,每一个都有自己的指标,撒在不同的机器上,如果按照正常的模式,原来监控的每一个都要监控,然后做汇聚,这与之前Mesos用一台电脑管理资源是相违背的。


其实我们并不关心每一个节点上App运行的性能,我们需要的是汇总的性能。一个比较好的方式是通过API网关,内部的交互完全通过这种Restful的API网关来去控制。没有达到性能指标,就把它杀掉换在别的机房运行,对外提供统一的定义的这个指标,用网关控制这个指标,我们用的是eBay的proxy。最简单的方式可以用HA proxy去做,但是fabio用go语言来写,更符合我们数人云的语言技术栈,于是选择它做二次开发,控制整个API请求的指标还有响应速度。Mesos本身有自己的容灾和调度策略,我们做了一个自动试错三次的上限,除了报警以外,不允许它再扩了。


这种方式整体上把微服务所有模块的组建、所有组件服务的质量都得到了一个可量化的指标。因此能支持多少个请求都是可以快速知道,也是可控的,不需再做实时的评测。正常运营过程中,会在事前做一些压测,但这个压测是理论值,生产环境中业务的质量是需要有一个控制,一个总闸。这也是原来微服架构里面,大家比较容易忽视的地方。




Mesos是一种通用型的架构,因为出来的比较早,当时使用的一致性的锁是Zookeeper。对于分布式架构,还有其他比较优秀的组件,比如Consul,etcd,这些算法本身是一个精简的算法,而且有非常良好的支撑分布式的锁的概念,Apache Mesos也支持这方面功能,我们觉得完全不需要去选择Zookeeper,并不是说它不好,而是一个精简的过程。


在使用Mesos的过程中,Mesos本身是提供一个资源池,想使用它的时候需要一个入口。我们基本上按照Mesos推荐的Framework,这里推荐的是Marathon,用的本身是Scala语言写的一套系统, Mesos本身的组件已经由原来简单的protobuf rpc的交互转变成Restful API,开发一个调度APP或者Framework已经不再需要mesos依赖库,现在完全可以通过HTTP API的去操作它,因此我们完全可以自己去做开发。Mesos的很多特性,例如针对统一的容器管理,不仅仅是针对Docker,Cgroup也支持,GPU也可以管理,未来会支持虚拟机。然而它很多特性我们想用但是用不了,没有这种支持,因此我们考虑在这方面做开源的项目,把Mesos的特性真正发挥出来。


众所周知,Twitter、Airbnb以及Apple在使用Mesos的时候,都是使用自研的Framework调度Mesos的资源。分布式系统里面最重要的是网络,它支持了当前最流行的CNI容器化网络接口。因为这种网络是池内部的网络,跟外界的网络是可以隔离的,因此这个网络可以动态扩缩,也是当前比较时髦的语言, SDN比较推崇的一种技术。它是一个Json定义接口,对接网络的结构,比如DHCP,我们可以分网关给它,来做接入。




在用这套系统的时候,会看到底部是Mesos的池,上面的机器有API网关,这个网关是一个总控,把应用通过这个网关切入,利用这些资源去做资源的统一控制,结构是松耦合的过程。上面所有的状态通过一个Consul分布式的锁,进入你的状态,类似于无状态的一个平台,可以部署多套,下面通过锁的方式控制schedule,因此它也是一个分布式的平台,这就是我们具体的一个参考实现。


总结




总结一下。第一,我们认为Mesos做高可用的分布式的架构是靠谱的。第二,微服务的架构只是一个理念,它有各种各样的方式,这种混布的架构方式并不是神话,内部并不是如大家想象那样拆成碎片,往里面一放就可以了,它是一个系统工程。你可以在业务层面上去控制API网关,治理下面微服务的使用质量,可以可控扩缩微服务的架构。




第三,关于,运营这套系统不能期待它百分百可控,还是要靠自研,把它做得更好,开源软件才能发挥其真正的作用,这样整套系统才是完整的,可以容灾,没有单点,符合当前的微服务架构的服务设施理念。我们数人云最近也开源了一个容器管理的开源项目,之后会开源更多的基于的的项目,欢迎大家关注,谢谢大家!


×

打开微信扫一扫,分享到朋友圈