首页 > 科技 >

服务部署如何做到高可用?这份"三级跳"秘籍送给你

2019-03-15 07:11:10 网络整理 阅读:145 评论:0

导语

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

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

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

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

图1 高可用部署

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

一致性

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

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

消除单点

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

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

置放群组

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

相关文章