docker完成redis 三主三从

news2024/11/19 5:43:40

文章目录

  • 关闭防火墙+启动docker后台服务
  • 新建6个docker容器redis实例
    • 创建并运行docker容器实例
  • 进入容器redis-node-1并为6台机器构建集群关系
  • 链接进入6381作为切入点,查看集群状态
  • 主从容错切换迁移案例
      • 容错切换迁移
  • 主从扩容案例
      • 为主节点6387分配从节点6388
      • 主从缩容案例

关闭防火墙+启动docker后台服务

systemctl start docker

新建6个docker容器redis实例

创建并运行docker容器实例

拉取一个redis

docker pull redis:6.0.8
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
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
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

在这里插入图片描述

进入容器redis-node-1并为6台机器构建集群关系

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

进入docker容器后才能执行一下命令,且注意自己的真实IP地址
我的ip:192.168.196.100

redis-cli --cluster create  192.168.196.100:6381  192.168.196.100:6382  192.168.196.100:6383  192.168.196.100:6384  192.168.196.100:6385  192.168.196.100:6386 --cluster-replicas 1

–cluster-replicas 1 表示为每个master创建一个slave节点

链接进入6381作为切入点,查看集群状态

redis-cli -p 6381

cluster info

cluster nodes

在这里插入图片描述
在这里插入图片描述

主从容错切换迁移案例

启动6机构成的集群并通过exec进入,加入参数-c,优化路由

 redis-cli -p 6381 -c

对6381新增两个key

set k1 v1 
set k2 v1

在这里插入图片描述
查看集群信息

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

容错切换迁移

主6381和从机切换,先停止主机6381,6381主机停了,对应的真实从机上位,6381作为1号主机分配的从机以实际情况为准,具体是几号机器就是几号

停掉1号机

docker stop redis-node-1

在这里插入图片描述
进入二号机

docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c

cluster nodes

在这里插入图片描述
在这里插入图片描述
先还原之前的3主3从
先启6381

docker start redis-node-1

再停 之前代替的我这里是6386

docker stop redis-node-6

在启动之前关的

docker start redis-node-6

这里的原因是因为要回到最初的样子,第一次关掉1号,在开启1号,1号会变成从机。如果要在让它变成主 ,需要把他的主机下了重启

查看集群状态

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

主从扩容案例

新建6387、6388两个节点+新建后启动+查看是否8节点

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

在这里插入图片描述
进入6387容器实例内部

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

将新增的6387节点(空槽号)作为master节点加入原集群

将新增的6387作为master节点加入集群
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

redis-cli --cluster add-node 192.168.196.100:6387 192.168.196.100:6381

在这里插入图片描述
检查集群情况第1次

redis-cli --cluster check 真实ip地址:6381

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述
重新分派槽号

命令:redis-cli --cluster reshard IP地址:端口号

redis-cli --cluster reshard 192.168.196.100:6381

在这里插入图片描述
在这里插入图片描述
看到这个 :要填的就是之前查的里面的id
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查集群情况第2次

redis-cli --cluster check 真实ip地址:6381

redis-cli --cluster check 192.168.196.100:6381

在这里插入图片描述

为主节点6387分配从节点6388

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

redis-cli --cluster add-node 192.168.196.100:6388 192.168.196.100:6387 --cluster-slave --cluster-master-id  6b444c9eae080fd8a186f5b34f7dc9a2e9eba110
-------这个是6387的编号,按照自己实际情况

主从缩容案例

将6388删除 从集群中将4号从节点6388删除
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID

 
redis-cli --cluster del-node 192.168.196.100:6388 f91f2a5bc654917f121ff63feca01d4d8ed5ebb4

将6387的槽号清空,重新分配,本例将清出来的槽号都给6381

 redis-cli --cluster reshard 192.168.196.100:6381

将6387删除
命令:redis-cli --cluster del-node ip:端口 6387节点ID

redis-cli --cluster del-node 192.168.196.100:6387 e4781f644d4a4e4d4b4d107157b9ba8144631451
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二十八周:文献阅读笔记(弱监督学习)+ pytorch学习

第二十八周:文献阅读笔记(弱监督学习) 摘要Abstract1. 弱监督学习1.1. 文献摘要1.2. 引言1.3. 不完全监督1.3.1. 主动学习与半监督学习1.3.2. 通过人工干预1.3.3. 无需人工干预 1.4. 不确切的监督1.5. 不准确的监督1.6. 弱监督学习的创新点 2…

List集合遍历过程中修改元素(有坑)

说来惭愧,学 java 2年了,对 “Java是值传递” 这句话还没有理解它的精髓,以至于编程的时候出现了一些错误,这里记录一下。 一.问题再现 1.1将List集合中的每个字符串更改为其他值 1.2将List集合中的对象更改为其他对象 二.问题分…

Socket编程-IO模型

1、首先IO模型的内容。 感觉可以简单理解为:我们写代码时,在基础的 IO 操作上做了一些其他的策略,根据策略的不同,一般有阻塞IO和非阻塞IO 1、阻塞IO 就是在操作的时候,比如网络通信中,某一线程使用下面这…

【Web】CTFSHOW PHP特性刷题记录(全)

知其然知其所以然,尽量把每种特性都详细讲明白。 目录 web89 web90 web91 web92 web93 web94 web95 web96 web97 web98 web99 web100 web101 web102 web103 web104 web105 web106 web107 web108 web109 web110 web111 web112 web113 web…

【QML COOK】- 007-Item对象、信号和槽

信号(signal)和槽(slot)是Qt的独特的设计,自然在QML中也被支持。 Item是QML所有类型的基类,Item类型不会显示在窗口上,但是可以支持信号和槽。本节就用Item编写一个信号和槽的实例。 1. 创建Q…

【Spring 篇】走进SpringMVC的世界:舞动Web的激情

嗨,亲爱的小白们!欢迎来到这篇关于SpringMVC的博客,让我们一起探索这个舞动Web的框架,感受它带来的激情和便利。在这个世界里,我们将学到SpringMVC的概述、开发步骤以及如何快速入门,一切都是如此的令人兴奋…

数据分析实战丨基于flask+pygal可视化分析sqlite中的数据

文章目录 写在前面实验目标项目框架实验内容1.配置实验环境2.查看sqlite3数据库的数据3.创建项目文件4.编写代码5.运行项目 运行结果写在后面 写在前面 本期内容: 基于FlaskPygal可视化分析Sqlite3中的数据 实验环境: pythonpygalflask 项目下载地址…

Cocos 使用VsCode调试-跨域问题

解决方案: 在添加完debug配置后 在项目文件夹中打开vscode然后找到launch.json 这个runtimeArgs参数在原本的配置中是没有的,给他添加上去 "runtimeArgs": ["--disable-web-security" ] 原理: 禁用浏览器跨域检查(仅用于调试&…

msvcp140.dll丢失的常见问题,msvcp140.dll丢失的几种解决办法分享

在电脑系统中,msvcp140.dll是一个重要的系统文件,其作用是为应用程序提供所需的功能和支持。然而,有时候我们可能会遇到msvcp140.dll文件丢失的情况,导致我们无法正常使用某些程序或游戏。本文将介绍msvcp140.dll丢失的常见问题、…

polar CTF 写shell

一、题目 <?php /*PolarD&N CTF*/highlight_file(__FILE__);file_put_contents($_GET[filename],"<?php exit();".$_POST[content]);?>二、解题 payload ?filenamephp://filter/convert.base64-decode/resourceshell.php #<?eval($_POST[1]);…

openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞

文章目录 openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞197.1 分析查询语句是否被阻塞197.1.1 问题现象197.1.2 原因分析197.1.3 处理办法 openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞 197.…

【LV12 DAY17-18 中断处理】

GPX1_1是外部中断9 EINT9 查询可知其中断ID是57 所以需要进行人为修正lr的地址 sub lr&#xff0c;lr&#xff0c;#4 //iqr异常处理程序 irq_handler: //IRQ异常后LR保存的地址是被IRQ打断指令的下一条再下一条指令的地址&#xff0c;所以我们需要人为进行修正一下sub LR,L…

Linux下如何快速调试I2C设备

Linux下如何快速调试I2C设备 目录 1 什么场景下需要快速调试I2C设备 2 如何快速调试I2C设备 3 如何获取I2C Tools工具集 3.1 获取I2C Tools工具集源码 3.2 编译I2C Tools工具集源码 3.3 为设备添加I2C Tools工具集 4 如何使用I2C Tools工具集 5 小结 1 什么场景下需要快…

vue2配置教程

5.12.3 Vue Cli 文档地址: https://cli.vuejs.org/zh/ IDEA 打开项目&#xff0c;运行项目

堆排序——高效解决TOP-K问题

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 引言什么是堆&#xff1f;建堆堆排序&#xff1a;排序的最终结果 堆排序实现函数声明交换函数 Swap下沉调整 DnAdd堆排序函数 HeapSort主函数 文件中找…

day-09 删除排序链表中的重复元素

思路 从前往后遍历链表&#xff0c;当当前节点的值与下一个节点值相等时&#xff0c;删除下一节点&#xff1b;否则向后移动一个节点&#xff0c;继续遍历 解题方法 while(p!null&&p.next!null){ if(p.next.valp.val)p.nextp.next.next;//当前节点的值与下一个节点值相…

WorkPlus卓越的即时通讯工具,助力企业提升工作效率

在当今快节奏的商业环境中&#xff0c;高效沟通和协作是企业成功的关键。而即时通讯作为实现高效沟通的利器&#xff0c;成为了现代企业不可或缺的一部分。作为一款领先的即时通讯工具&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;助力企业打造高效沟通和协作的…

Docker实战07|Docker增加容器资源限制

上一篇文章中&#xff0c;讲解了Docker run的具体流程以及Docker是如何改变PID为1的底层原理。 具体文章可见《Docker就应该这么学-06》 有需要的小伙伴可以回顾一下。 接下来本文会详细介绍一下Docker 是如何增加容器的资源限制 增加容器的资源限制 获取代码 git clone …

Python之循环判断语句

一、if判断语句 1. if...else if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 ...... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 ...... # -*- coding:utf-8 -*- age input("请输入年龄:") age int(age) if age > 18:print("已经成…

C# 导出EXCEL 和 导入

使用winfrom简单做个界面 选择导出路径 XLSX起名字 打开导出是XLSX文件 // 创建Excel应用程序对象Excel.Application excelApp new Excel.Application();excelApp.Visible false;// 创建工作簿Excel.Workbook workbook excelApp.Workbooks.Add(Type.Missing);Excel.Works…