AWS 多区域服务可用性和运营

AWS Multi Region Service Availability and Operations

一些 AWS 服务提供了在区域之间进行复制的能力。例如S3 (CRR)、RDS(只读副本)等

  1. S3-CRR 中,如果目标区域出现故障会怎样?一旦区域备份,复制是否会自动赶上?

已编辑 2. CRR 可以双向启用吗?例如主动-主动

类似地,RDS-MySQL Read Replica (RR) 托管在不同的区域时

会发生什么
  1. 如果RR instance/Destination Region宕机了,会影响其他Region的MASTER吗?
  2. 实例被替换或区域备份后,RR 是否赶上 MASTER 在 gap/outage 期间丢失的更改?
  3. Aurora在上述方面与RDS-MySQL有何不同?

在 S3 cross-region 复制中,如果目标区域出现故障或连接中断,对象的复制将延迟,直到问题得到解决,然后恢复。

Cross-region可以当active/active使用,但是没有解决冲突,所以如果你差不多同时向两个region写入相同key的不同object,哪个版本会是每个区域中的 "final current version" 未定义。只要你不这样做,就没有问题。你不能做的是在一个环中配置超过 2 个区域,因为 A > B > C > A 只会复制一个跃点。在 A 中创建的对象将复制 A > B,但不会复制 B > C,因为当一个对象由复制过程创建时,它不会被进一步复制。也就是说,复制到桶中的对象永远不会从桶中复制出来。直接在 B 中创建的对象会复制 B > C 但不会复制 C > A。

如果 RDS cross-region 副本发生故障或变得不可访问,主服务器不受影响。在引擎盖下,副本正在侦听来自主服务器的更改消息流,但不承认实际上已将更改应用到其本地数据集,因此如果副本消失,从主服务器的角度来看是 non-event。因为复制流中有 sequencing/positioning pointers/markers,所以副本知道它在哪里停止并在重新连接时从正确的起始指针请求流。

副本会在 service/connectivity 恢复时赶上,但不是瞬间。所需时间取决于需要复制的更改数据量以及副本的容量。对于标准 RDS 和 Aurora 都是如此——cross-region 复制是异步的。