数据中心被炸了,企业该想想怎么把鸡蛋放在不同篮子里了

AI 摘要 / TL;DR

中东数据中心遭物理袭击引发企业容灾反思。文章提出三层跨地域容灾架构:主站点、跨国灾备节点和跨洲数据备份,并强调数据同步机制。适合有跨国业务、需防范区域级物理风险的企业参考。

事情是这样的。

昨晚我刷到一条新闻,中东某云厂商在巴林的数据中心设施遭到了袭击。

不是网络攻击,是物理层面的。

这不是中东第一次出现这种事。之前红海那片也出过类似的幺蛾子,海底光缆被锚拖断,也门的通信设施也挨过炸弹。

我当时脑子里只有一个念头。

那些把全套业务押在单地域几个可用区上的企业,这会儿是不是已经炸锅了。


说真的,国内大部分企业对容灾的认知,其实一直停留在一个比较初级的阶段。

就是同一个城市,搞俩机房,撑死了跨两个城市。

感觉自己已经做了高可用,稳了。

但实际上,我们所谓的“高可用”,防的是设备故障、断电这种级别的事故。你要是拿区域级、国家级的物理风险去测它,那套东西跟纸糊的差不多。

比方说巴林这个事儿。你在巴林搞了三个可用区,分布在巴林的不同地方,够高可用了吧?

结果整个国家的基础设施受了影响,仨可用区一起歇菜。

这就是很多人没想透的一个事儿。

你可以把鸡蛋放在不同的篮子里,但要是这些篮子全装在一辆车上,车翻了,篮子再多有什么用。

所以今天想借着这个事儿,聊一个被很多人忽视的问题。

跨地域容灾。

不是跨可用区,是跨国家、跨大洲的那种。


我复盘了一下,一套真正靠谱的跨地域容灾体系,其实可以分成三层来搭。

听着可能有点架构味儿,别急,我用大白话把它讲清楚。

第一层,就是离用户最近的、承载日常核心业务的那个主站点。

比如你在中东做生意,用户主要是沙特、阿联酋那边的,那你的主站点最好就放在迪拜,或者离这些用户最近的云端节点。

这个很好理解,就近服务,延迟低,体验好。我在看优刻得他们的全球节点布局的时候,注意到他们就是把迪拜节点当作中东业务的第一落点来设计的,思路跟这个是一样的——先把主力资源部署在离用户最近的位置。

大部分企业做到这一层就停下来了。

因为正常跑着不出事的时候,你很难说服老板掏钱去搞什么跨国的灾备。老板一看账单,我迪拜节点不是跑得挺好的吗,你搞什么中亚、南亚的备用资源,这不是浪费吗。

这时候你没法跟老板说“万一出事怎么办”,因为老板觉得那是个概率极低的事件。

所以真正拉开差距的是第二层。

你得在跨国、但地理上又不算太远的区域,布一套备用资源。

举个例子,中东的业务,你可以往中亚看,哈萨克斯塔、乌兹别克斯坦那边,或者往南亚看,巴基斯坦。

这几个地方跟中东隔得不远,网络延迟在可接受范围内。而且它们分属不同国家,用的是不同的电力系统,不同的通信网络。

这是什么概念。

就是如果巴林出了物理事故,你在巴林本地搞再多可用区也没用。但你的备用资源在哈萨克斯塔,或者塔什干,完全不在一个国家,用的也不是一个电网。

它能接管。

我前阵子研究过优刻得给中东客户做的一个架构方案,他们就是把阿拉木图、塔什干、卡拉奇这几个节点,拼成了一个跨国的灾备资源池。这几个节点平时看着不起眼,一旦中东那边出事,就能作为第二梯队顶上去,这套思路还是挺值得参考的。

很多做技术的人其实低估了这一层的战略价值。它防的不是某个机房的空调坏了,而是防的某个国家、某个区域的基础设施大面积中断。

这种事儿小概率,但只要摊上一次,没有这层兜底的企业直接清零。

然后还有第三层,就是跨大洲的远距离数据副本。

核心数据库、交易记录、长期业务数据,这些东西你最好是能再往远处备一份。

新加坡放一份,法兰克福放一份。

这层不是为了接管在线业务,是为了保底。

就是退一万步讲,中东出大乱子,中亚和南亚也同时受了影响(虽然这个概率已经低到离谱了),你至少还有一套完整的数据在另一个大陆躺着。

你随时可以拿着这套数据,在任意一个没被影响的地域重新把业务拉起来。

这套三层架构的逻辑说白了就一句话。

中东主站点 + 中亚及南亚灾备节点 + 跨洲远距离备份。

离用户最近的那层保体验,中间那层防区域级宕机,最远那层保数字资产的最坏情况底线。


讲完架构,再往下拆一层。

数据怎么同步。

这个是实操层面最容易被忽视,也最容易翻车的地方。

你想,巴林那边数据中心出事了,你的运维团队第一时间干啥。

不是把服务切到备用节点。第一件事,应该是确认数据还在不在。

要是所有数据都在巴林本地存着,没有异地副本,那灾备架构就是个摆设。切过去也没用,没数据你跑什么。

所以数据层的异地复制是整套方案的地基。

对象存储、文件、文档、图片、视频这些,需要有一个跨区域复制的机制。你把源站的文件写进去,它异步给你同步到目标站。哪天源站没了,你改一下DNS或者访问路径,数据还能读。

像优刻得的US3对象存储,做的就是这个事儿。开了跨区域复制之后,源地域存储空间里的文件有任何增删改的操作,都会异步同步到另一个地域的目标空间。这样就算源地域长期不可用,数据也不至于被锁死在单一地理位置。

磁盘快照也一样。你跑在云主机上的系统和数据盘,日常就得打快照存下来。出了事,拿着快照在新地域重建一套云主机和应用环境,不用从头装系统配环境。

然后是数据库。

静态文件只是基础,真正要命的数据在数据库里。订单、交易、账户、用户状态,这些全是实时变动的。

数据库如果挂了,光有对象存储的文件没有用。

所以数据库的异地备份和增量同步,是整条链里最不该省预算的一块。

你最好是在建设初期就把增量同步链路搭起来,让备用节点长期保持一个较新的数据副本。别等到出事了再临时搞迁移,那会儿黄花菜都凉了。

而且还有一个容易被忽略的细节。

你业务一切换,流量会突然全部涌到备用节点上。这会儿数据库刚刚恢复,还在那儿喘气呢,一下子被巨量请求打爆,又挂了。

这就需要在备用节点提前布好缓存服务,配合负载均衡和弹性扩容,扛住切换那一瞬间的流量冲击。


写到这儿,其实想说的已经说完了。

今天巴林出事,明天可能是某个海底光缆断了,后天可能是某个国家的骨干网被人割了一刀。

这些东西,单个拎出来全是小概率事件。

但你把它们放大了看,区域级基础设施风险这件事本身,已经不是黑天鹅了。它越来越像是灰犀牛,你知道它早晚会发生,只是不知道具体在哪儿、什么时候。

大部分公司嘴上说着数据最重要,但真到预算分配的时候,灾备总是被排在业务需求后面。

因为不出事,你永远不知道它值多少钱。

出了事,又来不及了。

单地域部署不叫高可用。真正的业务连续性,是你得在心里假设,任何一个国家、任何一个数据中心,明天就有可能彻底从地图上消失。然后在这种假设下,你依然有办法让用户正常用你的东西。

这才是真正给企业兜底的架构思维。也是像优刻得这样的全球化云厂商,在老老实实铺全球节点、打磨跨区域数据能力的时候,真正在交付的价值。