既然是系统性工程,涉及到这么多方方面面,每个环节都要考虑周全,也就意味着更高的成本。
所以,高可用送给你的每个9背后,都暗中标好了价格既然这么费钱,那么追求高可用的道路上,就应该适可而止,够用就好。 第一,从实际业务需求出发,来评估具体的可用性指标,业务连续性要求高的,就必须要“卷”起来。第二,根据行业监管要求,达成相应的合规标准。比如针对银行,就会有类似于《银行业信息系统灾难恢复管理规范》(JR/T 0044—2008)的监管规定,要求必须达到对应的高可用级别。所以,对高可用指标的追求,往往都是掂量着业务需求+监管需求,在加上自己口袋里的money,最终得到的一个平衡结果。
(资料图片仅供参考)
第二,同样都叫「云计算」,公有云相比私有云、本地虚拟化资源池,可以通过超大规模的资源优势,不断堆buff,堆出更好的伸缩性,遭遇极端场景时,具备更好的高可用潜质。
第三,公有云在底层基础设施层面,通过选址、数据中心级别(风火水电)、多线网络、多DC、多AZ、多区域,各种未雨绸缪,具备更耐折腾的高可用底盘。
所以,当遇到高可用的需求时,优先选择上云,一般可以达到事半功倍的效果。 换句话说,如果想要同样的SLA,对用户来讲,云下的成本要远高于云上。 四、都说云上高可用靠谱,为什么我上了云,结果还是挂了?虽然我说公有云“天然高可用”,但吃瓜群众说“ 你看你看,常有云宕机上热搜!” 首先明确一点,相比云下IT系统成天此起彼伏故障,云宕机其实是小概率事件,只不过云宕机更具新闻性,所以几大头部云商但凡有点风吹草动,行业里就会草木皆兵。第二,上了云,不等于宕机的锅就可以完全甩给云服务商了,云用户和云服务商需要权责明确,责任共担。
前面我们说过,高可用是一个系统性工程,涉及到服务边界的问题,云服务商没法成为云保姆,大包大揽把所有的事情都兜底。
如果「成熟」的云服务商和云用户,都能把各自的“ 门前雪”扫干净,那么,云上高可用的效果,就可以发挥到极致。 既然话说到这个份上了,我们就要搞清楚,作为云用户,云上有几大雷区必须要规避,否则可能「 上线一时爽,宕机火葬场」❶ 如果业务需要高可用,一定要在采购之前就设计好高可用架构,无论是线下的IDC还是正经公有云产品,都需要提前设计,一旦部署了业务再回头想要高可用,改造起来可就伤筋动骨了。
❷为了确保整体的可用性,每一个环节都得具备高可用,一个组件出了问题就可能前功尽弃。 ❸在使用云厂商或托管服务之前,要提前调查好各项功能的兼容性和需求是不是匹配,比如权限管理等。 ❹明确云厂商提供产品的可用区,很多云厂商提供了多可用区灾备能力,但也有少数产品因为性能等原因只支持单AZ。 ❺架构的设计和交付务必要对齐,效果图和施工落地不一致的惨案太多太多了。 ❻业务软件尽量做到无状态,这样可以利用云服务的多AZ算力及支持多AZ的PaaS产品,在不大幅增加成本的情况下,支持业务跨可用区的容灾能力。 ❼单元化设计,确保一次用户请求能够在一个可用区完成闭环,不要跨可用区。五、一个典型的云上高可用架构设计,是怎样的?
我们来看个实际的例子吧,底层咱不说了,云服务商已经帮你把坑填完了,只看用户侧如何填坑↓ 先看错的,这是一个典型的「伪高可用」,各种组件看着都是冗余的,但是却忽略了一个最重要的地方,那就是所有的鸡蛋都在一个篮子里(单可用区架构)。 这种设计,看似做足了功夫,可一旦“可用区不可用”,高可用设计立马失效。 所以,正确的云上高可用设计,一定要把云的优势能用尽用,云的羊毛能薅尽薅… 比如,把上面的设计重来一遍,全部更改为多AZ模式,SLB主备设计, 前 端业务集群双AZ,缓存、数据库也选双AZ版本,文档存储选3AZ高可用。 这样的高可用设计,就是相对靠谱的,单个AZ故障,不会让业务到任何影响。 当然,还要注意高可用设计和实际交付要对齐,比如设计的时候数据库是跨区高可用,交付的时候却买了单AZ版本,购买对象存储的时候,思想开了个小差,本来该选3AZ版本,却点了单AZ版本。 一个小环节的疏漏,就能让“千里之堤溃于蚁穴”了。 再比如把 计算资源和 PaaS类服务(RDS等)整到了不同的可用区。 这样,用户的一次请求无法在一个AZ形成闭环,要跨可用区调用,既让性能打折,还增加了故障概率(任何一个可用区停摆,业务就会挂掉。) 所以,有些云大厂虽然不做“云保姆”,但还是尽可能帮用户“避坑”,比如提供一些专业的 可视化设计部署平台。 基于这样的平台,云用户在规划阶段做好高可用设计,并在部署时进行一致性检查,彻底解决设计与交付脱节的问题。 六、如果必须要用专有云(监管、合规要求),如何建设高可用?现在大家都知道了关键点:上云更容易实现高可用,建设更简单,TCO更低。
遗憾的是,确实还有很多场景因为监管、合规等问题,暂时不能上云。
此时如果要建设高可用怎么办?❶根据业务属性合理分级。❷低等级就适当降低标准。❸高等级就付出更多成本。
高可用级别与成本之间成正比,所以,根据业务属性,合理设定可承受的风险范围+对业务恢复时间的要求,是弹性/韧性受限的专有云场景建设高可用的关键。
本地冗余架构:可以接受机房级风险,在单一主机、网络、系统、服务故障时,可以快速恢复业务。
同城容灾架构:可以接受区域级风险,但是在机房级风险发生时,能快速恢复业务。
异地容灾架构:除了能承受机房级风险,还要能承受区域级风险,但对快速恢复业务需求不强。
两地三中心架构:除了能承受机房级风险,还要能承受区域级风险,同时对快速恢复业务也有强需求。
小结一下:高可用不等于100%可用,高可用级别跟付出的成本成正比;先评估业务卷到什么程度,再决定高可用卷到什么程度;上云是建设高可用的捷径,云上高可用的TCO成本更低;但是云上高可用和云上安全类似,要注意责任共担模式,并要做到设计和交付对齐。
最后,祝大家永不宕机标签: