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

Docker 安装 Redis 哨兵模式

Docker 安装 Redis 哨兵模式(三节点 + Host 网络)

以下是使用 Docker 在三台机器上部署 Redis 哨兵模式(Sentinel)的完整方案,采用 host 网络模式以提高性能。

架构说明

  • 3台物理机:分别部署 1个 Redis 主节点 + 1个从节点 + 3个 Sentinel
  • 网络模式--net=host(直接使用宿主机网络,避免 NAT 性能损耗)
  • 端口规划
    • Redis: 6379
    • Sentinel: 26379

1. 机器准备

主机IP角色
node1192.168.1.10Redis Master + Sentinel1
node2192.168.1.11Redis Slave + Sentinel2
node3192.168.1.12Redis Slave + Sentinel3

2. 每台机器操作步骤

(1) 创建数据目录
mkdir -p /data/redis/{data,conf} /data/sentinel
(2) 配置 Redis(所有节点)

编辑 /data/redis/conf/redis.conf

bind 0.0.0.0
port 6379
daemonize no
pidfile /var/run/redis.pid
dir /data
appendonly yes
cluster-enabled no
(3) 配置 Sentinel(所有节点)

编辑 /data/sentinel/sentinel.conf

port 26379
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1

3. 启动容器

在 node1 (Master) 上执行:
# 启动 Redis 主节点
docker run -d --name redis \--net=host \-v /data/redis/data:/data \-v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \redis:7.0 redis-server /usr/local/etc/redis/redis.conf# 启动 Sentinel
docker run -d --name sentinel \--net=host \-v /data/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \redis:7.0 redis-sentinel /usr/local/etc/redis/sentinel.conf
在 node2/node3 (Slave) 上执行:
# 启动 Redis 从节点(注意替换 MASTER_IP)
docker run -d --name redis \--net=host \-v /data/redis/data:/data \-v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \redis:7.0 redis-server /usr/local/etc/redis/redis.conf \--replicaof 192.168.1.10 6379# 启动 Sentinel(配置同 node1)
docker run -d --name sentinel \--net=host \-v /data/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \redis:7.0 redis-sentinel /usr/local/etc/redis/sentinel.conf

4. 验证集群

(1) 检查主从复制
# 在主节点执行
docker exec redis redis-cli info replication

输出应显示:

role:master
connected_slaves:2
slave0:ip=192.168.1.11,port=6379,state=online
slave1:ip=192.168.1.12,port=6379,state=online
(2) 测试 Sentinel 故障转移
# 手动关闭主节点 Redis
docker stop redis# 在任意 Sentinel 节点查看选举结果
docker exec sentinel redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

约 10 秒后应返回新的主节点 IP。


5. 关键配置说明

参数说明
sentinel monitor mymaster...监控名为 mymaster 的主节点,2表示需要2个Sentinel同意才触发故障转移
down-after-milliseconds 50005秒无响应判定为宕机
failover-timeout 10000故障转移超时时间(毫秒)
--net=host使用主机网络,避免端口映射带来的性能损失

常见问题解决

  1. 主从无法连接

    • 检查防火墙是否开放 6379/26379 端口
    • 确保所有节点的 redis.confbind 0.0.0.0
  2. Sentinel 不触发故障转移

    • 确认至少有两个 Sentinel 能连通主节点
    • 检查 sentinel.conf 中的主节点 IP 是否正确
  3. Host 网络模式警告

    • 如果使用云服务器,需确保安全组允许节点间通信

扩展建议

  • 持久化:建议同时启用 RDB 和 AOF
  • 监控:使用 redis-cli info 或 Prometheus + Grafana 监控集群状态
  • 安全:通过 requirepassmasterauth 配置密码认证

此方案适合生产环境,如需更高可用性,可增加 Redis 和 Sentinel 节点数量。

http://www.dtcms.com/a/265723.html

相关文章:

  • 【数据结构】C++的unordered_map/set模拟实现(开散列(哈希桶)作底层)
  • 机器人“触摸”水果成熟度突破:SwishFormer模型与DIGIT视触觉传感器在HelloRobot上的水果检测应用
  • TDSQL如何查出某一列中的逗号数量
  • 从 TCP/IP 协议栈角度深入分析网络文件系统 (NFS)
  • (1)手摸手-学习 Vue3 之 Vite 创建项目
  • grpc 和限流Sentinel
  • STC8G 8051内核单片机开发(GPIO)
  • 2025年6月微短剧备案分析:都市题材占四成,20-29集成主流体量
  • OS15.【Linux】gdb调试器的简单使用
  • 修改文件属主
  • 活体检测api集成方案-炫彩活体检测助力身份核验
  • 马斯克脑机接口(Neuralink)技术进展,已经实现瘫痪患者通过BCI控制电脑、玩视频游戏、学习编程,未来盲人也能恢复视力了
  • [极客时间]LangChain 实战课 -----|(10) 链(下):想学“育花”还是“插花”?用RouterChain确定客户意图
  • 预警:病毒 “黑吃黑”,GitHub 开源远控项目暗藏后门
  • 2024年INS SCI2区,强化搜索自适应大邻域搜索算法RSALNS+无人机扩展型协作多任务分配,深度解析+性能实测
  • 实现如何利用 Kafka 延时删除 用户邮箱的验证码(如何发送邮箱+源码) - 第一期
  • 前缀和算法详解
  • FASTAPI+VUE3平价商贸管理系统
  • React自学 基础一
  • 基于大语言模型进行Prompt优化
  • 深入解析 AAC AudioSpecificConfig 在 RTSP/RTMP 播放器中的核心作用
  • PDF的图片文字识别工具
  • Spring AI ETL Pipeline使用指南
  • Java中的volatile到底是什么来路
  • OpenCV CUDA模块设备层-----在 GPU上高效地执行两个uint类型值的最小值比较函数vmin2()
  • 《人生顶层设计》读书笔记6
  • 开源无广告面板mdserver-web:替代宝塔实现服务器轻松管理
  • 地下管线安全的智能监测先锋:智能标志桩图像监测装置解析​
  • 矩阵批量剪辑源码搭建定制化开发:支持OEM
  • 爬虫技术-获取浏览器身份认证信息(如 Cookie、Token、Session 等)