前面两篇讲了容灾建设的一些概念,没看过的朋友可以看一下:
在二、三篇中,在容灾建设上,我们已经讲得差不多了,一个很显著的结论就是:
容灾这个事情,跟多不多云没有任何关系,单个云厂商的公有云里照样可以保障容灾,复杂度还要比多云低一些,也更具备可操作性。
既然结论有了,那为什么还要讲多云呢?
只是想从另一个角度看看,如果选择多云,实施层面会有哪些问题和难点,后面再看方案的时候,也可以更务实一些。
分几个场景讲:
第一,如果只用到了公有云的IAAS层。
也就是只用到了虚拟机这样产品,上层的任何数据库、缓存、消息以及应用,都是自己在虚拟机上部署的,没有用到云上的PAAS的产品。
如果是这样,其实A云、Q云,还是M云,只是基础设施IAAS提供方不一样而已,本质上并没有什么差别。
所以,这种仅IaaS应用的场景下,多云方案完全可以退化成不同IDC或不同AZ间的高可用解决方案。
上篇,我们提到过,如果是同城不同AZ,在物理距离上足够远,电力和网络设施也完全是独立的,并不会因为单个AZ故障,导致另一个AZ故障。
这种情况下,两个AZ同时故障的概率是非常小的,但是如果非要说,来个大范围地震、海啸,或者整个城市被黄浦江淹了,让原子弹给炸了,那也没招,但是实际概率有多大,算算就知道了。
所以,多云不是不行,但是这里隐含的前提条件是,业务只使用了云上的IAAS层。
多云的必要性大不大,是不是单云的不同AZ方案更划算,其实评估下就清楚了。
况且,这里多云之间跨云厂商的专线拉通,这里面又是很灰色的意识事情,成本高,各方利益博弈,而且出了问题,到底算哪头的也不知道,最后就是不了了之。
第二,如果业务不仅仅用了IAAS层,还用到了PaaS层的产品,比如数据库、缓存、消息、云通信等等。
业务一旦跟这些产品耦合,那这种场景就复杂了,就目前情况看,多云基本不太可能。
因为目前从各大云厂商的PaaS产品来说,并没有统一的标准,也不太可能有统一标准,所以提供的API也好,还是SDK也好,基本都是根据自己的产品设计封装出来的,即使是原生API,实际使用的时候,也会有大大小小的差别。
所以这种情况下,对于用户就要有大量的兼容类开发工作要做,甚至有些场景会对业务逻辑有侵入。
从管理维度来说,也增加了复杂性,因为一台阿里云的RDS和一台腾讯云的CDB性能指标、所处网络环境、处理能力等,也没法完全标准,定价也不一样,等等等等,各种不同。
管理复杂度也会增大很多,复杂度上升,必然带来成本上升,是不是划算,不知道。
所以,从这两个角度讲,业务一旦依赖了一个云厂商的PaaS产品,基本也就跟这家云厂商绑定了,基本就不具备做多云的条件了。
第三,未来会是什么走向?
其实IaaS层跟业务基本没有耦合,这个不会太大的障碍。
前面说的,主要问题还是在PaaS层,各厂商无法统一。那怎么办呢?可能这么几条路:
第三部分简单总结一下,是想表达什么意思呢,就是未来短期貌似还看不到在应用层讲各大云厂商PaaS产品统一的希望。
第四,目前业界的多云现状。
这里仅说我调研和了解到的情况,目前业界大多数公司所谓的多云,是将一些无状态的应用或接入层分几个云部署一下,只是容量上的冗余建设,但实际并起不到容灾作用。
这么做无非两个原因:
最后,总结一下
多云跟容灾和高可用完全两码事,不要扯在一起,多云也解决不了容灾和高可用问题,最终还是得自己的技术体系支持才可以。
多云不解决整体容灾,但是可以考虑局部高可用,案例见上面。
多云模式其实是一个管理复杂度很高的事情,甚至在业务与云的耦合层面,就已经决定了一个系统压根不具备多云建设模式。
但是业务所在的主要的云厂商故障,多云一样还是没用,比如前面阿里云分布式存储IO HANG导致的大面积故障,即使有腾讯云、AWS或者其他人做备份,会真的有用吗?
我开了一个讨论群组,主要探讨SRE、运维、云计算、技术管理等方面的内容,现在已经聚集了各行各业运维领域的专家,不定期福利+深度讨论。空位不多,为了保证群的价值,定期排除不发言,不讨论的同学。
如果你想入群,关注公众号,就可以看到我个人微信号,加我时注明姓名+公司。