.
业务背景

数据是企业最重要的财富,信息服务是企业成功的助推器,怎么保证数据的安全和服务的可用性一直是永不变更的热点话题。同城双活可以极大提高数据的安全和服务的可用性。 在云下时代,想做到同城双活的挑战很大,要考虑双活数据中心的延迟和稳定性、双活集群的部署、资源的高效利用、运维的挑战等等,真正做到双活是一个复杂的工程。但在云上,我们可以通过简单的配置轻松做到双活,甚至可以用最小化的1 SLB+2 ECS+1 RDS系统做到双活。

.
架构特点
  • 实现极为简单
  • 易维护
  • 高效资源利用
.
架构描述

在物流云上,我们需要从以下几个方面入手来实现双活:接入的双活、应用的双活、数据的双活。架构如下:

.
接入双活

在使用阿里云SLB替换云下的负载均衡,即已经实现了入口双活。SLB采用集群部署,各机器之间会话同步,从而支持热升级,机器故障和集群维护对用户完全透明;某些地域采用多可用区部署,轻松实现同城容灾;结合DNS使用还可支持全局负载均衡,实现跨地域容灾。

.
应用双活

为了提高可用性和弹性,我们一般用多台普通性能的ECS来代替单个高性能服务器。那么在部署的时候,我们就可以把多台ECS分布到多个可用区上,从而实现同城双活。

.
数据双活

RDS实例采用主备架构,两个实例位于不同服务器,自动同步数据。主实例不可用时,系统会自动将数据库连接切换至备实例。为了实现同城容灾,在启动RDS时需要在可用区选项选择多可用区。

注:部分区域不支持多可用区

如果用户已经用单可用区启动了RDS,也可以通过迁移RDS到多可用区,例如:

注1:可用区迁移过程会有约30s的闪断,应用程序需要具有数据库重连机制

注2:在专有网络情况下无法迁移可用区,此时可以先修改实例为经典网络,然后迁移可用区,最后再修改实例为专有网络