docker 配置redis主从复制
一、安装Redis
1.拉取官方镜像
[root@localhost /]# docker pull redis:5.0.7
2.下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为redis,标签为5.0.7的镜像。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/redis 5.0.7 dcf9ec9265e0 3 months ago 98.2 MB
3.运行容器
[root@localhost ~]# docker run --name redis-6379 -p 6379:6379 -d redis:5.0.7 redis-server
二、主从复制
1.运行redis镜像
首先使用docker启动3个redis容器服务,分别使用到6379、6380、6381端口
docker run --name redis-6379 -p 6379:6379 -d redis:3.2 redis-server docker run --name redis-6380 -p 6380:6379 -d redis:3.2 redis-server docker run --name redis-6381 -p 6381:6379 -d redis:3.2 redis-server
2.配置redis集群
使用如下命令查看容器内网的ip地址等信息
docker inspect containerid(容器ID)
3个redis的内网ip地址为:
redis-6379:172.17.0.3:6379 redis-6380:172.17.0.4:6379 redis-6381:172.17.0.5:6379
进入docker容器内部,查看当前redis角色(主master还是从slave)(命令:info replication)
127.0.0.1:6379> info replication # Replication role:master connected_slaves:0 master_replid:a44f60e68f4d128750c2d09a00c9d4a1b6b643d1 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
可以看到当前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.3:6379
[root@localhost ~]# docker exec -it redis-6381 redis-cli 127.0.0.1:6379> slaveof 172.17.0.3 6379 OK
再次查看主机info,已经有两个从机了(.4 和 .5)
127.0.0.1:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=172.17.0.5,port=6379,state=online,offset=308,lag=1 slave1:ip=172.17.0.6,port=6379,state=online,offset=308,lag=1 master_replid:2392e41f862b441aed8e66c6fe9483e772c671b6 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:308 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:308
至此,redis下的主从配置就ok了。