docker小白第十天

redis集群主从容错切换案例

3主3从的redis集群,某个主机宕机了,需要对应的从机补位。

docker exec -it redis-node-1 /bin/bash
# 进入容器1的命令行
redis-cli -p 6381
# 进入节点1的命令行
cluster nodes
# 查看集群信息

在这里插入图片描述
可以看到1号和6号对应是主从关系。此时尝试停掉节点1.

docker stop redis-node-1
# 推出redis节点、退出容器命令行,在linux虚机上执行命令
docker exec -it redis-node-2 /bin/bash
# 进入redis容器2查看节点信息
redis-cli -p 6382
cluster nodes

可以看到redis节点1已经failed了,redis节点6的信息变成了master,不再是之前的slave。
在这里插入图片描述
此时再启动之前停掉的redis节点1.通过xshell在开个连接窗口,在linux虚机的命令行执行,不是在容器内执行。

docker start redis-node-1
# 启动节点1

然后在还没退出的redis节点2查看集群信息。cluster nodes此时节点1变成了从机。不再是之前的主机。

在这里插入图片描述
那么此时如果想在把redis节点1作为主机,redis节点6作为从机,需要进行以下步骤。

# 停掉节点6,给节点1一个自动上位的机会。
docker stop redis-node-6
# 重启节点6,就变成了从机。
docker start redis-node-6

redis集群主从扩容需求案例

在之前3主3从的基础上,新增一对机器变成4主4从。

新建两个容器redis节点

docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
# 依次修改容器名称、容器卷名称、端口号,创建7和8两个redis节点。
dcoker ps

在这里插入图片描述

进入新增的redis容器内部

进入redis节点7的容器内部命令行,将节点7加入集群。

docker exec -it redis-node-7 /bin/bash
redis-cli --cluster add-node 192.168.0.175:6387 192.168.0.175:6381
# 6387是集群内要新增的节点,6381是集群节点内的领路人,要通过节点1进行引导加入。其中的ip地址换做自己的linux虚机的实际ip。

可以看到已经加入集群
在这里插入图片描述

查看集群内更详细信息。
redis-cli --cluster check 192.168.0.175:6381

可以看到集群内是有redis节点7的,但是显示没有哈希槽位分配。
在这里插入图片描述

重新分配槽号

# 将redis节点1为开头的集群,进行哈希槽位的重分配。
redis-cli --cluster reshard 192.168.0.175:6381

执行完该命令会遇到如下选项

How many slots do you want to move (from 1 to 163984)?
# 因为是要配置成4主4从,所以16384/4=4096,填4096
What is the receiving node ID?
# 将输入查看集群信息命令后的redis节点7的 node id复制
Source node #1:
# 填all

输入命令再次查看集群信息

redis-cli --cluster check 192.168.0.175:6381

可以看到redis节点7已经有哈希槽位了。
在这里插入图片描述
同时6387这个节点,其槽位不是连续的,是分段式的,是因为全部重新分配成本太高,所以之前的3个主节点各自匀出部分槽位,给新节点。

M: 3376a19ecaa1a0c13945b791875a5efbf1bd2fc7 192.168.0.175:6387 slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master

配置对应从节点

为主节点7配置挂载从节点8.并再次检查redis集群信息。

redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

redis-cli --cluster add-node 192.168.0.175:6388  192.168.0.175:6387 --cluster-slave --cluster-master-id 3376a19ecaa1a0c13945b791875a5efbf1bd2fc7
redis-cli --cluster check 192.168.0.175:6381

可以看到配置成功。
在这里插入图片描述

redis集群缩容案例

先删除从节点redis8,再删除对应的主节点redis7,恢复成之前的3主3从状态。先检查集群情况获取redis节点8的节点id。

redis-cli --cluster del-node 宿主机ip:从机端口 从机的节点id
redis-cli --cluster del-node 192.168.0.175:6388 4a3c4f3987d85a226ea109e8ca395d84d0570313

在这里插入图片描述
将redis节点7的槽号清空,恢复给原来的3个主节点。

# 将redis节点1为开头的集群,进行哈希槽位的重分配。
redis-cli --cluster reshard 192.168.0.175:6381

执行完命令会遇到一些选项需要填写,此处为方便填写,只执行了一次分配槽位命令,全部还给了redis节点1.

How many slots do you want to move (from 1 to 163984)?
# 因为是要从4主4从缩容成3主3从,所以16384/4=4096,填4096
What is the receiving node ID?
# 要将槽位一次性全分配给redis节点1,输入查看集群信息命令后的redis节点1的 node id复制
Source node #1:
# 填要删除的那个主节点id,redis7的节点id,即分配槽位的来源
Source node #2:done

可以看到redis节点1,多了一个分段的槽位。另外需要注意的是,如果要将redis节点7的槽位均匀的还给其他3个主节点,那就需要执行3次还槽位的命令,每次需要移动的槽位数量要计算为4096/3=1365.
在这里插入图片描述
删除redis节点7.

redis-cli --cluster del-node 192.168.0.175:6387 3376a19ecaa1a0c13945b791875a5efbf1bd2fc7
# ip替换为宿主机ip,并指定redis节点7的节点id
redis-cli --cluster check 192.168.0.175:6381
# 查看集群信息

可以看出,又变成了3主3从的集群模式。
在这里插入图片描述

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

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

相关文章

【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡

板卡概述 PXIE301-208是一款基于3U PXIE总线架构的Serial RapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器,实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP光纤接口,支持一个PCIe x8主机接口&…

Pearson correlation coefficient (Pearson’s r) 皮尔森相关系数

此图用的是箱状图,的纵轴是“Pearson’s r”,是实际观测值与机器学习模型预测值之间的相关性 Pearsons f得分,它是一个统计量,用来衡量两个变量之间线性相关性的强度。这个得分可能是用来衡量实际观测值与机器学习模型预测值之间的…

App Inventor 2 接入短信服务,实现短信验证码功能

发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发,阿里云短信平台接入步骤请点此参考。 App Inventor 2拓展提供的函数如下: 主要提供2个函数,生成随机位数的数字随机码 和 发送短信…

ctfshow 新手必刷菜狗杯 谜之栅栏题解记录

知识点:图片比较 拿到之后,有两个图片,直观看不出什么,尝试用工具比较。 用010editor打开其中一个,010editor的工具里面就有比较文件选项,比较两个文件,发现有一处不同。题目说栅栏&#xff0c…

《QDebug 2023年12月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Q_REVISION 标记的信号槽或者 REVISION 标记的属性,在子类中访问 Q_REVISION 是 Qt 用来做版本控制的一个宏。以 QQuickWindow 为例,继承后去访问 REVISION 标记的 opacity 属性或者 Q_REVISION…

keil5修改默认配色方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 找到Keil_5\UV4路径下的两个文件2. 修改global.prop文件中的内容第一种 配色方案第二种 配色方案第三种 配色方案第四种 配色方案 最后 前言 提示&#xff…

GPT3.5 改用 GPT4 价格翻了30倍 如何破局? GPT 对话成本推演

场景介绍 假设你搭建了一个平台,提供 ChatGPT 3.5 的聊天服务。目前已经有一批用户的使用数据,想要测算一下如果更换 GPT 4.0 服务需要多少成本? 方案阐述 如果是全切,最简单粗暴的方案就是根据提供 ChatGPT 3.5 消费的金额乘…

【FileZilla】FileZilla的使用及主动模式与被动模式----图文并茂详细讲解

目录 一 FileZilla的简介 1.1 是什么 1.2 应用场景 二 FileZilla的安装及准备工作 2.1 下载安装 2.2 主机连接VMware 三 FileZilla使用 3.1 内部连接文件管理 3.1.1 添加组 3.1.2 添加用户 3.1.3 添加用户密码 3.1.4 添加用户权限 3.1.5 连接测试 3.2 外部连接文…

Solidworks学习笔记

本内容为solidworks的学习笔记,根据自己的理解进行记录,部分可能不正确,请自行判断。 学习视频参考:【SolidWorks2018视频教程 SW2018中文版软件基础教学知识 SolidWorks自学教程软件操作教程 sw视频教程 零基础教程 视频教程】 h…

游戏软件缺少d3dcompiler.dll文件的多种修复方法分享

在操作系统中,d3dcompiler.dll是一个非常重要的组件,主要负责DirectX图形技术的编译和解析。许多用户在安装或使用某些软件时,提示“缺少d3dcompiler.dll”。这个错误通常出现在游戏或应用程序运行时,它会导致程序无法正常启动或运…

【linux】tail的基本使用

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

CentOS 7 实战指南:目录操作命令详解

写在前面 想要在 CentOS 7 系统下更高效地进行目录操作吗?不要犹豫,在这里我为你准备了一篇精彩的技术文章!这篇文章将带您深入了解 CentOS 7 下目录操作相关命令的使用方法。无论您是新手还是有一定经验的用户,这篇文章都将为您…

认识计算机网络——计算机网络的组成

计算机网络是由多个计算机和网络设备组成的系统,通过通信协议实现数据传输和信息交换。它是现代社会信息技术的重要支撑,广泛应用于各个领域。本文将介绍计算机网络的主要组成部分,包括硬件设备、软件协议和网络服务。 一、硬件设备 计算机网…

emacs:Searching for program: No such file or directory,sml;

首先,编辑一个现有的或新的 SML 文件(如果没有其他方便的方法,可尝试C-x C-f test.smlC-x C-f test.sml 创建一个新文件)。你会看到 Emacs 窗口底部的模式显示从 "基本"(或其他任何模式)变成了 S…

【Redis-10】Redis集群的实现原理和实践

Redis集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,实现复制和故障转移的功能。 1. Redis集群节点 一个Redis集群由多个节点组成,多个节点可以通过命令实现连接,由独立状态转为集群状态,命令是cluster …

Python开源项目月排行 2023年12月

Python 趋势月报,按月浏览往期 GitHub,Gitee 等最热门的Python开源项目,入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后,都是当前月份内相对热门的项目。 入选公式=70%GitHub Trending20%Gitee10%其他 …

回顾2023,我的编程学习之旅

文章目录 前言我与C语言初识C语言简易扫雷游戏二进制的美妙神奇的指针强大的结构体灵活的动态内存管理总结 我与竞赛我与CSDN结语 前言 6月8号高考结束了,虽然还没有出分,但是也大致规划好自己想学什么专业了,没错就是计算机,出分…

数据库系统概论SQL编程题合集(包含期末题、考研初试题以及复试题)

二、现有数据库casemanage中表结构如下图 1)请编写sql语句对年龄进行升序排列 select * from afinfo order by birth;2)请编写sql语句查询对“徐”姓开头的人员名单 select * from afinfo where name like 徐%;3)请编写sql语句修改“陈晓”…

四种常见智能指针的介绍

一、介绍 当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针(smart pointer),从而实现指针指向的对象的共享。 …

【LeetCode】每日一题 2023_12_31 一年中的第几天(日期)

文章目录 随便聊聊时间题目:一年中的第几天题目描述代码与解题思路 随便聊聊时间 LeetCode?启动!!! 12 月的打卡勋章,get! 题目:一年中的第几天 题目链接:1154. 一年中…