docker搭建redis集群(三主三从)及重启redis集群 redis扩容新增集群

news/发布时间2024/5/20 6:58:48

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

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

docker pull redis:6.0.8
2、查看本地拉取到镜像文件
docker images

 


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

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即可;

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

 

 

5、查看集群的状态的三种方式
可以进入任意一个redis容器内部:

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

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

 


通过cluster nodes查看
#查询集群信息的第二种方式
cluster nodes
结果:

 

 

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

 

6、数据的存取测试
比如在redis-node-1(port:6381)当中存数据:

 

 

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

 

 

二、重启redis docker 集群
当redis容器意外关闭之后,存在两个问题:

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

 

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

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

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

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

 

宿主机挂载的文件:

 

 

2、怎么重启集群?还需要重新做集群配置吗?
先查看一下各个redis容器状态
#先查看一下所有的容器的状态,注意加-a可以显示所有容器,包括已经退出的
docker ps -a
比如:

 

 

所有的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当中的各个容器状态:

 

 

然后进入任意一台redis容器当中,查看是否还存在集群的状态:
#进入redis-node-1的容器当中
docker exec -it redis-node-1 /bin/bash

 


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

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

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

可以看到数据依然存在!

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

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

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

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

原文链接:https://blog.csdn.net/2301_78149288/article/details/135844683

 

 

 

 

 

新增redis 四主四从

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

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

进入 redis-node-7 节点

 redis-cli --cluster add-node 192.168.0.163:6387 192.168.0.163:6381  增加节点

 

 redis-cli --cluster check 192.168.0.163:6381 查看主从情况

 6387没有槽位,需要进一步分槽位 运行redis-cli --cluster reshard 192.168.0.163:6381

 

 

 为6387分配从库6388

 redis-cli --cluster add-node 192.168.0.163:6388 192.168.0.163:6387 --cluster-slave --cluster-master-id  8aab988fc5e97b0ca3c24ce6e149e8e1433ed990   (6387的iD)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/16547448.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

ISCC线上赛2023

ISCC线上赛2023 web web1双重base解码得到flag web3 F12控制台查看可找到loveStory.php Enc.php download.php,loveStory.php为反序列源码 boy::__destruct() -->girl()::__call()-->helper()::__isset()-->boy()::__toString()-->helper()::__get()-->love_st…

tomcat的cookie报错

1.File–>project structure -> Modules(+)–>java—>选择servlet-api.jar 需要添加servlet.api.jar包依赖

[转帖]Oracle Linux 9.3 正式版发布 - Oracle 提供支持 RHEL 兼容发行版

sysin2023-11-21 上海 阅读 5 分钟 Oracle Linux 9.3 正式版发布 - Oracle 提供支持 RHEL 兼容发行版 Oracle Linux with Unbreakable Enterprise Kernel (UEK) & Red Hat compatible kernel (RHCK) 请访问原文链接:https://sysin.org/blog/oracle-linux-9/,查看最新版。…

OpenVX技术图例(一)

OpenVX技术图例(一) 参考文献链接 https://registry.khronos.org/OpenVX/specs/1.1/html/index.html人工智能芯片与自动驾驶

C++ 数据输入cin (解决CLoin输入中文程序出错)

数据输入cin语法:cin >> 变量 解决 CLoin 使用cin输入中文程序无法正常运行按住Ctrl+alt+shift+/键 弹出对话框选择注册表取消勾选run.process.with.pty

C++数据类型

整型C++除了int类型 还有其他类型的数据,所占空间也不一样 sizeof() 函数——得到数据所占的字节#include "iostream" using namespace std;int main() {system("chcp 65001");long long num = 20;cout << "long long 类型占" << s…