环境规划
- 主节点 (Master):192.168.1.2 (端口 6379)
- 从节点 (Slave):192.168.1.3 (端口 6379)
- 系统版本:CentOS 7.9
- Redis 版本:3.2.12
第一步:两台机器都安装 Redis
在 192.168.1.2 和 192.168.1.3 上分别执行:
# 1. 安装 EPEL 源(Redis 在 EPEL 仓库中)
yum install -y epel-release
# 2. 安装 Redis
yum install -y redis
# 3. 确认版本(应输出 Redis server v=3.2.12)
redis-server --version
第二步:配置主节点 (192.168.1.2)
编辑主节点配置文件:
vi /etc/redis.conf
修改或确认以下配置项:
# 1. 允许外部 IP 连接(生产环境建议绑定内网IP,如 bind 192.168.1.2)
bind 0.0.0.0
# 2. 端口
port 6379
# 3. 后台运行
daemonize yes
# 4. 设置密码(强烈建议,假设密码为 Admin@123456)
requirepass Admin@123456
# 5. 开启 AOF 持久化(防止主节点宕机丢数据)
appendonly yes
appendfsync everysec
保存退出后,重启主节点服务:
systemctl restart redis
systemctl enable redis
第三步:配置从节点 (192.168.1.3)
编辑从节点配置文件:
vi /etc/redis.conf
修改或确认以下配置项:
# 1. 允许外部 IP 连接
bind 0.0.0.0
# 2. 端口
port 6379
# 3. 后台运行
daemonize yes
# 4. 【核心】指定主节点 IP 和端口(Redis 3.x 使用 slaveof)
slaveof 192.168.1.2 6379
# 5. 【核心】主节点密码(必须与主节点 requirepass 一致)
masterauth Admin@123456
# 6. 从节点只读(默认开启,防止误写入)
slave-read-only yes
保存退出后,重启从节点服务:
systemctl restart redis
systemctl enable redis
第四步:配置防火墙
由于主从复制是从节点主动连接主节点,所以只需要在主节点开放 6379 端口。
在 192.168.1.2 (主) 上执行:
# 仅允许从节点访问 6379 端口(更安全)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.3" port port="6379" protocol="tcp" accept'
firewall-cmd --reload
(注:192.168.1.3 从节点不需要开放 6379 入站端口)
第五步:验证主从状态
1. 检查主节点状态
在 192.168.1.2 上执行:
redis-cli -a Admin@123456 info replication
正常输出应包含:
role:master
connected_slaves:1
slave0:ip=192.168.1.3,port=6379,state=online,offset=xxx,lag=0
2. 检查从节点状态
在 192.168.1.3 上执行:
redis-cli info replication
正常输出应包含:
role:slave
master_host:192.168.1.2
master_port:6379
master_link_status:up
第六步:测试数据同步
在 主节点 (192.168.1.2) 写入数据:
redis-cli -a Admin@123456 set test_key "Hello Master"
在 从节点 (192.168.1.3) 读取数据:
redis-cli get test_key
如果返回 "Hello Master",说明主从配置完全成功!
常见排错指南
如果 master_link_status:down,请依次检查:
- 主节点防火墙是否放行了从节点 IP。
masterauth密码是否与主节点的requirepass完全一致。- 主节点的
bind是否写成了127.0.0.1(必须改为0.0.0.0或具体内网 IP)。 - 查看从节点日志:
tail -f /var/log/redis/redis.log,通常会有明确的连接拒绝或密码错误提示。