4.8.2 多云部署实现业务高可用及数据高可靠

将重要业务采用多云部署来避免单一云平台故障造成的影响,综合解决以上问题。在理论上,将同一业务部署在多个云平台可以提升业务的可用性,可是在业务切分时需要按照流量切分,即将50%的流量分发到云平台A,将50%的流量分发到云平台B。而如果将业务中的邮件系统所有的流量都分发到云平台A,将搜索系统的所有流量都分发到云平台B,那么还是不能保障邮件系统及搜索系统的高可用,无论是云平台A还是云平台B,出现重大故障时还是会完完整整地影响其中的一个系统。

SLA串联现象

SLA串联现象是指多个组件的可用性互相叠加,通常情况下单台A云主机SLA的可用性是99.95%,在云主机上自建MySQL服务SLA的可用性也是99.95%,对数据库的写操作的成功率为99.95%,则对经过SLA串联后的数据库的写操作成功率为99.95%×99.95%×99.95%≈99.85%,因此可用性降低。

采用多云部署还需要云管理平台CMP,对公有云、私有云、本地环境等资源和应用进行统一纳管、监控、部署、资源调整,所以多云部署不仅仅是多个云平台的叠加,还有对多个云平台的管理,进一步提升了技术复杂度。所以多云部署并非适合所有用户的所有场景,对于部分用户场景,多云部署反而会提升技术复杂度,增加学习和上云成本。

最佳实践

对于业务来说,多云部署可以实现冗余,提升可用性;对于数据来说,多云部署是一种备份策略,可以提高可靠性,如图4-26所示。

img

图4-26 多云之间同时承担流量,实现业务高可用

对于避免云平台级别的故障,则要考虑将业务实现热备或双活。从架构设计的逻辑来看,这里的多云部署和单一云平台的两地三中心部署没有差别,上层应用、逻辑都容易实现跨云部署,重要的是底层数据库。

• 方案一是将上层应用、逻辑实现跨云部署,底层数据库只部署在一个云平台中,对数据库的连接和单一云平台没有差别,可以参考两地三中心部署。

• 方案二是将底层数据库实现跨云平台的主从同步,通过多云之间的内网连通提供尽可能低延迟的网络,重点需要考虑数据一致性和延迟。

提示

多云部署后的业务流量统一入口及请求在多云之间的分发详见“6.7 均衡——流量转发及全局负载均衡”。

在实现多云部署架构设计和实施后,还有另外一个问题,是否敢于在故障时切换业务平台。例如,作为备份的云平台B平时没有流量,因此关键时刻不敢切换,对云平台B的数据正确性、及时性和代码版本是否一致无信心;备份数据中心平时没工作,浪费成本。

解决这个问题的办法是经常去验证云平台B中的业务和数据。比冷备份更好的方式是在多个云平台中采用温备份和多活流量均衡的方式。温备份是指将大部分流量切分到云平台A中(如95%的业务流量),将剩余流量切分到云平台B中。云平台B中的业务和数据经过实时验证,在整体业务流量增大时可将新增部分的流量导入云平台B中。

数据对企业的重要性不言而喻,偶尔也会看到一些用户数据无法访问或丢失的情况,数据的可靠性保障不能仅依靠单个云平台,要保证数据的可靠性和安全性,已经有众多企业提供备份、容灾方案,可在本地实现多副本备份,实现同城跨数据中心备份、混合架构或跨地域的异地备份,在这些方案之上还要考虑跨云平台的备份,哪怕是采用冷备份的方式,不至于在云平台级别故障或地域性灾难来临时一点数据都不剩了。在一定成本内把数据备份到另外一个云平台上,无疑减小了云平台级别的故障对数据可靠性的影响。

数据备份每多存储一份,都会降低数据丢失的风险,但也会增加数据泄露的风险。应在保证存储可靠性的前提下降低数据泄露的风险,因此在建立必要的高可用机制之后,应尽可能采用加密的冷备份。

存储数据时可选用S3接口,各大云服务商的对象存储都支持S3协议,在数据拉取、上传时可降低技术难度。对于云端已有备份的,也建议统一以归档的形式备份到另外一个云平台上。归档备份的形式对数据实时性的要求低,存储价格低,可以减少费用支出。