问题描述
在Azure官网中,已列出了一系列的常规问题:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-geo-replication#geo-replication-faq
- 是否可以通过标准层或基本层缓存使用异地复制?
- 在链接或取消链接过程中是否可以使用缓存?
- 是否可以链接两个以上的缓存?
- 是否可以链接来自不同 Azure 订阅的两个缓存?
- 是否可以链接不同大小的两个缓存?
- 是否可以在启用群集时使用异地复制?
- 当缓存位于 VNET 中时是否可以使用异地复制?
- 什么是 Redis 异地复制的复制计划?
- 异地复制需要多长时间?
- 复制恢复点是否受保证?
- 是否可以使用 PowerShell 或 Azure CLI管理异地复制?
- 跨 Azure 区域复制数据的费用是多少?
- 尝试删除链接缓存时为何操作会失败?
- 应为辅助链接缓存选择哪个区域?
- 辅助链接缓存如何进行故障转移?
- 能否为防火墙配置异地复制?
而面对具体的问题,如:两个redis,一个北2(Primary),一个东2(Secondary),做Geo-replication(异地复制).
1. Geo-replication--->在选link as secondary时,对生产的Redis有影响吗? 比如生产Redis响应延迟,丢数据等
2. 因为北2东2的Redis hostname不同,如果从东2应用连Redis时,是连东2的hostname连吧? 还是说两个link在一起的Redis,就会产生一个公共的hostname或FQDN,以后用这个连呢?
问题解答
1. Geo-replication 在选link as secondary时,对生产的Redis有影响吗? 比如生产Redis响应延迟,丢数据等
【答】:
- 链接时,主链接缓存自始至终保持可用。
- 链接时,在链接过程完成之前,辅助链接缓存将不可用。
- 取消链接时,这两个缓存自始至终保持可用。
2. 因为北2东2的Redis hostname不同,如果从东2应用连Redis时,是连东2的hostname连吧? 还是说两个link在一起的Redis,就会产生一个公共的hostname或FQDN,以后用这个连呢?
【答】:
从东2 连接时用东2 的hostname,不会产生一个公共的hostname,因为一个是主实例一个是从实例,从实例是只读的,是不能向其写入数据的。异地复制的缓存不支持跨 Azure 区域的自动故障转移。 当主Redis发生故障时,需要人为介入进行故障转移。 在Github中有类似的案例。详情参考:
spring-boot-redisson-failover-parent : https://github.com/sme-csu/spring-boot-redisson-failover-parent
redis-failover-poc :https://github.com/huqianghui/redis-failover-poc
参考资料
为高级 Azure Cache for Redis 实例配置异地复制:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-geo-replication#geo-replication-faq