Docker方式实现Redis主从方式集群(超详细)

  • Post author:
  • Post category:其他


首先要了解redis的集群概念,这里不再赘述

首先,我们启用三个不同的端口作为从机

docker run -d -p 6379:6379 --name redis01 redis
docker run -d -p 6380:6379 ----name redis02 redis
docker run -d -p 6381:6379 -name redis03 redis

6382 作为主机

docker run -d -p 6382:6379 --name redismaster redis

查看镜像运行

docker ps

image-20210318230651756

查看主机的元数据查看容器内网地址(IPAddress:172.17.0.6),后面需要用到 ip 地址来绑定主机

docker inspect redismaster # 要把主机的地址记下

image-20210318203823019 其中一个从机的地址

分别进入从机 redis01、 redis02 、redis03 内部

执行命令

[root@localhost ~]# docker exec -it redis01 /bin/bash # 以交互模式进入
root@f90aa020be57:/data# redis-cli #启动redis客户端
127.0.0.1:6379> slaveOf 172.17.06 6379 #认定ip 端口为主机
OK

127.0.0.1:6379> info replication # 查看主从信息
# Replication
role:slave # 当前为从节点
master_host:172.17.06 # 主节点ip
master_port:6379 # 主节点端口
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:28
slave_priority:100
slave_read_only:1
connected_slaves:2
slave0:ip=172.17.0.4,port=6379,state=online,offset=28,lag=0
slave1:ip=172.17.0.5,port=6379,state=online,offset=28,lag=0
master_failover_state:no-failover
master_replid:27a0077a51642d85be1932a30a93f95f9dfa21f5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

这样我们就配置好了一个从节点,重复以上命令把从机2和从机3也配置了

我们在主节点redismaster添加数据

set k1 v1

image-20210318230849078

然后在从节点redis01中查看

image-20210318230931946

可以查看到 k1,但是要注意从节点只能读不能写(即 set 和其他相关的操作)

注意:以上使用的是命令的方式设置主从节点,一旦主节点宕机(关机),从节点将变为主节点。

采用配置文件的方式可以保证主从关系的稳定性,在这里不再做演示,只需要在开始时容器启动的时候指定配置文件启动即可



版权声明:本文为qq_44241252原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。