TG客服

阿里云云数据库Redis如何配置主从复制和哨兵模式,实现高可用

⏱️2026-04-15 09:00 👁️2

阿里云云数据库 Redis 配置主从复制和哨兵模式,实现高可用方案,步骤如下:

一、主从复制配置 👯

  1. 创建 Redis 实例(主节点)
    • 登录阿里云控制台,进入云数据库 Redis 版。
    • 选择地域,点击“创建实例”。
    • 选择“标准版”或“集群版”(主从复制适用于标准版,集群版本身具有数据分片和高可用特性)。
    • 配置实例规格(内存、CPU等),网络类型(VPC),设置密码等。
    • 确认配置,完成创建。
  2. 创建 Redis 实例(从节点)
    • 按照创建主节点的步骤,再次创建一个或多个 Redis 实例作为从节点。 ⚠️ 注意:确保从节点与主节点在同一 VPC 下,以便网络互通。
  3. 配置主从关系
    • 登录阿里云控制台,进入主 Redis 实例的管理页面。
    • 在“数据安全”或“备份恢复”等相关选项卡下,找到“只读实例”或“添加只读实例”等功能。 (不同版本的控制台页面布局可能略有不同)
    • 点击“添加只读实例”或类似按钮,选择要作为从节点的 Redis 实例。
    • 系统会自动建立主从复制关系。
  4. 验证主从复制
    • 连接到主 Redis 实例,写入一些数据。
    • 连接到从 Redis 实例,读取这些数据,确认数据已同步。 🥳
    • 或者,在主节点执行 INFO replication 命令,查看 role:masterconnected_slaves 信息。在从节点执行同样的命令,查看 role:slavemaster_host, master_port, master_link_status 信息。

二、哨兵模式配置 💂

  1. 创建 Redis 实例(哨兵节点)
    • 在阿里云控制台中,创建多个 Redis 实例作为哨兵节点。 至少需要 3 个哨兵节点,以保证多数派原则,避免脑裂。 🧠
    • 哨兵节点也需要选择“标准版”或“集群版”,但它们主要用于监控,因此配置可以适当降低。
    • 同样,确保哨兵节点与主从节点在同一 VPC 下。
  2. 配置哨兵
    • 登录阿里云控制台,进入每个哨兵 Redis 实例的管理页面。
    • 找到“配置文件”或“自定义参数”等选项卡。
    • 修改 redis.conf 文件(或者在自定义参数中设置):
      • sentinel monitor <master-name> <master-ip> <master-port> <quorum><master-name> 是你给主节点起的名字,例如 mymaster<master-ip><master-port> 是主节点的 IP 地址和端口。 <quorum> 是判断主节点失效所需的哨兵数量,通常设置为哨兵总数的一半加一。 例如,3 个哨兵,则 <quorum> 为 2。)
      • sentinel down-after-milliseconds <master-name> <milliseconds> (指定哨兵认为主节点失效的超时时间,单位为毫秒。 建议设置为 5000-10000。)
      • sentinel failover-timeout <master-name> <milliseconds> (故障转移的超时时间,单位为毫秒。)
      • sentinel parallel-syncs <master-name> <numslaves> (指定在故障转移期间,可以同时进行同步的从节点数量。)
      • `sentinel auth-pass `(如果主节点设置了密码,需要配置此项,将密码配置到sentinel中)
    • 保存配置并重启哨兵节点。
  3. 验证哨兵模式
    • 模拟主节点故障(例如,停止主 Redis 实例)。 💀
    • 观察哨兵节点的日志,确认它们检测到主节点失效,并选举出一个新的主节点。
    • 连接到哨兵节点,使用 SENTINEL get-master-addr-by-name <master-name> 命令获取当前主节点的地址。
    • 连接到新的主节点,验证数据是否已同步。 👌

三、客户端配置 💻

  • 连接哨兵
    • 在你的应用程序中,配置 Redis 客户端连接到哨兵节点,而不是直接连接到主节点。
    • 客户端需要支持哨兵模式,并能自动发现当前的主节点。
    • 常见的 Redis 客户端库(如 Jedis, Lettuce, Redisson 等)都支持哨兵模式。
  • 连接参数
    • 指定多个哨兵节点的地址和端口。
    • 指定主节点的名称(在哨兵配置中设置的 <master-name>)。
    • 如果 Redis 实例设置了密码,需要提供密码。
  • 示例代码(Java, 使用 Jedis)
    
    JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster",
        new HashSet<String>(Arrays.asList("sentinel1:26379", "sentinel2:26379", "sentinel3:26379")),
        "password"); // 如果没有密码,则留空
    
    try (Jedis jedis = sentinelPool.getResource()) {
        jedis.set("foo", "bar");
        String value = jedis.get("foo");
        System.out.println(value);
    } finally {
        // sentinelPool.close();  // 在程序结束时关闭连接池
    }
    
    

注意事项 💡

  • 网络隔离: 确保所有 Redis 实例(主节点、从节点、哨兵节点)都在同一个 VPC 下,并且安全组规则允许它们之间的网络通信。
  • 资源规划: 根据业务需求,合理规划 Redis 实例的规格和数量。
  • 监控告警: 配置完善的监控告警机制,及时发现和处理 Redis 实例的故障。 🚨
  • 持久化: 开启 Redis 的持久化功能(RDB 或 AOF),防止数据丢失。
  • 密码保护: 为 Redis 实例设置密码,增强安全性。 🔒
  • 版本兼容:确保所有Redis实例(包括主节点、从节点和哨兵节点)的版本兼容。 版本不兼容可能导致复制错误或哨兵无法正常工作。

通过以上步骤,你就可以在阿里云云数据库 Redis 上配置主从复制和哨兵模式,实现高可用架构。 🎉

国际云自助站点

我们提供一站式多云服务管理平台,支持阿里云国际、腾讯云国际、AWS(亚马逊云)和GCP(谷歌云)等主流国际云厂商。无论是新账户申请、余额充值,还是日常管理与监控,平台均可统一操作,大幅提升管理效率。同时支持余额预警、异常通知等推送功能,帮助用户实时掌握各云平台资源状态,防止因欠费导致业务中断。平台还支持多账号集中管理,适用于个人站长、跨境电商、开发团队等多场景使用需求,真正实现高效、安全、灵活的多云资源协同管理。

热门文章
更多>