Docker下配置redis主从复制详细过程

本文详细介绍如何在Docker环境下配置Redis主从复制的过程。包括搭建主节点与从节点的步骤、配置文件调整、解决常见错误及验证复制是否成功的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker下配置redis主从复制详细过程

2019年03月19日 16:00:37 累了困了喝六神 阅读数:116 标签: redis主从 docker docker搭建redis docker-redis 更多

个人分类: 学习笔记

环境

  • 同一宿主机两个docker容器,请提前安装好docker
  • master:172.17.0.2
  • slave:172.17.0.3

配置redis.conf

[root@server1 ~]# tar zxf redis-4.0.8.tar.gz
[root@server1 ~]# cd redis-4.0.8/
[root@server1 ~]# mkdir -p /mnt/redis/conf.d
[root@server1 ~]# cp redis.conf /mnt/redis/conf.d/redis-master.conf
[root@server1 ~]# cp redis.conf /mnt/redis/conf.d/redis-slave.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 主节点 redis-master.conf

    [root@server1 ~]# cd /mnt/redis/conf.d/
    vim redis-master.conf
      69 bind 0.0.0.0                                 # 连接开放
      88 protected-mode no                            # 保护模式关闭 
     136 daemonize yes                                # 服务后台运行  
     814 cluster-enabled yes
     822 cluster-config-file nodes-6379.conf
     827 cluster-node-timeout 15000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 从节点 redis-slave.conf

    [root@server1 conf.d]# vim redis-slave.conf
      69 bind 0.0.0.0                                 # 连接开放
      88 protected-mode no                            # 保护模式关闭 
     136 daemonize yes                                # 服务后台运行 
    
    • 1
    • 2
    • 3
    • 4

redis-master容器搭建

  • 获取镜像,创建容器

    [root@server1 ~]# docker pull redis
    [root@swarm1 conf.d]# docker run -it --name redis-master -v /mnt/redis/conf.d/redis-master.conf:/usr/local/etc/redis/redis.conf -d -p 6300:6379 redis /bin/bash
    [root@swarm1 conf.d]# docker inspect redis-master | grep IPA   # 挂载.conf文件,宿主机端口6300
          "SecondaryIPAddresses": null,
          "IPAddress": "172.17.0.2",
                  "IPAMConfig": null,
                  "IPAddress": "172.17.0.2",
    [root@swarm1 conf.d]# docker attach redis-master
    root@077db232f8b1:/data# redis-server /usr/local/etc/redis/redis.conf
    root@077db232f8b1:/data# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    
  • redis-master写入数据时报错:(error)CLUSTERDOWN Hash slot not served”
    在这里插入图片描述
    原因: 运行容器时挂载的 /mnt/redis/conf.d/redis-master.conf 文件中开启了cluster-enable,注释该内容后重新运行容器

    [root@server1 ~]# cd /mnt/redis/conf.d/
    [root@server1 conf.d]# vim redis-master.conf
     814 #cluster-enabled yes
    [root@swarm1 conf.d]# docker run -it --name redis-master -v /mnt/redis/conf.d/redis-master.conf:/usr/local/etc/redis/redis.conf -d -p 6300:6379 redis /bin/bash
    077db232f8b1d257185190e7f21b694e8db8df0ba9ccf497d82bfe5ebf08bad3
    [root@swarm1 conf.d]# docker attach redis-master 
    root@077db232f8b1:/data# redis-server /usr/local/etc/redis/redis.conf
    root@077db232f8b1:/data# redis-cli
    127.0.0.1:6379> set new old                           # 测试数据创建成功
    OK
    

redis-slave容器搭建

  • 容器创建

    [root@swarm1 conf.d]# docker run -it --name redis-slave -v /mnt/redis/conf.d/redis-slave.conf:/usr/local/etc/redis/redis.conf -d -p 6301:6379 redis /bin/bash
    [root@swarm1 conf.d]# docker inspect redis-slave | grep IPA
          "SecondaryIPAddresses": null,
          "IPAddress": "172.17.0.3",
                  "IPAMConfig": null,
                  "IPAddress": "172.17.0.3",
    [root@swarm1 conf.d]# docker attach redis-master
    root@077db232f8b1:/data# redis-server /usr/local/etc/redis/redis.conf
    root@574c798128ee:/data# redis-cli
    127.0.0.1:6379> slaveof 172.17.0.2 6379              # 链接到master节点,因同一宿主机中的容器通过docker0进行网络
    OK                                                   # 通信,即就相当于同属于一个子网中,所以直接连接容器内服务端口
    127.0.0.1:6379> info replication
    # Replication
    role:slave                                    # 该容器redis服务为从节点
    master_host:172.17.0.2                        # 主节点 
    master_port:6300
    master_link_status:down
    
  • 主节点查看

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=172.17.0.3,port=6379,state=online,offset=28,lag=1             # slave容器ip
    127.0.0.1:6379> get new                              # 测试数据成功 
    "old"
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值