服务部署如何做到高可用?

服务部署如何做到高可用?

导语——
基于京东云丰富的实战经验,我们将陆续分享运维方面的干货,帮助小伙伴们进阶为运维达人,欢迎持续关注。此次带来的是“高可用”系列——部署篇。

一个高可用的服务需要从部署、变更、预案、监控、安全等多方面考虑。如何做到99.99%服务高可用的要求,需要各个角色的工程师共同努力。

从部署的角度,本文介绍了高可用服务所需具备的规范,案例部分通过对Yum源服务架构的演变让读者更好的理解高可用服务部署,希望对大家有所帮助。


高可用部署要求


图1 高可用部署

(*注:随着服务满足高可用要求的增多,服务的高可用能力就越强)

一致性

这里的一致性指的是模块依赖的方方面面,包括但不限于硬件规格和配置、操作系统、基础软件、系统参数,还包括模块自身的相关信息,如配置文件、版本、上下游依赖组件等的一致性。

可以通过配置管理工具(如Puppet)进行管理和周期性维护,确保配置始终如一。列举一些不一致的问题,如CPU是否开启超线程、内存是否关闭SWAP、操作系统版本、JDK版本、内核各种参数、文件系统类型以及模块的配置等等,这些均可能对服务可用性造成严重影响,并带来极大的问题定位成本。

消除单点

单点有两种场景:一种是某个模块仅部署了一个实例;第二种是某个模块虽然部署了多个实例,但任意实例故障都会导致服务整体或者大面积不可用。

如何识别系统单点?通过排查模块的实例数量和进行破坏性测试来发现系统中是否存在单点。对于已知的单点,则应该尽量做好预案,减少故障时长。

置放群组

要理解置放群组首先要理解故障域(Fault Domain)的概念。故障域指单个机房内由交换机或电源设备所造成故障的最大影响范围,通常为一个或一组机架。同一模块需要尽可能的分散部署在不同的故障域中,避免由单一故障域异常而导致模块整体不可用。

公有云下的置放群组就是为了提高业务的高可用性,在创建时将实例以某种策略强制打散,以降低底层硬件/软件故障给业务带来的影响。

举例来说,一个模块的所有实例绝不应该部署在同一个接入交换机下,因为一旦这个接入交换机故障,就会导致该模块整体故障,而一个机房内,有大量的接入交换机,是完全可以避免这种悲剧的。

流量隔离

流量隔离是搭建多套同质集群根据流量的属性进行分而治之的管理。常见的隔离策略主要基于流量的来源、重要性和资源消耗进行隔离。举例来说:

同城双活

同城双活即多AZ部署。同城机房之间延迟很低,一般ping延迟在5ms以内。同城的AZ间,基于网络,供电等的物理隔离,因此能够避免单个机房故障导致的服务中断。同城双活是建立在“系统消除单点”的前提下。多AZ间,服务请求应该尽量在一个AZ中处理完毕。

N+1冗余

服务可以根据同城机房数量进行多AZ部署。N+1中的“N”指的是处理请求所需要的资源容量,“1”指的是防止机房故障所做的资源冗余。因此,N+1中的所有机房应该具备同等的请求处理能力,从而避免某机房故障后,其余机房无法处理所需请求。N+1会导致一定的资源冗余,合理设置N的数量能够减少成本。举例来说,2机房的冗余度就是50%,而5机房的冗余度仅为20%。

异地多活

异地多活是保证服务高可用的高阶方法。目前国内多应用在大型互联网公司,用以防御单地域整体故障。异地多活的主要问题在于跨地域带宽、成本问题以及跨地域延时较大。举例来讲,同城的延迟一般在5ms以内,而华北到华南的延迟可以达到50ms延迟,这还是使用专线的前提下。


案例 :“Yum源服务”的高可用部署实践


Yum源服务是一种提供Centos系统的Yum仓库的下载服务。案例以此服务为例,讨论如何搭建一个高可用的Yum源服务。Yum源服务最简单的架构设计如下所示:

图2 简单服务架构

此服务由一台云主机提供,数据存储在本地,由Nginx提供下载服务。

以上架构服务完全可以实现Yum源服务的功能。但是若此架构的服务要对外提供服务会面对如下几个问题:

我们需要对架构进行调整以达到高可用的服务架构。

高可用服务2.0v

高可用2.0v目的是解决上文中的问题。

首先识别服务中是否模块都支持多实例部署(消除单点)

服务要满足一定的并发量的要求,Nginx具有高并发的能力,并且支持横向扩展。使用分布式文件系统以达到并发量和解决数据一致性的要求。

我们使用Puppet对服务器进行配置管理,保证服务器的配置一致(一致性)。每台服务器都要求不在同一个故障域中(置放群组)。高可用的服务架构如下:

图3 高可用部署架构2.0v

高可用服务3.0v

3.0v的高可用部署考虑同城双活的场景。我们选择华北两个AZ进行高可用服务的部署。架构图如下图所示。两个AZ部署同配置的服务,通过云解析将流量分配到两个AZ中,达到故障切换和负载均衡。

图4 高可用部署架构3.0v

高可用服务4.0v

再考虑异地多活的架构,上文提到异地多活难点是数据同步。对于此服务来说,其对数据一致性并不是强依赖,短时间的数据不一致可以接受。基于地域对流量进行隔离,从而实现分而治之的目的(流量隔离)。我们选择在华南两个机房部署一套和华北机器配置一样的服务。服务架构如下:

图5 高可用部署4.0v

总结


以上仅仅是高可用部署的一次简单实践。实际情况下,服务的模块几十到几百个都有,服务的复杂性与高可用是反比例关系。而且,随着服务的高可用部署特征越多,也会增加服务的复杂度,若做不好故障切换和预案建设,可能还会降低服务的可用性指标。

另一方面,服务的高可用部署与成本也有密切关系,跨机房、跨地域服务部署无论在资源成本和技术能力都会带来挑战。所以说高可用部署需要做到的是服务复杂度和成本之间的平衡,达到满足服务当前和未来一段时间内需求的目标。

天下网标王秦皇岛百姓网标王推广公司铁岭百度seo公司金华网站优化软件哪家好黄冈网站推广系统柳州seo优化公司锦州网站优化排名多少钱昭通设计网站蚌埠SEO按效果付费公司东莞至尊标王推荐南昌网络营销报价铜仁百度爱采购推荐大鹏模板网站建设多少钱廊坊高端网站设计哪家好鹰潭seo网站优化舟山营销型网站建设大浪高端网站设计推荐宁波外贸网站制作价格凉山seo网站推广多少钱大丰模板网站建设哪家好合肥设计公司网站报价定西关键词按天计费金华百姓网标王推荐和县外贸网站制作推荐林芝建站推荐赣州网站推广多少钱木棉湾阿里店铺托管坪山关键词排名价格南宁网站优化多少钱湖州网站优化推广哪家好濮阳优秀网站设计多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化