手工部署 Redis 哨兵模式(1主2从+3哨兵)详细步骤


环境准备

  • 主机规划

    • 主节点(Master): 192.168.1.31
    • 从节点1(Replica1): 192.168.1.60
    • 从节点2(Replica2): 192.168.1.104
    • 哨兵(Sentinel): 在所有3个节点上部署
  • 软件要求

    • Redis 7.4.0(已编译好的 redis.7.4.0.tar.gz
    • Linux 系统(CentOS/RHEL/Ubuntu)
    • 确保节点间网络互通(防火墙开放6379和26379端口)

1. 安装 Redis 7.4.0

在所有节点执行以下步骤:

1.1 解压并安装 Redis

# 上传 redis.7.4.0.tar.gz 到 /opt 目录
cd /opt
tar xzf redis.7.4.0.tar.gz
mv redis /opt/redis-7.4.0
ln -s /opt/redis-7.4.0 /opt/redis

# 创建软链接到 /usr/local/bin
ln -s /opt/redis/bin/redis-server /usr/local/bin/redis-server
ln -s /opt/redis/bin/redis-cli /usr/local/bin/redis-cli
ln -s /opt/redis/bin/redis-sentinel /usr/local/bin/redis-sentinel

1.2 创建 Redis 用户和目录

useradd -s /sbin/nologin redis
mkdir -p /etc/redis /var/lib/redis /var/log/redis
chown -R redis:redis /etc/redis /var/lib/redis /var/log/redis

1.3 配置系统参数

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p

2. 配置 Redis 主从

2.1 主节点配置(192.168.1.31)

编辑 /etc/redis/redis.conf

bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis.pid
logfile /var/log/redis/redis.log
dir /var/lib/redis
appendonly yes
appendfilename "appendonly.aof"
requirepass "your_strong_password"
masterauth "your_strong_password"

启动 Redis:

redis-server /etc/redis/redis.conf

2.2 从节点配置(192.168.1.60 和 192.168.1.104)

编辑 /etc/redis/redis.conf(在两台从节点上配置相同):

bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis.pid
logfile /var/log/redis/redis.log
dir /var/lib/redis
appendonly yes
appendfilename "appendonly.aof"
requirepass "your_strong_password"
masterauth "your_strong_password"
replicaof 192.168.1.31 6379

启动 Redis:

redis-server /etc/redis/redis.conf

2.3 验证主从同步

在主节点执行:

redis-cli -a your_strong_password info replication

输出应包含:

role:master
connected_slaves:2
slave0:ip=192.168.1.60,port=6379,state=online
slave1:ip=192.168.1.104,port=6379,state=online

3. 配置 Redis 哨兵(所有节点)

3.1 编辑哨兵配置文件

所有节点 上编辑 /etc/redis/sentinel.conf

port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile /var/log/redis/sentinel.log
sentinel monitor mymaster 192.168.1.31 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster your_strong_password

3.2 启动哨兵

redis-sentinel /etc/redis/sentinel.conf

3.3 验证哨兵状态

redis-cli -p 26379 sentinel master mymaster

输出应包含主节点信息:

ip: 192.168.1.31
port: 6379
num-slaves: 2

4. 测试故障转移

4.1 模拟主节点宕机

在主节点(192.168.1.31)执行:

redis-cli -a your_strong_password shutdown

4.2 观察哨兵自动切换

在任意哨兵节点执行:

redis-cli -p 26379 sentinel master mymaster

约5秒后,哨兵会选举新的主节点(原从节点之一)。

4.3 恢复旧主节点

重启原主节点后,它会自动变为从节点:

redis-server /etc/redis/redis.conf

5. 关键命令总结

用途 命令
启动Redis redis-server /etc/redis/redis.conf
启动哨兵 redis-sentinel /etc/redis/sentinel.conf
检查主从状态 redis-cli -a your_password info replication
检查哨兵状态 redis-cli -p 26379 sentinel master mymaster
手动故障转移 redis-cli -p 26379 sentinel failover mymaster

6. 注意事项

  1. 防火墙:确保开放 6379(Redis)和 26379(Sentinel)端口。
  2. 密码安全:替换 your_strong_password 为高强度密码。
  3. 持久化appendonly yes 确保数据持久化。
  4. 日志监控:定期检查 /var/log/redis/redis.log/var/log/redis/sentinel.log

按照以上步骤操作后,您将获得一个高可用的 Redis 哨兵集群!

作者:admin  创建时间:2025-06-06 11:10
最后编辑:admin  更新时间:2025-06-07 09:49