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

环境准备

一台机器部署:

  • Redis 主节点127.0.0.1:6379
  • Redis 从节点127.0.0.1:6380127.0.0.1:6381
  • Sentinel 节点127.0.0.1:26379127.0.0.1:26380127.0.0.1:26381

步骤 1:安装 Redis 6.2.17

 
# 下载并编译 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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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 主从节点
 
# 启动主节点
redis-server /opt/redis/master/redis.conf

# 启动从节点
redis-server /opt/redis/slave1/redis.conf
redis-server /opt/redis/slave2/redis.conf

(2) 启动 Sentinel 节点
 
redis-sentinel /opt/redis/sentinel1/sentinel.conf
redis-sentinel /opt/redis/sentinel2/sentinel.conf
redis-sentinel /opt/redis/sentinel3/sentinel.conf

步骤 5:验证集群状态

(1) 检查主从复制状态
 
# 连接主节点
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 监控状态
 
# 连接任意 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) 手动停止主节点
 
redis-cli -h 127.0.0.1 -p 6379 -a your_redis_password shutdown
(2) 观察 Sentinel 日志

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

 
# 日志中应出现以下事件:
+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) 验证新主节点
 
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-milliseconds 和 parallel-syncs 参数优化故障转移速度。
  4. 日志与监控

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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值