使用 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 高可用性方案,既能够提供更好的应用保障,又能够降低运维成本。将这种高可用性机制纳入到您的应用架构中,无疑会为您的业务带来更大的稳定性和可靠性。

参考链接

目录
相关文章
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
3114 8
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
1088 6
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
895 2
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1538 3
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
1148 9
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
1143 24
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
564 14
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
654 7