1、背景
在常用的多活容灾系统建设项目中,常用的有两地三中心以及普通异地双活。对于2地3中心架构,容灾能力得到了保证,但是在发生地域级故障时系统恢复的时间(RTO)上可能会稍长。对于普通异地双活架构,地域级故障的恢复得到了保证,但是对于本地机房级的故障应对反而有些小题大作了,本来是通过同城双活架构能解决的问题却使用了异地双活的方式去恢复业务,导致了异地数据同步间不可避免的数据丢失(RPO)。
2、解决方案
本方案提出一种通过混搭同城双活和异地多活的架构来解决上述问题,在处理本地机房级故障时使用同城双活的方式去恢复业务,而对于地域级故障时则使用异地多活的方式去恢复业务,对于异地双活情况概括描述为2地4中心架构,对于异地多活情况则为N地2N中心架构。
在实现上,主要需要对异地多活路由进行一定的处理,因为同城双活跟异地多活的架构在路由上是完全不一样的。对于同城双活来说,只要在接入层进行无差别的负载均衡路由到不同的数据中心即可,但是对于异地多活来说,需要根据业务规则对业务请求进行分流。
因此同城双活混搭异地多活的架构,需要以异地多活路由规则为主,但是同时要实现对同城数据中心的亲和性处理,指的是在计算路由规则的时候,首选目标数据中心,次选是目标数据中心的同城数据中心,这样一旦同城的其中一个数据中心故障,另外一个可以马上接管。
在数据层上,本地数据库按照同城双活的规格1主1从建设,同时与异地数据库进行双向同步。
在应用层上按照异地多活架构实现,但是在访问数据层的时候,访问本地主数据中心。
3、优点
架构 |
故障级别 |
RTO |
RPO |
两地三中心 |
本地机房级 |
低 |
0 |
地域级 |
高 |
低 |
|
普通异地双活 |
本地机房级 |
低 |
低 |
地域级 |
低 |
低 |
|
同城双活混搭异地多活(本方案) |
本地机房级 |
低 |
0 |
地域级 |
低 |
低 |