在上一篇,学会了3主3从的Redis集群搭建。那么接下来,我们就来学习Redis集群主从容错切换迁移案例
本次案例从模拟两个场景
1:数据读写存储
a:一个新key数据来了,是否会按照预设的进入槽中?集群是否生效
2:容错切换迁移
a:如果master 6381挂了。那么对应的从6384是否会补位?
下面就开始实操。
数据读写存储操作案例
步骤:
1:启动6台机器构成的集群并通过exec进入
2:对6381新增两个key
查看当前6381机器上是否存在缓存key:
发现没有。
好,那么我们就来set k1 v1.
发现错误了。错误信息:
(error) MOVED 12706 192.168.50.128:6383
这不对啊。set k v是最简单的命令。这个命令都不支持。那么要集群有什么用?
我们来分析原因:
我们现在使用的是集群的,是有hash槽的。如下图:
我们可以看到,master 1 只能管理5461个槽。master2只能管理5462个。master3也是管理5461个槽。
通过之前的学习,我们也知道,集群的时候,是通过把key通过hash值,算出的hash值找到对应具体需要存放在哪个master上的。
通过这些理论知识,我们知道,可能我们set的k1这个key经过hash之后,不在当前master1所管理的0~5460共5461个hash槽中。所以会报错。
那根据这些,我们试试存放其他的呢?
我们可以看到,set k2和k3的时候可以的。但是k1和k4是不行的。
我们看看k1和k4的错误:MOVED 12706和MOOVED 8455
感觉这两个数字应该是hash槽。我们可以看到这两个值都大于master1所能管理的最大槽的值。master1最大槽值为:5460.因为我们使用的是redis-clie -p 6381 这种直连的方式连接的,所以master1存放不了。
3:防止路由 失效,加参数-c 并新增加两个key
如果是集群模式下,我们需要添加一个参数-c。来防止路由失效
我们重新set k1 k4试试。
可以看到,key路由到对应的master上了。
4:查看集群信息
命令公式:
redis-cli --cluster check ip:断开
容错切换迁移
假设master1(6381)宕机了,那么对应的slave4(6384)是否会正常补位。
架构图:
步骤:
1:maser1 6381和从机6384切换,先停止主机6381
使用docker stop 容器id/或者容器names
停止后,等一会。因为集群之间有心跳检查。所以等待一会。
2:再次查看集群信息
因为6381已经宕机了。那么我们进入6382中,注意以集群的方式进入。需要加参数-c。
查看进群情况;
cluster nodes
注意看:我们发现集群还是6个。但是6481这特master,是fail了。6381对应的从及6384现在成了master.说明,从机补位了。
这就实现了故障容错切换迁移。
get下k1 k2 k3 k4看看情况:
可以正常获取
3:先还原之前的3主3从
4:查看集群状态
我们可以看到,虽然6381重新启动了。但是6381却成了6384的从节点了。
下一篇预告:下一篇咱们将实操:主从扩容案例
大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~
结束语
如操作有问题欢迎去 我的 个人博客(www.kaigejava.com)留言或者 微信公众号(凯哥Java)留言交流哦。
本系列教程直通车
直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:
【图文教程】Windows11下安装Docker Desktop
【填坑】在windows系统下安装Docker Desktop后迁移镜像位置
【Docker学习系列】Docker学习1-docker安装
【Docker学习系列】Docker学习2-docker设置镜像加速器
【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令
【Docker学习系列】Docker学习系列3:常用命令之容器命令
【Docker学习系列】Docker学习4-常用命令之重要的容器命令
【Docker教程系列】Docker学习5-Docker镜像理解
【Docker教程系列】Docker学习6-Docker镜像commit操作案例
【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云
【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?
「Docker学习系列教程」10-Docker容器数据卷案例
docker高级篇1-dockeran安装mysql主从复制
docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置
相关推荐
docker-compose启动springboot项目-springboot+redis实战案例。可以参考文章:https://blog.csdn.net/Ber_Bai/article/details/119995240
docker镜像 k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 被墙无法pull,使用nfs方式提供k8s PVC必须的镜像包。 本人小水管拉下来的,拿走不谢。 使用方法: #解压 tar -xvf k8s.gcr.io_sig-...
离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...
加载镜像:docker load -i jdk8.tar
从公共下载 : docker pull igortimoshenko/docker-nginx-basic-auth (或者,您可以从Dockerfile构建映像:docker docker build -t="igortimoshenko/docker-nginx-basic-auth" github....
Docker部署系列:xxl-job分布式调度框架
在离线环境中安装docker比较痛苦,所依赖的第三方库比较多,推荐大家在可联网的主机上将rpm包下载完成后,再打包拷贝到离线的服务器上。 这里准备了一份docker-ce-v18的离线包供下载。 也可以自己手动下载最新包,...
- 虚拟化技术:VMware + Docker ## 项目管理工具 - 项目构建:Maven + Nexus - 代码管理:Git + GitLab - 镜像管理:Docker Registry ## 后台主要技术栈 - 核心框架:Spring Boot + Spring Cloud Alibaba - ORM ...
$mv docker-compose-Linux-x86_64 docker-compose $chmod +x docker-compose $docker-compose version --------------------------------------------------------------- docker-compose version 1.24.0, build 0...
#Apache Flink 集群部署在 Docker 上使用 Docker-Compose ##安装###安装Docker 如果您遇到与 Docker 版本不兼容的 Docker-Compose 版本问题,请尝试curl -sSL https://get.docker.com/ubuntu/ | sudo sh ###Install ...
docker-compose v2.17.2
3. 启动并启用NVIDIA Docker插件:`sudo systemctl start nvidia-docker-plugin && sudo systemctl enable nvidia-docker-plugin` 4. 验证安装:`docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi` ...
26_Docker_DockerFile案例-CMD-ENTRYPOINT命令案例
sudo yum install -y docker-ce docker-ce-cli containerd.io ``` 5. 启动Docker服务并设置开机启动: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 接下来,我们处理NVIDIA-...
在这个45讲的系列中,我们将深入探讨分布式系统的基石、设计模式以及实战应用,帮助你掌握分布式技术的核心知识。 1. **分布式系统基础**: - 分布式系统的定义:分布式系统是由多台独立的计算机通过网络互相连接...
### Docker-compose入门案例:使用Docker Compose运行Tomcat容器 #### 创建`docker-compose.yml`文件 在运行Tomcat容器前,我们需要编写一个`docker-compose.yml`文件。例如,我们可以创建一个名为`tomcat.yml`的...
docker-compose-window-2.14.2.exe免费下载
docker-ubuntu-xfce-vnc-desktop 来自 Docker 存储库 $ docker pull welkineins/ubuntu-xfce-vnc-desktop 建立自己 $ git clone https://github.com/welkineins/docker-ubuntu-xfce-vnc-desktop.git $ docker build...
tvial/docker-mailserver邮箱服务器。可以自己在小网中搭建一个邮件服务器自己玩。启动方法 docker run --name forsaken-mail -itd -p 2255:25 -p 3000:3000 tvial/docker-mailserver:latest