docker-compose安装redis过程-主从+哨兵(3台虚拟机一主两从)

 更新时间:2026年04月10日 10:01:58   作者:佛说"獨"  
文章介绍了使用Docker部署Redis主从架构及哨兵监控的全过程,包括部署架构、配置文件准备、Docker-Compose文件编写、部署步骤以及测试主从复制和故障转移功能

一、部署架构

主从结构

  • 主节点‌:部署于192.168.56.100
  • 从节点‌:部署于192.168.56.101和192.168.56.103

哨兵结构

  • 每台服务器部署一个哨兵实例,形成三哨兵集群。
ipredis节点名称sentinel节点名称
192.168.56.100redis-masterredis-sentinel
192.168.56.101redis-slave1redis-sentinel
192.168.56.103redis-slave2redis-sentinel

二、配置文件准备

创建conf目录保存redis.conf和sentinel.conf文件

创建data目录保存appendonly.aof、dump.rdbredis.log文件

1.主节点Redis配置(redis-master.conf)

# 任何都可以连接redis
bind 0.0.0.0
# 配置master密码
requirepass 123456
# 宕机后成为从要连接master的密码
masterauth 123456
# 开启持久化
appendonly yes

2.从节点Redis配置(redis-slave.conf)

# 指向主节点IP和端口
replicaof 192.168.56.100 6379
# 任何都可以连接redis
bind 0.0.0.0
# 从节点密码
requirepass 123456
# 主节点密码
masterauth 123456
# 开启持久化
appendonly yes
# 从节点具备写入权限
#slave-read-only no

‌3.哨兵配置(sentinel.conf)

port 26379
# 监控主节点,2为最小投票数
sentinel monitor mymaster 192.168.56.100 6379 2
# 主节点密码
sentinel auth-pass mymaster 123456
# 6秒无响应判定主节点下线              
sentinel down-after-milliseconds mymaster 6000
# 控制同时进行同步的从节点数量为 1  
sentinel parallel-syncs mymaster 1
# 故障转移超时时间              
sentinel failover-timeout mymaster 6000   

‌三、Docker-Compose文件编写

在三台服务器分别配置docker-compose

#version: '3'
services:   
  redis:
    image: redis:6.2.14 # redis镜像版本
    container_name: redis-master # 容器名称
    ports:
     # 指定宿主机端口与容器端口映射关系
      - 6379:6379
    volumes:
      # 映射配置文件目录
      - ./redis/conf/redis-master.conf:/usr/local/etc/redis/redis.conf
      # 映射数据目录
      - ./redis/data:/usr/local/etc/redis/data
    restart: always # 容器开机自启
    privileged: true # 获取宿主机root权限
    command: redis-server /usr/local/etc/redis/redis.conf # 指定配置文件启动redis-server进程
    networks:
      - my-network
  sentinel:
    image: redis:6.2.14
    container_name: redis-sentinel
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - "26379:26379"
    volumes:
      - ./redis/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf
    restart: always
    networks:
      - my-network
networks:
  my-network:
    #external: true
    name: my-network
    driver: bridge

*从节点需将redis-master.conf替换为redis-slave.conf,并调整container_name*sentinel内容不变

四、部署步骤

1.启动服务

docker-compose up -d  # 每台服务器执行

2.验证部署

  • 主从同步检查‌:
docker exec -it redis-master redis-cli -a 123456 info replication

查看roleconnected_slaves字段

  • 哨兵状态检查‌:
docker exec -it redis-sentinel redis-cli -p 26379 sentinel master mymaster

或者

进入哨兵容器:

docker exec -it redis-sentinel /bin/bash

连接哨兵:

redis-cli -p 26379
info

五、测试主从和故障转移

进入redis容器:

docker exec -it redis-master /bin/bash
redis-cli
auth 123456

1.测试主从复制

  • master节点创建一个键值对:

  • 从节点查看key是否存在:

 

主从复制正常!!!

2. 测试故障转移

我们把master(192.168.56.100)停掉,查看一个哨兵的日志:

docker stop redis-master
docker logs -f redis-sentinel

故障转移成功!!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • kali下对Docker的详细安装教程

    kali下对Docker的详细安装教程

    这篇文章主要介绍了kali下对Docker的详细安装,Docker是渗透测试中必学不可的一个容器工具,在其中,我们能够快速创建、运行、测试以及部署应用程序,对kali安装docker相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • docker registry 镜像同步的实现思路

    docker registry 镜像同步的实现思路

    这篇文章主要介绍了docker registry 镜像同步的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Docker无法连接到Docker Hub和镜像加速器的问题详解

    Docker无法连接到Docker Hub和镜像加速器的问题详解

    这篇文章主要介绍了Docker容器无法连接到DockerHub或镜像加速器问题的步骤,包括检查和更换DNS服务器、测试网络连通性、使用镜像加速器和检查防火墙及安全组规则,通过逐一排查,可以解决大多数连接问题,需要的朋友可以参考下
    2025-03-03
  • 基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    这篇文章主要介绍了基于Docker部署 Tomcat集群、 Nginx负载均衡,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Docker 部署 Alertmanager的详细步骤及常见问题

    Docker 部署 Alertmanager的详细步骤及常见问题

    这篇文章主要介绍了Docker 部署 Alertmanager的详细步骤及常见问题,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-05-05
  • 创建的docker容器时间显示错误/date错误/时区错误

    创建的docker容器时间显示错误/date错误/时区错误

    这篇文章主要介绍了创建的docker容器时间显示错误/date错误/时区错误的处理方法,一起看看吧
    2017-06-06
  • Docker -p将容器内部的端口映射到宿主机的端口方式

    Docker -p将容器内部的端口映射到宿主机的端口方式

    文章介绍了使用-docker参数将容器内部端口映射到宿主机端口的方法,包括单端口映射、多端口映射、自动分配宿主机端口、查看实际端口、绑定特定宿主机IP和测试端口连通性
    2025-11-11
  • Docker中实现镜像的推送和拉取的代码步骤

    Docker中实现镜像的推送和拉取的代码步骤

    在 Docker 中,镜像的推送(push)和拉取(pull)是通过与**Docker 镜像仓库(Registry)**交互完成的,默认仓库是 Docker Hub,但你也可以使用私有仓库(Harbor、Nexus、AWS ECR 等),本文详细介绍了Docker实现镜像推送和拉取的步骤,需要的朋友可以参考下
    2025-07-07
  • 详解Docker 容器互联方法

    详解Docker 容器互联方法

    这篇文章主要介绍了详解Docker 容器互联方法,Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。
    2017-03-03
  • Docker镜像下载及容器启动教程

    Docker镜像下载及容器启动教程

    文章总结了Docker安装与使用流程,包括系统版本检测、安装命令、容器启动/停止/删除、进入容器的方法(如nsenter工具),以及运行容器时的注意事项,如容器生命周期与命名空间操作
    2025-07-07

最新评论