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 新主机节点IDredis-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.rhkb.cn/news/228093.html

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

相关文章

IDEA相关操作

目录 连接MySQL IDEA配置Maven 配置全局Maven 导入Maven项目 方法一 方法二 安装Mybatisx插件 安装lombok插件 连接MySQL 填写user和Password之后测试连接 如果是第一次连接需要联网下载数据库连接驱动,安装提示下载即可 如果显示如下错误需要更改时区 …

【Vue2+3入门到实战】(18)VUE之Vuex状态管理器概述、VueX的安装、核心概念 State状态代码实现 详细讲解

目录 一、[Vuex](https://vuex.vuejs.org/zh/) 概述1.是什么2.使用场景3.优势4.注意: 二、需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 三、vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index…

C# Winform教程(二):基础窗口程序

1、介绍 winform应用程序是一种智能客户端技术,我们可以使用winform应用程序帮助我们获得信息或者传输信息等。 2、常用属性 Name:在后台要获得前台的控件对象,需要使用Name属性。 Visible:指示一个控件是否可见、 Enable&…

2024年中职“网络安全“—数字调查取证(attack817.pcapng)

目录 ​1.通过分析数据包找出恶意用户最初访问HTTP服务的包号,将该值作为Flag值提交, Flag格式为flag{xxx}; 2.继续查看数据包文件分析出恶意用户扫描了哪些端口,将全部的端口号按照一定顺序作为Flag值,提示:注意端口…

【MMdetection】MMdetection从入门到进阶

基础环境安装 步骤 0. 从官方网站下载并安装 Miniconda。 步骤 1. 创建并激活一个 conda 环境。 conda create --name openmmlab python3.8 -y conda activate openmmlab步骤 2. 基于 PyTorch 官方说明安装 PyTorch。 pip install torch2.0.1 torchvision0.15.2 torchaudio…

一文道破Java NIO

文章目录 一、常见的几种 Java IO 工作模式1.1 同步阻塞 IO1.2 同步非阻塞 IO1.3 异步非阻塞 IO 二、Java NIO 多路复用详解2.1 原理图2.2 基础组件简介SelectorChannelSelectionKey 2.3 Java NIO 代码示例2.4 Linux 支持多路复用的系统调用函数select 函数poll 函数epoll 函数…

利用STM32和可控硅控制220V加热电路

利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式:移相触发和过零触发1、过零触发2、移…

数据库——建立ER模型及关系模型转换

​ 【实验内容及要求】 使用画图工具或MySQL Workbench等建模工具设计出相应的ER图,将局部ER图合并为一个整体ER模型,在ER模型中填加多样性约束,建立显示主键的ER模型,标识实体的属性,确认主键、外键。将上述ER图转化…

视频监控EasyCVR如何通过设置sei接口,实现在webrtc视频流中添加画框和文字?

安防视频监控系统基于视频综合管理平台EasyCVR视频系统,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,具备权限管…

染色法判定二分图算法总结

知识概览 一个图是二分图当且仅当图中不含奇数环(奇数环是边数为奇数的环)。图中不含奇数环,染色过程中一定没有矛盾。染色法判定二分图算法时间复杂度O(n m)。 例题展示 题目链接 860. 染色法判定二分图 - AcWing题库https://www.acwing.…

传感器基础:传感器使用与编程使用(三)

目录 常用传感器讲解九--雨滴传感器具体讲解电路连接代码实现 常用传感器讲解十--光传感器根据亮度安排灯具体讲解电路连接代码实现 常用传感器讲解七--light cup(KY-008)具体讲解电路连接代码实现 常用传感器讲解十二--倾斜开关传感器(KY-02…

idea利用JRebel插件,无需重启,实现Spring Boot项目热重载,节省开发时间和精力!

插件介绍 官方介绍 翻译过来的意思是: JRebel 是一款提高开发效率的工具,允许开发者立即重新加载代码更改。它跳过了在Java开发中常见的重新构建、重启和重新部署循环。JRebel 能够让开发者在相同的时间内完成更多工作,并且在编码时能够保持…

centos7.9中离线安装nginx开启ssl,arm架构

一、首先需要去国内相关镜像库下载相关依赖rpm: http://mirrors.bfsu.edu.cn/centos-altarch/7.9.2009/os/aarch64/ http://mirror.nju.edu.cn/centos-altarch/7.9.2009/os/aarch64/ http://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7.9.2009/os/aarch64/ htt…

第2课 使用FFmpeg读取rtmp流并用openCV显示视频

本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前,我们需要先用ffmpeg连接到rtmp服…

2007~2016 年税调经纬度及其所处的省市区县乡镇数据

之前给大家分享过一份税调企业经纬度及其所处的省市区县数据: 2007~2016 年税调企业地理信息数据(含经纬度及其所处的省市区县):https://rstata.duanshu.com/#/course/76d38022cd004b09b2aa09647936beb0 最近有培训班的小伙伴提出是否能根据税调企业经纬度来判断其所属的乡…

Java:IO流——字节流和字符流

目录 IO流的基本概念 IO流体系结构 FileOutputStream字节输出流 构造方法 成员方法 细节 关流 FileInputStream字节输入流 构造方法及成员方法 read不带参数代码示例 read带参数代码示例​编辑 将字节数组或字符数组转成字符串 FileReader 字符输入流 构造方法和…

计算机速成课Crash Course - 14. 数据结构

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章,公众号 “摸鱼IT” 锁定 -上午11点 - ,感谢大家关注、转发、点赞! 计算机速成课Crash Course - 13. 算法入门 14. 数据结构 上集讲了一些经典算法,比如给数组排序,…

回首2023: 程序员跳出舒适圈

1 前言 今天的冬日暖阳高照,照耀着我穿着羽绒服的身体,让我感到火一般的燥热,仿佛错觉中已经到了阳春三月。刚刚把孩子洗好,我坐在电脑前,准备整理一下思绪,回顾一下2023年的生活和工作。 2 2023 回顾 回…

Java毕业设计—springboot健身房管理系统

一、项目背景介绍: 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全…

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时,在下图这个页面需要重新选择一下硬盘,可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…