当前位置: 首页 > news >正文

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

一、部署架构

  1. 主从结构
    • 主节点‌:部署于192.168.56.100
    • 从节点‌:部署于192.168.56.101和192.168.56.103
  2. 哨兵结构
    • 每台服务器部署一个哨兵实例,形成三哨兵集群。
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

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

    故障转移成功!!!

    相关文章:

  1. 深度学习模型组件-RevNorm-可逆归一化(Reversible Normalization)
  2. 行为模式---迭代器模式
  3. MySQL 主主复制与 Redis 环境安装部署
  4. 开发模型与测试模型
  5. 原码、反码和补码的介绍和区别
  6. pycharm找不到conda可执行文件
  7. 系统架构设计师—数据库基础篇—数据库的控制功能
  8. 【形态学操作中的开运算和闭运算详细讲解】
  9. Windows设置目录及子目录大小写不敏感暨git克隆报错同名文件已存在的解决办法
  10. Flink MysqlCDC和OracleCDC对比
  11. 虚拟卡 WildCard (野卡) 保姆级开卡教程
  12. QT day5
  13. 当夸克让搜索学会深度思考,AI搜索掀开新篇章
  14. 分布式ID生成方案:数据库号段、Redis与第三方开源实现
  15. 代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集
  16. 【芯片设计】处理器芯片大厂前端设计工程师面试记录·20250307
  17. ClickHouse 中出现 DB::Exception: Too many parts 错误
  18. 什么是向量数据库?向量数据库概念,详细入门
  19. 【五.LangChain技术与应用】【26.LangChain Agent基础应用(上):智能代理的构建】
  20. 护照阅读器在机场流程中的应用
  21. 济南网站哪家做的好/网站登录入口
  22. 苏州做网站的哪个公司比较好/可以推广赚钱的软件
  23. 在线制作公司网站/网络推广需要什么
  24. 成都建设信息网官网/徐州seo顾问
  25. 长沙市民警大人做爰网站/免费放单平台无需垫付
  26. 手机app 网站/seo优化顾问