云数据库 Redis® 支持同地域下跨多个可用区部署副本,相对单可用区实例(主节点和副本节点在同一可用区),多可用区实例具有更高的可用性和容灾能力。
单可用区:主机、机架级容灾能力。
多可用区:主机、机架、可用区级容灾能力。
部署架构
架构说明:
LB(负载均衡):Redis 的标准架构和集群架构都有 Proxy,且 Proxy 的数量 >= 3,因此需要通过 LB 来均衡访问。
VIP:多 AZ(可用区)的实例只有一个 VIP,这个 VIP 在整个 Region 都可以访问,Redis 的 HA(High Availability)并不会导致 VIP 变化。
Proxy:代理接入服务,实现请求路由功能,用于分发用户数据请求。
开启副本只读:每个实例至少有3个 Proxy,标准架构的 Proxy = 3 + (副本数 - 1);集群架构的 Proxy = Max[分片数 * 副本数;分片数 * 1.5(向上取整)]。
不开启副本只读:标准架构 Proxy = 3;集群架构 Proxy = 分片数 * 1.5(向上取整)。
Master(Group):Redis 的主节点或是所有分片的主节点被称为 Master(Group)。
Replica(Group):Redis 的副本节点或是集群实例的多个分片中的一个副本组成的集合被称为副本或者副本组 Replica(Group),集群架构的副本组是将一个分片的多个副本分到不同的组,以便于将不同的副本组部署到不同的可用区。
主可用区:主节点所在的可用区被称为主可用区,除非手动在控制台变更,否则主可用区将始终保持不变,主节点故障后可能会导致主节点切换到副本可用区,这个状态是临时的,HA 系统将在满足条件的前提下,在数分钟内将主节点迁回到主可用区,迁移过程是无损,除非您的业务使用了阻塞命令,如 blpop、blpush。
故障切换机制(HA)
故障判断:Redis 标准架构和集群架构采用的是 Redis Cluster 原生的集群管理机制,依靠集群内节点之间的 Gossip 协议来进行节点状态的判断,节点故障判断的时效性取决于 cluster-node-timeout,默认值是15s,建议不要更改该参数。节点故障的判断请参考 Redis Cluster 原生设计。
主节点选举:相对原生的 Cluster Failover 机制,腾讯云 Redis 引入了主可用区优先切换的逻辑,以保障主可用区业务的访问时延,具体机制如下:
数据最新的节点优先选主。
数据相同,主可用区的副本优先选主。
跨可用区访问
未开副本只读
未开启副本只读(读写分离)的实例,读写请求都会经过本可用区的 Proxy 路由到主节点,保障数据的一致性,同时保障最多仅有一次的 AZ 穿越。
开启副本只读
开启副本只读(读写分离)的实例,写请求将路由到主节点,读请求将路由到本可用区的副本节点,满足业务就近访问的诉求。
说明:
跨可用区访问时,存在2ms - 5ms的时延。
部署推荐
两可用区部署
两可用区1主3副本部署,主可用区1主1副本,备可用区2个副本,两可用区做负载均衡,每个可用区两个节点,可保障单机故障读请求不跨可用区,单可用区故障后仍然具备主备高可用。该方案适合于对可用性和访问延迟要求较高的场景。
三可用区部署
三可用区1主2副本部署,每个可用区部署一个节点,单个主机和单个可用区故障,仍可以提供主备跨可用区高可用。该方案适用于对延迟要求不敏感,但是对可用性要求极高的场景。
相关操作
云数据库 Redis® 支持通过控制台配置多可用区和查看多可用区信息,请参见 配置多可用区。
云数据库 Redis® 支持通过控制台升级单可用区至多可用区,请参见 变更可用区。
云数据库 Redis® 支持通过控制台开启和关闭读写分离功能,请参见 副本只读。
云数据库 Redis® 多可用区实例和单可用区实例的访问方式一致,均是提供一个 VIP 给到业务访问,请参见 访问多可用区实例。
数据库 Redis 提供自动故障切换能力,保障服务的可用性,请参见 故障模拟。
云数据库 Redis® 对跨可用区部署的实例提供自动回切功能(Auto Failback),请参见 自动回切。
云数据库 Redis® 为多可用区部署的实例提供手动提主功能,您可以根据业务要求将主节点部署到指定的可用区或者指定的副本(组),请参见 副本提主。
多可用区部署情况下,为降低业务访问 Redis 服务的时延,云数据库 Redis® 提供就近访问能力,请参见 就近访问。