docker 搭建redis主从复制

首先从dockerhub上搜索redis
然后即将docker pull到本地 docker pull redis ,待同步完镜像后。
我们需要对容器进行端口映射,以及文件映射,让redis读取本地的redis.conf文件。redis.conf问价可以去redis官网下载一份redis,然后提取。我们 修改好redis.conf文件,并放到我们映射的路径下,待容器启动就会加载。master节点修改bind,这个参数是用来绑定可以访问该redis的ip地址。
slave节点也是修改这个,然后还要修改replicaof masterip port 参数,masterip 就是master节点的IP,port是他的端口。
然后就是运行docker镜像啦。
docker run -v ~/workspace/redis/master/config/redis.conf:/usr/local/etc/redis/redis.conf -v ~/workspace/redis/master:/data -p 6379:6379 --name master redis redis-server /usr/local/etc/redis/redis.conf 参数 -v是将前面的宿主机的地址映射到容器中的路径。 -p 是将主机端口映射到容器端口。
然后我们修改容器映射到主机的端口。也就是-p。--name 是容器的名字。
我们启动容器。
docker 搭建redis主从复制_第1张图片
这是我们的master节点。同样的,我们修改启动容器的命令,启动另外两个redis节点。修改配置文件redis.conf 和 --name ,以及端口映射。
这样就好了。
但是我在搭建的时候遇到了如下的问题:

1:S 30 Oct 2020 00:24:28.379 * MASTER <-> REPLICA sync started
1:S 30 Oct 2020 00:24:28.380 * Non blocking connect for SYNC fired the event.
1:S 30 Oct 2020 00:24:28.380 * Master replied to PING, replication can continue...
1:S 30 Oct 2020 00:24:28.380 * Partial resynchronization not possible (no cached master)
1:S 30 Oct 2020 00:24:28.380 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master

输入docker inspect master,查看容器的信息;

"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "d146143ce326a6d873f44293e255e1b77453747373ce9a11af450e74757bcce4",
                    "EndpointID": "46962fab58f136d8005a4c1e0773e24e0a2618a887f3248da4815a8f4722238e",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }

可以看到master的ip地址为172.17.0.2,我之前相当然的是本机地址(localhost),去修改配置。
docker 搭建redis主从复制_第2张图片
这下就成功了。

你可能感兴趣的