【架构】docker实现主从容错切换迁移【案例2/4】

实现主从容错切换迁移

在3主3从【案例1/4】的基础上,实现主从容错切换迁移,示意图如下:

一、数据读写存储

1、启动6机构成的集群并通过exec进入(任意一台都行):

docker exec -it redis-node-1 /bin/bash

2、对6381新增两个key

# 登陆任意redis(重点:此为单机登陆命令)
root@localhost:/data$ redis-cli -p 6381

# 查看数据,为空
127.0.0.1:6381> keys *
(empty array)

# 设置k1=v1 失败
127.0.0.1:6381> set k1 v1
(error) MOVED 12706 12.114.161.16:6383

# 设置k2=v2 、k3=v3 成功
127.0.0.1:6381> set k2 v2
OK
127.0.0.1:6381> set k3 v3
OK

# 设置k4=v4 失败
127.0.0.1:6381> set k4 v4
(error) MOVED 8455 12.114.161.16:6382

因为,总共有16384个槽位,平均分给3个主机,每个槽位段分别为16384/3个槽位。
所以报错原因是:登陆的第一台机器存储的槽位区间,无法存储k1和k4的值。【解决办法:见第3步】

在这里插入图片描述

3、集群的形式登陆【redis-cli -p 6381 -c
登陆命令 redis-cli -p 6381 -c ,加入**-c**,代表以集群的形式登陆后,优化路由后,插入信息时,可根据哈希槽位进行自由切换。不再局限于某一台机器。

# 以集群的形式登陆(重点:此为集群登陆命令)
root@localhost:/data# redis-cli -p 6381 -c
127.0.0.1:6381> keys *
1) "k3"
2) "k2"
127.0.0.1:6381> set k1 v1
-> Redirected to slot [12706] located at 12.114.161.16:6383
OK
12.114.161.16:6383> # 已经切换到6383号机器
12.114.161.16:6383> set k4 v4
-> Redirected to slot [8455] located at 12.114.161.16:6382
OK
12.114.161.16:6382> # 已经切换到6382号机器

4、查看集群信息【redis-cli --cluster check ip地址:端口

# 进入任意台节点机器
docker exec -it redis-node-1 /bin/bash

# 查看集群槽位信息
redis-cli --cluster check 12.114.161.16:6381
root@localhost:/data# redis-cli --cluster check 12.114.161.16:6381

# 该主机   数据值 | 哈希槽位数 | 从主机个数
12.114.161.16:6381 (6e961a47...) -> 2 keys | 5461 slots | 1 slaves.  
12.114.161.16:6382 (f097fec9...) -> 1 keys | 5462 slots | 1 slaves.
12.114.161.16:6383 (78ac7be1...) -> 1 keys | 5461 slots | 1 slaves.
[OK] 4 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 12.114.161.16:6381)
M: 6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386
   slots: (0 slots) slave
   replicates 6e961a4765b555189708bebb69badf7dfad25cd5
M: f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384
   slots: (0 slots) slave
   replicates f097fec937f54d147d316c1c62e26cb67c9fd059
M: 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385
   slots: (0 slots) slave
   replicates 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

显示如下内容:
1、3台主机 、3台从机器的信息(id、端口、存储数据等)
2、每台主机的哈希槽位区间、和存取数值多少

二、容错切换迁移

选择任意一组“主从机器”,① 如果主机宕机后,从机是否后替补上;②如果宕机的主机再次恢复,是否会重新“夺回” 主主机地位,还是顺延作为“从机”?
在这里插入图片描述

1、先停止主机redis-node-1,再次查看集群信息。命令:

# 停止主机redis-node-1
[root@localhost ~]# docker stop redis-node-1
redis-node-1

# 查看集群节点信息
12.114.161.16:6386> cluster nodes
12.114.161.16:6386> cluster nodes
f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382@16382 master - 0 1705309024699 2 connected 5461-10922
78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383@16383 master - 0 1705309023000 3 connected 10923-16383
6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381@16381 master,fail - 1705308720558 1705308717000 1 disconnected
0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384@16384 slave f097fec937f54d147d316c1c62e26cb67c9fd059 0 1705309024000 2 connected
4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386@16386 myself,master - 0 1705309023000 7 connected 0-5460
9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385@16385 slave 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 0 1705309025703 3 connected

说明:

  • 6381@16381 master,fail : 该主机(redis-node-1)为master,已宕机
  • 6386@16386 myself,master :该主机(redis-node-6)顶替成为master

2、先还原之前的3主3从,再查看集群信息

# 停止主机redis-node-1
[root@localhost ~]# docker start redis-node-1
redis-node-1

# 查看集群节点信息
12.114.161.16:6386> cluster nodes
12.114.161.16:6386> cluster nodes
f097fec937f54d147d316c1c62e26cb67c9fd059 12.114.161.16:6382@16382 master - 0 1705309203416 2 connected 5461-10922
78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 12.114.161.16:6383@16383 master - 0 1705309206000 3 connected 10923-16383
6e961a4765b555189708bebb69badf7dfad25cd5 12.114.161.16:6381@16381 slave 4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 0 1705309205421 7 connected
0e34147ce2544cd90f5cce78d5493ae9e8625dfe 12.114.161.16:6384@16384 slave f097fec937f54d147d316c1c62e26cb67c9fd059 0 1705309207426 2 connected
4ed46e0368698cd9d5af2ee84631c878b8ebc4d0 12.114.161.16:6386@16386 myself,master - 0 1705309204000 7 connected 0-5460
9bc2417a9cd6545ef2445eb4aa0610d586acd73b 12.114.161.16:6385@16385 slave 78ac7be13522bd4ffd6fcf900c6c149c6938ecc2 0 1705309206422 3 connected

说明:

  • 6381@16381 slave : 该主机(redis-node-1)虽然已经恢复,但沦为为slave从机器
  • 6386@16386 myself,master:该主机(redis-node-6)没有变化,依然为master

总结:集群中,master主机宕机后,slave主机顶替上来,成为新master主机; 而且宕机的机器恢复后,将会成为slave机器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

封装日期时间组件

概述 该组件包含日期选择&#xff0c;任意时间选择、固定时间点选择。 子组件代码(date-picker.vue) <template><div id"date_picker"><el-popover placement"top" width"322" trigger"click" ref"popover&quo…

OpenCV-Python(35):BRIEF算法

算法介绍 BRIEF&#xff08;Binary Robust Independent Elementary Features&#xff09;是一种用于计算机视觉中特征点描述子的算法。它是一种二进制描述子&#xff0c;通过比较图像上不同位置的像素值来生成特征点的描述子。 BRIEF算法的基本思想是选取一组固定的像素对&…

[VGG团队论文阅读]Free3D: Consistent Novel View Synthesis without 3D Representation

Vedaldi, C. Z. A. (n.d.). Free3D: Consistent Novel View Synthesis without 3D Representation. Chuanxiaz.com. https://chuanxiaz.com/free3d/static/videos/Free3D.pdf Free3D: 无需3D表示的一致新视角合成 Visual Geometry Group, University of Oxford 摘要 我们介绍…

Radzen Blazor Studio 脚手架框架解读

背景 组织管理管理准备使用Blazor这个工具实现&#xff0c;因为其有对应的 scaffold 脚手架&#xff0c;先构建数据库&#xff0c;然后通过向导&#xff0c;生成CRUD以及对应的接口&#xff0c;那么有必要看一下&#xff0c;其内部的代码结构是什么样的。 结构 接口层 有两类…

MIT 6s081 blog1.xv6内存管理

xv6内存管理部分 xv6内存布局 内核地址空间 如xv6指导书中图3.3&#xff1a;从0x80000000开始的地址为内核地址空间&#xff0c;CLINT、PLIC、uart0、virtio disk等为I/O设备&#xff08;内存映射I/O&#xff09;&#xff0c;可以看到xv6虚拟地址到物理地址的映射&#xff0…

YOLOv8目标检测中数据集各部分的作用

自学答疑使用&#xff0c;持续更新… 在目标检测任务中&#xff0c;通常将整个数据集划分为训练集&#xff08;training set&#xff09;、验证集&#xff08;validation set&#xff09;和测试集&#xff08;test set&#xff09;。这三个数据集在训练和评估过程中具有不同的…

水经注语义化版本控制规范1.2.0版

为了更好的对产品进行版本管理&#xff0c;我们曾基于业界的一些权威参考资料&#xff0c;梳理过两版水经注产品的版本控制规范。 但随着多个平台的产品研发&#xff0c;以及产品在各平台的更新发布&#xff0c;再结合我们的实际情况&#xff0c;现在对版本控制规范进行一次升…

手把手教你使用Django如何连接Mysql

目录 一、引言 二、准备工作 三、配置Django连接MySQL 1、安装MySQL驱动&#xff1a; 2、配置数据库设置&#xff1a; 3、 创建数据库迁移&#xff1a; 四、编写Django模型和视图函数 1、编写模型&#xff1a; 2. 编写视图函数&#xff1a; 3. 编写模板&#xff1a; …

帆软笔记-决策表报对象使用(两表格联动)

效果描述如下&#xff1a; 数据库中有个聚合商表&#xff0c;和一个储能表&#xff0c;储能属于聚合商&#xff0c;桩表中有个字段是所属聚合商。 要求帆软有2个表格&#xff0c;点击某个聚合商&#xff0c;展示指定的储能数据。 操作&#xff1a; 帆软选中表格单元&#xf…

【揭秘】武汉建筑安全员ABC证报考内幕,社保问题竟成硬伤!

【揭秘】武汉建筑安全员ABC证报考内幕&#xff0c;社保问题竟成硬伤&#xff01; 没有武汉社保可以报考建筑安全员C3证建安C证吗&#xff1f; 武汉市三类人员安全员ABC报考&#xff0c;要求建筑公司给专职安全、项目经理、技术负责人等这些人员缴纳社保才可以报考建筑安全员A…

通信电缆的UL认证安全标准UL 444详情介绍

在介绍相关标准之前先介绍一下UL认证和UL测试报告的区别 UL认证是自愿性的认证&#xff0c;需要检测产品和审核工厂&#xff0c;每个季度审核一次&#xff0c;费用高、时间久&#xff0c;而且审厂非常的严格。 UL测试报告是根据产品选用相应的UL标准进行测试合格后&#xff0…

Unity对应SDK和NDK版本的对照表

官网&#xff1a;Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了&#xff0c;就记录下对Android SDK的设置&#xff0c;要与Unity的版本对应&#xff0c;否则会出现很多莫名奇妙的问题。 打开…

【HarmonyOS4.0】第十一篇-ArkUI布局容器组件(三)

五、格栅布局容器 GridContainer纵向排布栅格布局容器&#xff0c;仅在栅格布局场景中使用。该组件不再维护&#xff0c;推荐使用新组件GridCol、GridRow。 5.1.栅格容器GridRow 栅格容器组件&#xff0c;仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 5.1.1.接口 G…

污水泵站为何会导致污染事件发生及如何预防?

污水泵站是废水处理系统中至关重要的组成部分&#xff0c;但它们的故障可能导致严重的污染事件。本文将深入探讨污水泵站导致污染的原因&#xff0c;并介绍先进的预防性技术&#xff0c;如PreMaint&#xff0c;来有效应对这些问题。 一、污水泵站的污染事件发生原因 1. 不适当…

2023转转技术年货发布啦

在这个信息爆炸的时代&#xff0c;技术的进步变得前所未有的快速和多样化&#xff0c;技术已然成为驱动社会进步的重要动力之一。作为技术从业者或者对技术感兴趣的读者&#xff0c;我们需要不断学习和掌握最新的技术趋势和解决方案&#xff0c;以应对不断变化的挑战。技术年货…

赴美生子月子机构要怎么选?

首先&#xff0c;了解月子机构的背景和信誉度非常重要。查看机构是否合法注册&#xff0c;是否有任何不良记录或投诉。通过与机构的交流和与其他妈妈.的口碑推.荐&#xff0c;了解机构的信誉和口碑。 要选择正规的赴美生子机构。这个很重要哦!正规的机构要有合法的执照&#x…

机器学习在什么场景下最常用-九五小庞

机器学习在多个场景中都有广泛的应用&#xff0c;下面是一些常见的应用场景&#xff1a; 自然语言处理&#xff08;NLP&#xff09;&#xff1a;如语音识别、自动翻译、情感分析、垃圾邮件过滤等。数据挖掘和分析&#xff1a;如市场分析、用户画像、推荐系统、欺诈检测等。智能…

高级分布式系统-第15讲 分布式机器学习--分布式机器学习算法

分布式机器学习算法 按照通信步调&#xff0c;大致可以分为同步算法和异步算法两大类。 同步算法下&#xff0c;通信过程中有一个显式的全局同步状态&#xff0c;称之为同步屏障。当工作节点运行到同步屏障 &#xff0c;就会进入等待状态&#xff0c;直到其工作节点均运行到同…

4.2 MATRIX MULTIPLICATION

矩阵-矩阵乘法&#xff0c;或简称矩阵乘法&#xff0c;在 i X j&#xff08;i 行 by j 列&#xff09;矩阵 M 和 j x k 矩阵 N 之间产生 i X k 矩阵P。矩阵乘法是基本线性代数子程序&#xff08;BLAS&#xff09;标准的重要组成部分&#xff08;见第3章中的“线性代数函数”边栏…

原生IP代理如何帮助跨境电商店铺做谷歌广告投放业务的?

随着全球化的发展&#xff0c;越来越多的电商店铺开始拓展跨境业务&#xff0c;而谷歌广告作为全球最大的广告平台之一&#xff0c;为跨境电商店铺带来了巨大的收益和商机。 然而&#xff0c;由于谷歌广告的地域限制和审查机制&#xff0c;店铺很难直接进行投放业务&#xff0…