手动搭建Redis1主2从+ 3 Sentinel 高可用集群

环境准备

一台机器部署:

  • Redis 主节点 : 127.0.0.1:6379
  • Redis 从节点 : 127.0.0.1:6380, 127.0.0.1:6381
  • Sentinel 节点 : 127.0.0.1:26379, 127.0.0.1:26380, 127.0.0.1:26381

步骤 1:安装 Redis 6.2.17

复制代码
bash 复制代码
# 下载并编译 Redis
wget https://download.redis.io/releases/redis-6.2.17.tar.gz
tar xzf redis-6.2.17.tar.gz
cd redis-6.2.17
make && make install

# 创建配置和数据目录
mkdir -p /opt/redis/{master,slave1,slave2,sentinel1,sentinel2,sentinel3}

步骤 2:配置 Redis 主从节点

(1) 主节点配置 (/opt/redis/master/redis.conf)
复制代码
bash 复制代码
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis-master.pid
logfile "/opt/redis/master/redis.log"
dir /opt/redis/master
requirepass your_redis_password  # 主节点密码
masterauth your_redis_password    # 从节点访问主节点的密码(需与 requirepass 一致)
(2) 从节点1配置 (/opt/redis/slave1/redis.conf)
复制代码
bash 复制代码
bind 0.0.0.0
port 6380
daemonize yes
pidfile /var/run/redis-slave1.pid
logfile "/opt/redis/slave1/redis.log"
dir /opt/redis/slave1
requirepass your_redis_password
masterauth your_redis_password
replicaof 127.0.0.1 6379  # 指向主节点
(3) 从节点2配置 (/opt/redis/slave2/redis.conf)
复制代码
bash 复制代码
bind 0.0.0.0
port 6381
daemonize yes
pidfile /var/run/redis-slave2.pid
logfile "/opt/redis/slave2/redis.log"
dir /opt/redis/slave2
requirepass your_redis_password
masterauth your_redis_password
replicaof 127.0.0.1 6379  # 指向主节点

步骤 3:配置 Sentinel 节点

(1) Sentinel1 配置 (/opt/redis/sentinel1/sentinel.conf)
复制代码
bash 复制代码
port 26379
daemonize yes
pidfile /var/run/redis-sentinel1.pid
logfile "/opt/redis/sentinel1/sentinel.log"
dir /opt/redis/sentinel1

sentinel monitor mymaster 127.0.0.1 6379 2  # 监控名为 "mymaster" 的主节点,quorum=2
sentinel auth-pass mymaster your_redis_password  # 主节点密码
sentinel down-after-milliseconds mymaster 5000   # 5秒不可达视为故障
sentinel failover-timeout mymaster 60000         # 故障转移超时时间(毫秒)
sentinel parallel-syncs mymaster 1               # 故障转移时允许同步的从节点数
(2) Sentinel2 配置 (/opt/redis/sentinel2/sentinel.conf)
复制代码
bash 复制代码
port 26380
daemonize yes
pidfile /var/run/redis-sentinel2.pid
logfile "/opt/redis/sentinel2/sentinel.log"
dir /opt/redis/sentinel2

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster your_redis_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
(3) Sentinel3 配置 (/opt/redis/sentinel3/sentinel.conf)
复制代码
bash 复制代码
port 26381
daemonize yes
pidfile /var/run/redis-sentinel3.pid
logfile "/opt/redis/sentinel3/sentinel.log"
dir /opt/redis/sentinel3

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster your_redis_password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

步骤 4:启动服务

(1) 启动 Redis 主从节点
复制代码
bash 复制代码
# 启动主节点
redis-server /opt/redis/master/redis.conf

# 启动从节点
redis-server /opt/redis/slave1/redis.conf
redis-server /opt/redis/slave2/redis.conf
(2) 启动 Sentinel 节点
复制代码
bash 复制代码
redis-sentinel /opt/redis/sentinel1/sentinel.conf
redis-sentinel /opt/redis/sentinel2/sentinel.conf
redis-sentinel /opt/redis/sentinel3/sentinel.conf

步骤 5:验证集群状态

(1) 检查主从复制状态
复制代码
bash 复制代码
# 连接主节点
redis-cli -h 127.0.0.1 -p 6379 -a your_redis_password info replication

# 输出应包含:
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=...
slave1:ip=127.0.0.1,port=6381,state=online,offset=...
(2) 检查 Sentinel 监控状态
复制代码
bash 复制代码
# 连接任意 Sentinel 节点
redis-cli -h 127.0.0.1 -p 26379 info sentinel

# 输出应包含:
sentinel_masters:1
sentinel_tilt:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

步骤 6:模拟故障转移测试

(1) 手动停止主节点
复制代码
bash 复制代码
redis-cli -h 127.0.0.1 -p 6379 -a your_redis_password shutdown
(2) 观察 Sentinel 日志

查看 Sentinel 日志文件(如 /opt/redis/sentinel1/sentinel.log),确认触发故障转移:

复制代码
bash 复制代码
# 日志中应出现以下事件:
+sdown master mymaster 127.0.0.1 6379
+odown master mymaster 127.0.0.1 6379
+vote-for-leader ...
+switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380  # 切换至新主节点
(3) 验证新主节点
复制代码
bash 复制代码
redis-cli -h 127.0.0.1 -p 6380 -a your_redis_password info replication
# 输出应显示 role:master

关键注意事项

  1. 密码一致性

    • 所有 Redis 主从节点和 Sentinel 的 requirepassmasterauthsentinel auth-pass 必须一致。
  2. 防火墙设置

    • 确保 Redis 和 Sentinel 的端口开放(6379, 6380, 6381, 26379, 26380, 26381)。
  3. 生产环境优化

    • 将主从节点和 Sentinel 分散在不同物理机或可用区。
    • 调整 down-after-millisecondsparallel-syncs 参数优化故障转移速度。
  4. 日志与监控

    • 监控 INFO replicationINFO sentinel 状态。
    • 配置日志轮转(如 logrotate)避免日志文件过大。

总结

通过以上步骤,您已成功部署一个基于 Redis Sentinel 的高可用集群。Sentinel 会持续监控主节点,并在故障时自动切换至从节点,保障服务可用性。

相关推荐
逻各斯2 小时前
redis中的Lua脚本,redis的事务机制
java·redis·lua
阿桢呀5 小时前
Redis实战篇《黑马点评》5
数据库·redis·缓存
Kerwin要坚持日更6 小时前
一文讲解Redis中的主从复制
数据库·redis·缓存
Suk-god6 小时前
【Redis】基础知识入门
数据库·redis·缓存
m0_748230947 小时前
Redis 通用命令
前端·redis·bootstrap
Struggle Sheep9 小时前
linux安装redis
linux·运维·redis
guihong00412 小时前
Redis 深度解析:高性能缓存与分布式数据存储的核心利器
redis·分布式·缓存
qq_5298353514 小时前
Redis作为缓存和数据库的数据一致性问题
数据库·redis·缓存
知初~18 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database