Redis 主从复制配置主节点 (redis-node1, IP: 172.25.254.10)[rootredis-node1 ~]# vim /etc/redis/redis.conf修改项bind * -::* # 允许所有网络接口访问 protected-mode no # 关闭保护模式允许远程连接[rootredis-node1 ~]# systemctl restart redis_6379.service注释protected-mode no至关重要否则未设置密码且绑定公网 IP 时Redis 将拒绝外部连接导致主从同步失败。配置从节点 (redis-node2 node3)Node2 (172.25.254.20):[rootredis-node2 ~]# vim /etc/redis/redis.conf修改项bind * -::* protected-mode no replicaof 172.25.254.10 6379 # 指定主节点 IP 和端口[rootredis-node2 ~]# systemctl restart redis_6379.serviceNode3 (172.25.254.30):注释配置同 Node2只需确保replicaof指向正确的主节点 IP。验证主从状态# 在主节点查看 [rootredis-node1 ~]# redis-cli 127.0.0.1:6379 info replication # 输出应显示 role:master 且 connected_slaves:2# 在从节点查看 [rootredis-node2 ~]# redis-cli 127.0.0.1:6379 info replication # 输出应显示 role:slave 且 master_host:172.25.254.10数据同步测试# 主节点写入 [rootredis-node1 ~]# redis-cli 127.0.0.1:6379 set name lee OK # 从节点读取应成功 [rootredis-node2 ~]# redis-cli 127.0.0.1:6379 get name lee # 从节点写入应失败 127.0.0.1:6379 set test 123 (error) READONLY You cant write against a read only replica.注释从节点默认是只读的这是为了保证数据一致性所有写操作必须发生在主节点。Redis 哨兵模式配置与故障切换准备哨兵配置文件 (sentinel.conf)在主节点创建并编辑配置文件[rootredis-node1 ~]# cp -p sentinel.conf /etc/redis/ [rootredis-node1 ~]# vim /etc/redis/sentinel.conf关键配置项protected-mode no # 关闭保护模式 port 26379 # 哨兵监听端口 daemonize no # 前台运行生产环境通常设为 yes 或使用 systemd 管理 sentinel monitor mymaster 172.25.254.10 6379 2 # 监控主节点2 表示至少 2 个哨兵同意才判定下线 sentinel down-after-milliseconds mymaster 10000 # 10 秒连不上视为主观下线 sentinel parallel-syncs mymaster 1 # 故障转移后同时同步新主的从节点数量 sentinel failover-timeout mymaster 180000 # 故障转移超时时间注释quorum 2表示至少需要 2 个哨兵实例确认主节点失效才能进行故障转移防止误判。全局关闭保护模式确保所有 Redis 节点主和从的redis.conf中均设置# 在所有节点执行 [rootredis-node ~]# vim /etc/redis/redis.conf protected-mode no [rootredis-node ~]# systemctl restart redis_6379.service注释哨兵需要连接 Redis 实例进行监控若开启保护模式且未配置密码哨兵可能无法连接。分发配置文件并启动哨兵# 将配置复制到从节点 [rootredis-node1 ~]# scp /etc/redis/sentinel.conf root172.25.254.20:/etc/redis/ [rootredis-node1 ~]# scp /etc/redis/sentinel.conf root172.25.254.30:/etc/redis/ # 在所有节点启动哨兵 [rootredis-node1~3 ~]# redis-sentinel /etc/redis/sentinel.conf注释启动后观察日志应看到monitor master和slave信息表示哨兵已识别主从架构。测试故障切换 (Failover)手动关闭主节点[rootredis-node1 6379]# redis-cli 127.0.0.1:6379 SHUTDOWN观察哨兵日志关键流程# sdown master ... # 主观下线 # odown master ... # 客观下线达到 quorum 票数 # vote-for-leader ... # 选举领导哨兵 # elected-leader ... # 领导选举完成 # selected-slave ... # 选择新的从节点提升为主 # switch-master ... # 完成主从切换注释switch-master mymaster 172.25.254.10 6379 172.25.254.20 6379表示主节点已由 .10 切换为 .20。验证新拓扑结构在原从节点 (Node2, 新主) 查看[rootredis-node2 ~]# redis-cli 127.0.0.1:6379 info replication # 应显示 role:master, connected_slaves:1 (原 Node3)在原从节点 (Node3) 查看[rootredis-node3 ~]# redis-cli 127.0.0.1:6379 info replication # 应显示 role:slave, master_host:172.25.254.20 (指向新主)恢复原主节点[rootredis-node1 6379]# /etc/init.d/redis_6379 start验证在原主节点 (Node1) 查看info replication它会自动变为Slave角色并同步新主节点 (Node2) 的数据。role:slave master_host:172.25.254.20注释Redis 哨兵模式具备自动修复能力旧主恢复后会自动降级为从节点加入新的主从集群无需人工干预配置。