Skip to main content

Redis 主从模式

服务器IP主机角色
192.168.10.13Redis Master
192.168.10.14Redis Slave

Redis Master

  1. 下载 redis 安装包

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/redis-6.2.16-glibc2.17-amd64.tar.gz
  2. 解压到安装目录

    tar -zxvf redis-6.2.16-glibc2.17-amd64.tar.gz
    mv redis-6.2.16-glibc2.17-amd64 /usr/local/redis
  3. 调整内核参数

    echo 'net.core.somaxconn = 32768' >> /etc/sysctl.conf
    echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
    sysctl -p
  4. 创建 redis 数据目录

    mkdir /data/redis
  5. 修改配置文件

    cat > /usr/local/redis/redis.conf <<EOF
    bind 0.0.0.0
    protected-mode yes
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize no
    supervised no
    pidfile /usr/local/redis/redis.pid
    loglevel notice
    logfile /usr/local/redis/redis.log
    databases 16
    save 900 1
    save 300 10
    save 60 100000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /data/redis
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 0 0 0
    hz 10
    requirepass 123456
    masterauth 123456
    maxmemory 16gb
    maxmemory-policy allkeys-lru
    maxclients 100000
    rename-command KEYS ""
    EOF
    • redis 认证与主从认证的密码为 123456,实际部署时注意替换
  6. 创建 redis 用户授权

    useradd -U -M -s /sbin/nologin redis
    chown -R redis:redis /usr/local/redis/ /data/redis
  7. 配置 systemd 管理

    cat > /etc/systemd/system/redis.service <<EOF
    [Unit]
    Description=Redis
    [Service]
    User=redis
    Group=redis
    TasksMax=infinity
    LimitNOFILE=102400
    LimitNPROC=infinity
    LimitCORE=0
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
    ExecStop=/usr/bin/kill \$MAINPID
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF
  8. 启动 redis 服务并加入开机自启动

    systemctl start redis
    systemctl enable redis

Redis Slave

  1. 下载 redis 安装包

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/redis-6.2.16-glibc2.17-amd64.tar.gz
  2. 解压到安装目录

    tar -zxvf redis-6.2.16-glibc2.17-amd64.tar.gz
    mv redis-6.2.16-glibc2.17-amd64 /usr/local/redis
  3. 调整内核参数

    echo 'net.core.somaxconn = 32768' >> /etc/sysctl.conf
    echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
    sysctl -p
  4. 创建 redis 数据目录

    mkdir /data/redis
  5. 修改配置文件

    cat > /usr/local/redis/redis.conf <<EOF
    bind 0.0.0.0
    protected-mode yes
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize no
    supervised no
    pidfile /usr/local/redis/redis.pid
    loglevel notice
    logfile /usr/local/redis/redis.log
    databases 16
    save 900 1
    save 300 10
    save 60 100000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /data/redis
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 0 0 0
    hz 10
    requirepass 123456
    masterauth 123456
    maxmemory 16gb
    maxmemory-policy allkeys-lru
    maxclients 100000
    rename-command KEYS ""
    slaveof 192.168.1.13 6379
    EOF
    • redis 认证与主从认证的密码为 123456,实际部署时注意替换
    • redis master ip地址注意在实际部署过程中进行替换
  6. 创建 redis 用户授权

    useradd -U -M -s /sbin/nologin redis
    chown -R redis:redis /usr/local/redis/ /data/redis
  7. 配置 systemd 管理

    cat > /etc/systemd/system/redis.service <<EOF
    [Unit]
    Description=Redis
    [Service]
    User=redis
    Group=redis
    TasksMax=infinity
    LimitNOFILE=102400
    LimitNPROC=infinity
    LimitCORE=0
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
    ExecStop=/usr/bin/kill \$MAINPID
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF
  8. 启动 redis 服务并加入开机自启动

    systemctl start redis
    systemctl enable redis

查看主从同步状态

/usr/local/redis/bin/redis-cli -a 123456 info replication