docker搭建redis集群(三主三从)及重启redis集群

一、docker搭建redis集群

1、下载redis镜像文件

从远程仓库先拉取一下redis的镜像文件,如果已经提前安装过镜像的,可以跳过此步骤:

docker pull redis:6.0.8

2、查看本地拉取到镜像文件

docker images

eb58659b8d954fc1882394fea4d8db2a.png看到图上标识,就说明当前镜像文件已经下载好了。

3、启动6台redis docker实例

通过镜像文件,分别启动6台redis容器实例,并且数据卷挂载到宿主机上(保障容器被意外删除后数据不丢失):

#第一台redis容器实例启动,输入下列命令并回车
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381

#第二台redis容器实例启动,输入下列命令并回车
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382

#第三台redis实例,注意修改容器名字和端口
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383

#第四台
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384

#第五台
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385

#第六台
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

每一台实例都是按照上述命令安装,只修改一下节点的名字和端口号即可:

4、查看6台redis容器是否启动成功

docker ps 

5、将6台redis容器实例搭建成集群关系

先进入其中一台redis容器:

#进入redis-node-1这个节点的内部
docker exec -it redis-node-1 /bin/bash

然后开始搭建主从关系:

#简单的三主三从就是一台主机、对应一台复制机,所以--cluster-replicas 为1
redis-cli --cluster create 192.168.245.129:6381 192.168.245.129:6382 192.168.245.129:6383 192.168.245.129:6384 192.168.245.129:6385 192.168.245.129:6386 --cluster-replicas 1

#注意将ip修改为自己的宿主机ip,端口对应之前创建的节点port

当出现提示“Can I set the above configuration? (type 'yes' to accept):”的时候,输入yes即可;

这样就可以完成咱们三主三从的集群搭建了;

355d0a60e0904b8e898bc5662c55582d.png

5、查看集群的状态的三种方式

可以进入任意一个redis容器内部

#先通过容器名字或者容器的id进入容器内部
docker exec -it redis-node-1 /bin/bash

#然后进入6381端口的这个客户端,-c表示以集群的方式进入
redis-cli -p 6381 -c
  • 通过cluster info 命令查看

8c0f0a4fa887416a9eee8397e4001cee.png

  • 通过cluster nodes查看

#查询集群信息的第二种方式
cluster nodes

结果:

fad176e840384e8cb338742c7c32e268.png

  • 通过redis-cli --cluster check 192.168.245.129:6381  查看(改成自己的ip哈)

具体操作:9310e7c8f29e45aa97f4e194ce5faa9c.png

6、数据的存取测试

比如在redis-node-1(port:6381)当中存数据:

6eb934a6a05a4c96a0327fcbec6c1b69.png

在redis-node-5(port:6385)当中取数据呢?

e298c470e19f4e6dbc52a9feebb398bc.png

二、重启redis docker 集群

当redis容器意外关闭之后,存在两个问题:

Q1:里边存储的数据会丢失吗?

Q2:想要重启redis集群怎么办?

1、redis实例当中存储的数据会丢失吗?

由于咱们之前在创建redis实例的时候,已经做了数据卷的挂载,数据是和宿主机同在的,在容器当中保存的数据,在挂载的文件目录当中还可以找到:

进入挂载到宿主机的文件/data/redis/share/redis-node-1当中,可以看到存在有持久化的文件:dump.rdb和appendonly.aof。

之前启动redis实例的时候,同时做了数据卷的挂载:

270f3e2b7e634d27acdcfcde9b45f6ab.png

宿主机挂载的文件:

8becfc808bf346d7bc5fea3061c4e76c.png

2、怎么重启集群?还需要重新做集群配置吗?

  • 先查看一下各个redis容器状态

#先查看一下所有的容器的状态,注意加-a可以显示所有容器,包括已经退出的
docker ps -a

比如: 

4049a0c3b1cc43b3a5767b87aaa10659.png

所有的redis实例都已经关闭了!

  • 重启redis的各个容器:

#可以通过start 容器id或者容器name启动
docker start redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5 redis-node-6

 此时再查看docker当中的各个容器状态:

c99eaa7f8ac44bdba380213330612ac8.png 

  • 然后进入任意一台redis容器当中,查看是否还存在集群的状态: 

#进入redis-node-1的容器当中
docker exec -it redis-node-1 /bin/bash

#第一部分讲了有三种查看集群状态的方式,随意用一种都可以

 d5d336f6952a4107a976bc5458e657d1.png

可以看到,集群的状态还存在,不需要重新搭建集群模式了!

  • 以集群模式进入任意一个redis客户端,验证一下数据是否还存在: 

67d13f69f3744199af9e109112272db0.png 

可以看到数据依然存在!

 三、小结

1、搭建redis容器集群时:

启动6台redis实例:启动的同时最好完成数据卷挂载到宿主机(避免容器被误删,数据没有了),并且,为了保障持久化数据的完整性,最好开启aof持久化;

构建集群关系:需要进入任意一台redis容器内部,然后去通过:redis-cli --cluster create 6台redis的ip:端口  --cluster-replicas 1   ,完成构建集群关系;

最后有三种查看集群关系的方式;

2、重启redis docker集群:

 只需要重启被关闭的redis实例即可,不需要重新构建集群关系!之前存储的数据,也没有丢失!

 

 

  • 19
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值