使用 Docker Compose 部署 Redis Sentinel 高可用架构

简介: 在现代应用中,无法容忍系统中断或数据丢失。Redis 作为一种高性能的内存数据库,被广泛应用于缓存、会话管理等场景。然而,即使我们拥有可伸缩的 Redis Cluster 集群,也需要考虑在主节点故障时自动切换到从节点的机制。这时候 Redis Sentinel 就派上用场了。高可用性是分布式应用的核心需求之一。我们在之前的文章中介绍了redis cluster 3主3从集群的搭建,本文将为您介绍如何在现有的 Redis 3 主 3 从 Cluster 集群基础上,使用 Docker Compose 部署 Redis Sentinel,为您的应用构建一个强大的高可用性方案。

在现代应用中,无法容忍系统中断或数据丢失。Redis 作为一种高性能的内存数据库,被广泛应用于缓存、会话管理等场景。然而,即使我们拥有可伸缩的 Redis Cluster 集群,也需要考虑在主节点故障时自动切换到从节点的机制。这时候 Redis Sentinel 就派上用场了。高可用性是分布式应用的核心需求之一。我们在之前的文章中介绍了redis cluster 3主3从集群的搭建,本文将为您介绍如何在现有的 Redis 3 主 3 从 Cluster 集群基础上,使用 Docker Compose 部署 Redis Sentinel,为您的应用构建一个强大的高可用性方案。

为什么要使用 Redis Sentinel?

在 Redis 中,Cluster 集群主要用于分布式数据存储和高可用性。它可以将数据分布在多个节点上,提供横向扩展和高性能。然而,Cluster 集群并不直接提供自动故障检测和转移功能,这就是为什么需要在 Cluster 集群的基础上创建 Sentinel 哨兵集群的原因。

Sentinel 哨兵集群用于实现高可用性和自动故障转移,它可以监控 Redis 主从复制架构中的主节点和从节点,并在主节点故障时自动将从节点提升为新的主节点。虽然 Cluster 集群本身可以提供数据的分布和冗余,但是当主节点发生故障时,需要一个机制来自动切换到备份节点,从而确保系统的可用性。

因此,将 Sentinel 哨兵集群与 Cluster 集群结合使用可以实现更高级别的高可用性。哨兵集群负责监控和管理主节点的故障转移,确保在主节点故障时能够自动切换到备份节点。Cluster 集群则负责分布数据和提供高性能。通过将这两种机制结合在一起,可以实现在数据分布和高可用性之间的平衡,从而构建出稳定和可靠的 Redis 部署。

部署

编写 Docker Compose 文件

在 redis-sentinel 文件夹中创建一个名为 docker-compose.yml 的文件,并定义 Sentinel 节点的容器配置

docker-compose.yml

version: '3.3'
services:
  redis-sentinel1:
    image: redis:latest
    network_mode: 'host'
    container_name: redis-sentinel1
    command: redis-sentinel /etc/redis/sentinel.conf
    volumes:
      - ./sentinel1.conf:/etc/redis/sentinel.conf
  redis-sentinel2:
    image: redis:latest
    network_mode: 'host'
    container_name: redis-sentinel2
    command: redis-sentinel /etc/redis/sentinel.conf
    volumes:
      - ./sentinel2.conf:/etc/redis/sentinel.conf
  redis-sentinel3:
    image: redis:latest
    network_mode: 'host'
    container_name: redis-sentinel3
    command: redis-sentinel /etc/redis/sentinel.conf
    volumes:
      - ./sentinel3.conf:/etc/redis/sentinel.conf

配置 Sentinel

为每个 Sentinel 节点创建一个配置文件,例如 sentinel1.conf、sentinel2.conf 等。在配置文件中,您可以定义监视的主节点、故障判定超时等设置。

示例:
sentinel1.conf

port 26479
dir /tmp
sentinel monitor mymaster 192.168.10.108 6479 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster xj2022

启动 Sentinel 节点

在 redis-sentinel 文件夹中运行以下命令以启动 Sentinel 节点容器:

docker-compose up -d

这将在后台启动 Sentinel 容器,使其能够监视 Redis 主从复制集群。

总结

将 Redis Sentinel 部署在现有的 Redis 3 主 3 从 Cluster 集群上,能够为您的应用提供更高的可用性。通过 Docker Compose 的便捷性,您可以在短时间内实现自动故障转移的功能,确保主节点故障时系统能够自动切换到从节点,保障数据的完整性和应用的可用性。

使用 Docker Compose 部署 Redis Sentinel 高可用性方案,既能够提供更好的应用保障,又能够降低运维成本。将这种高可用性机制纳入到您的应用架构中,无疑会为您的业务带来更大的稳定性和可靠性。

参考链接

目录
相关文章
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
12月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1530 3
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1997 3
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
4447 57
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
601 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。