文
章
目
录
章
目
录
本文重点讲解如何使用docker搭建redis7集群相关知识,我们来一下看下搭建过程!
前言
今天发现有一台被拿来搭建redis集群的服务器到期了,本来这台服务器就是白嫖的,也懒得续费。
然后我就遇到了一个非常恶心的问题,我当时是直接把一主一从全给搭建到这个服务器上了,就导致这一组直接噶了,既不能删除slave也不能删除master,更不能重新分配槽位。
更恐怖的是我当时学docker时没有做笔记,现在基本忘完了,现在看着曾经搭建的集群,我是越看越觉得陌生。今天重新搭建一个
实操
1,下载redis7镜像,这里就不展开了。
2. 启动容器
执行以下代码
docker run -d --name redis-node-3 --net host --privileged=true -v /var/opt/redis-cluster-data/node3:/data redis:7.0.0 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-4 --net host --privileged=true -v /var/opt/redis-cluster-data/node4:/data redis:7.0.0 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-5 --net host --privileged=true -v /var/opt/redis-cluster-data/node5:/data redis:7.0.0 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-6 --net host --privileged=true -v /var/opt/redis-cluster-data/node6:/data redis:7.0.0 --cluster-enabled yes --appendonly yes --port 6384
我上面只贴了4个,我先讲一下这段代码的意思,大家学会后自己改巴该巴再用
-d
表示在后台运行--name redis-node-3
表示名字为redis-node-3
--net host
表示容器内端口绑定容器外端口,内外一致。--privileged=true
表示容器在内部也有root权限,防止缺少权限容器搭建不起来-v /var/opt/redis-cluster-data/node6:/data
挂载容器券,把我们创建的/var/opt/redis-cluster-data/node6
文件夹给这个容器用,等于容器内的/data
目录内的内容要在这2个地方都有,redis也会自动在这个地方保存类似于配置,日志,数据备份之类的,不用担心容器损坏后数据丢失。--cluster-enabled yes
开启集群--appendonly yes
开启aof文件备份--port 6384
指定端口
开始建集群
exec -it redis-node-1 /bin/bash
进入一台容器
redis-cli --cluster create --cluster-replicas 1 master1的ip:端口号 master2的ip:端口号 master3的ip:端口号 任意slave的ip:端口号 任意slave的ip:端口号 任意slave的ip:端口号 --cluster-replicas 1
--cluster-replicas 1
表示创建格式为1主1从
分配槽位
为集群配置密码
使用 redis-cli -c -p 6381 进入redis,执行下面的命令设置密码
config set masterauth passwd123
config set requirepass passwd123
这样设密码弊端
专门提一下,这样设置密码只在容器未关闭的情况下有效,但会同步到所有集群实例,不过实际情况是我们开了集群不出问题就不会关掉它,而且即便关掉重启,重新设置一下就行了,多2行代码的事情。大家仁者见仁智者见智吧,喜欢给每个容器配置文件加一遍密码大家可以去网上搜。
以上就是如何使用docker搭建redis7集群的全部内容,希望对你有帮助!