Skip to main content
Ndfa

主从Redis配置指南

配置Redis主从(主备)架构可以提高系统的可用性和扩展性。以下是详细的步骤指导,帮助你在两台服务器上配置Redis的主从复制:

前提条件 #

  1. 安装Redis:确保在主服务器(Master)和从服务器(Slave)上都已安装相同版本的Redis。可以通过Redis官方网站下载并安装。
  2. 网络连通:确保主服务器和从服务器之间的网络是通畅的,且防火墙允许相关端口(默认是6379)通信。
  3. 配置权限:确保从服务器能够访问主服务器的Redis端口,并根据需要配置认证。

步骤一:配置主服务器(Master) #

主服务器通常不需要特别的配置来支持主从复制,但你可以根据需要调整以下配置:

  1. 编辑Redis配置文件:通常位于/etc/redis/redis.conf/usr/local/etc/redis/redis.conf

  2. 确保bindprotected-mode设置正确

    bind 0.0.0.0
    protected-mode yes

    这样可以确保Redis监听所有网络接口,但在生产环境中建议更严格地配置以确保安全。

  3. 设置持久化选项(可选):根据需求配置RDB快照或AOF持久化方式。

  4. 重启Redis服务以应用配置更改:

    sudo systemctl restart redis

步骤二:配置从服务器(Slave) #

  1. 编辑从服务器的Redis配置文件: 打开从服务器上的Redis配置文件(例如/etc/redis/redis.conf)。

  2. 配置主服务器信息: 在配置文件中添加以下内容,指定主服务器的IP地址和端口:

    replicaof  

    例如,如果主服务器的IP是192.168.1.100,端口是6379

    replicaof 192.168.1.100 6379

    注意:在Redis 5.0之前,使用slaveof指令;从Redis 5.0开始,使用replicaof

  3. 配置认证信息(如果主服务器启用了认证): 如果主服务器配置了requirepass,则需要在从服务器上设置masterauth

    masterauth 

    例如:

    masterauth mymasterpassword
  4. 其他配置选项(可选): 根据需要,可以配置以下选项以优化复制:

    repl-diskless-sync yes
    repl-diskless-sync-delay 5
  5. 重启从服务器的Redis服务以应用配置更改:

    sudo systemctl restart redis

步骤三:验证主从复制 #

  1. 在主服务器上创建测试数据: 连接到主服务器的Redis实例并设置一个键值:

    redis-cli
    SET testkey "Hello, Redis Master"
  2. 在从服务器上检查数据是否同步: 连接到从服务器的Redis实例并获取键值:

    redis-cli
    GET testkey

    如果配置正确,应该返回"Hello, Redis Master"

  3. 检查复制状态: 在从服务器上运行INFO replication命令,查看复制状态:

    redis-cli
    INFO replication

    你应该看到类似以下的输出:

    # Replication
    role:slave
    master_host:192.168.1.100
    master_port:6379
    master_link_status:up
    ...
    

额外配置与优化 #

  1. 高可用性: 为了进一步提高系统的可用性,可以使用Redis Sentinel来监控主服务器并在主服务器故障时自动进行故障转移。

  2. 安全性

    • 启用认证:在配置文件中设置requirepassmasterauth以确保只有授权的客户端和从服务器可以访问Redis。
    • 限制网络访问:使用防火墙规则限制只有从服务器的IP可以连接到主服务器的Redis端口。
    • 使用TLS/SSL:从Redis 6.0开始,支持TLS/SSL加密,可以配置以加密主从之间的通信。
  3. 性能优化

    • 调整复制缓冲区:根据实际需求调整repl-backlog-sizeclient-output-buffer-limit
    • 持久化配置:根据系统需求优化RDB/AOF的持久化策略,以平衡性能和数据安全。

示例配置文件 #

主服务器 (redis.conf) #

bind 0.0.0.0
protected-mode yes
port 6379

# 持久化选项
save 900 1
save 300 10
save 60 10000
# 可能的AOF配置
appendonly yes
appendfilename "appendonly.aof"

# 如果需要设置密码
requirepass yourmasterpassword

从服务器 (redis.conf) #

bind 0.0.0.0
protected-mode yes
port 6379

replicaof 192.168.1.100 6379
masterauth yourmasterpassword

# 持久化选项
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"

# 其他优化选项
repl-diskless-sync yes
repl-diskless-sync-delay 5

常见问题排查 #

  1. 复制未生效

    • 确认主从服务器之间的网络连接正常。
    • 检查防火墙设置,确保Redis端口开放。
    • 确认主服务器的bindprotected-mode配置允许从服务器连接。
    • 检查从服务器的Redis日志,查找可能的错误信息。
  2. 认证失败

    • 确认requirepassmasterauth配置正确。
    • 确认密码输入无误。
  3. 数据不同步

    • 确认从服务器处于up状态,且master_link_statusup
    • 检查网络延迟或断开情况。
    • 确认主服务器没有配置replica-ignore-some-keys等过滤规则。

通过以上步骤,你应该能够成功配置Redis的主从复制架构。如果有更多需求或遇到问题,可以参考Redis官方文档获取更详细的信息。