Docker搭建redis集群

1.使用docker新建6个redis容器实例,在此之前,需要在阿里云服务器和宝塔界面开放安全组(redis客户端连接端口和集群总线端口)

redis集群不仅需要开通redis客户端连接的端口(如6381),而且需要开通集群总线端口(16381)。
集群总线端口=redis客户端连接的端口+10000

docker run -d --name redis-node-1 --net host --privileged=true -v /docker/redis/share/redis-node-1:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6381

docker run -d --name redis-node-2 --net host --privileged=true -v /docker/redis/share/redis-node-2:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6382

docker run -d --name redis-node-3 --net host --privileged=true -v /docker/redis/share/redis-node-3:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6383

docker run -d --name redis-node-4 --net host --privileged=true -v /docker/redis/share/redis-node-4:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6384

docker run -d --name redis-node-5 --net host --privileged=true -v /docker/redis/share/redis-node-5:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6385

docker run -d --name redis-node-6 --net host --privileged=true -v /docker/redis/share/redis-node-6:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6386

命令解释:

2.进入容器redis-node-1,为六台容器构建集群关系

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

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

–cluster-replicas 1 表示集群主节点需要多少个从节点,我们用了6台,即3台服务器构成集群,每台服务器设置1台从服务器

3.进入端口为6381的redis容器,并查看集群状态

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

3.2redis-cli -p 6381

3.3cluster info

3.4 cluster nodes (这条命令是查看哪个节点是主节点,哪个节点是从节点,以及槽点范围)

4.测试主从容错切换迁移

4.1 进入端口为6381的容器,新增两个key,这里需要加-c,集群操作,可以将key-value放入其他容器中

Redis 集群中内置了 16384 个哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,也就是映射到某个节点上。如下代码,key之A 、B在Node2, key之C落在Node3上

因此,可以看到第一个k1 v1会落到范围包括12706这个槽点中,也就是6383这个容器中,

k2 v2会落到包括449这个范围的槽点中,也就是6386这个容器中

4.2 ctrl+c,退出redis-cli

4.3 查看集群信息 redis-cli --cluster check 8.136.84.238:6381

4.4 测试将6386(master)容器停止,6381从机会代替主机6386的位置上位,变成master主机

5.主从扩容

5.1 以集群方式新建6387、6388两个节点

docker run -d --name redis-node-7 --net host --privileged=true -v /docker/redis/share/redis-node-7:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /docker/redis/share/redis-node-8:/data redis:6.2.6 --cluster-enabled yes --appendonly yes --port 6388

5.2 进入6387容器内部

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

5.3 将新增的6387节点作为master节点加入原集群(我这里是通过6381建立redis集群的,

6381容器就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群)

redis-cli --clusteradd-node8.136.84.238:63878.136.84.238:6381

5.4 检查是否加入该redis集群

redis-cli --cluster check 8.136.84.238:6381

5.5 重新分配槽号

redis-cli --cluster reshard 8.136.84.238:6381

这里分配的槽号数=16384/机器数 =》分配的槽号数=16384/4=4096

这里该节点的id号,应该为新节点6387的节点号

这里是所有节点都分配4096个槽点,所以为all

5.6查看槽点的分配

redis-cli --cluster check 8.136.84.238:6381

为什么6387容器分配的槽点是3个新的区间,因为重新分配成本太高,所以前面三家匀出一部分,

从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387

5.7 为主节点6387分配从节点6388

redis-cli --cluster add-node 8.136.84.238:6388 8.136.84.238:6387 --cluster-slave --cluster-master-id f8cabc7a47b374a8838bd75ab34c6e9804781d3f

5.8 检查集群情况 发现已经分好

6.主从缩容

6.1 将6387 6388两个节点下线

6.2 检查集群情况,获得6388的节点id

redis-cli --cluster check 8.136.84.238:6388

6.4 从集群中将6388节点删除

redis-cli --cluster del-node 8.136.84.238:6388 da2567b5be3ac4b92b02abed931ff15ea04011e0

6.5 将6387的槽号清空,重新分配槽号,并都给主机(一定要是主机,而不是从机)6381

redis-cli --cluster reshard 8.136.84.238:6381

6.6 检查集群情况

redis-cli --cluster check 8.136.84.238:6381

发现6387节点已经没有为它分配槽点了,转而全部分给了其他容器节点

6.7 将6387剔除掉该集群

redis-cli --cluster del-node 8.136.84.238:6387 f8cabc7a47b374a8838bd75ab34c6e9804781d3f

6.8 重新查看集群,发现两个节点都已剔除,并实现了缩容

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

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

相关文章

荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测

目录 荣耀Magic系列手机详细对比 最新二手价格预测 性价比分析 总结 以下是荣耀Magic系列手机的详细对比以及最新二手价格预测: 荣耀Magic系列手机详细对比 特性荣耀Magic3系列荣耀Magic4系列荣耀Magic5系列荣耀Magic6系列荣耀Magic7系列处理器骁龙888&#x…

TCN时间卷积神经网络多变量多步光伏功率预测(Matlab)

代码下载:TCN时间卷积神经网络多变量多步光伏功率预测(Matlab) TCN时间卷积神经网络多变量多步光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机的加剧和环保意识的提升,可再生能源,尤其是太阳能&…

collabora online+nextcloud+mariadb在线文档协助

1、环境 龙蜥os 8.9 docker 2、安装docker dnf -y install dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i shttps://download.docker.comhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce /etc/yum.repos.…

在亚马逊云科技上云原生部署DeepSeek-R1模型(下)

在本系列的上篇中,我们介绍了如何通过Amazon Bedrock部署并测试使用了DeepSeek模型。在接下来的下篇中小李哥将继续介绍,如何利用亚马逊的AI模型训练平台SageMaker AI中的,Amazon Sagemaker JumpStart通过脚本轻松一键式部署DeepSeek预训练模…

JVM(Java 虚拟机)

Java语言的解释性和编译性(通过JVM 的执行引擎) Java 代码(.java 文件)要先使用 javac 编译器编译为 .class 文件(字节码),紧接着再通过JVM 的执行引擎(Execution Engine&#xff09…

基于Kotlin中Flow扩展重试方法

最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是,接口在请求的时候需要一个accessToken值,因为此值会过期或者不存在,需要刷新,因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求,而获取accessToken值的方法已经封装成了…

韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系

韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系 在当今这个科技日新月异的时代,企业之间的竞争早已超越了单纯的产品质量比拼,**售后服务成为了衡量消费电子行业各品牌实力与客户满意度的关键一环。**深圳市韶音…

推荐系统Day1笔记

意义: 1. 平台方 推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户粘性、提高用户转化率的问题,从而达到平台商业目标增长的目的。 2. 用户 推荐系统对于用户而言,除了将平台上的需求和供给进行匹配外,还需要尽可…

【详细版】DETR系列之Deformable DETR(2021 ICLR)

论文标题Deformable DETR: Deformable Transformers for End-to-End Object Detection论文作者Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai发表日期2021年03月01日GB引用> Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable DETR: Deformable T…

[开源]MaxKb+Ollama 构建RAG私有化知识库

MaxKbOllama,基于RAG方案构专属私有知识库 关于RAG工作原理实现方案 一、什么是MaxKb?二、MaxKb的核心功能三、MaxKb的安装与使用四、MaxKb的适用场景五、安装方案、 docker版Docker Desktop安装配置MaxKb安装和配置 总结和问题 MaxKB 是一款基于 LLM 大…

原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力

原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力 在科技飞速发展的当下,人工智能与操作系统的融合正深刻改变着我们的数字生活。近日,原生鸿蒙版小艺APP成功接入DeepSeek-R1,这一突破性进展不仅为用户带来了更智…

Linux进阶——web服务器

一、相关名词解释及概念: www:(world wide web)全球信息广播,通常来说的上网就是使用www来查询用户所需的信息。使用http超文本传输协议。 过程:web浏览器向web服务(Apache,Microsoft,nginx&…

网易日常实习一面面经

1. 自我介绍 2. 两道代码题: 第一道题:写一道链表排序题要求空间复杂度O(1) :已ac 插入排序算法 时间复杂度 O(N^2),空间复杂度O(1) class ListNode{int val;ListNode next;public ListNode(int x) {this.val x;} } public cl…

查询语句来提取 detail 字段中包含 xxx 的 URL 里的 commodity/ 后面的数字串

您可以使用以下 SQL 查询语句来提取 detail 字段中包含 oss.kxlist.com 的 URL 里的 commodity/ 后面的数字串&#xff1a; <p><img style"max-width:100%;" src"https://oss.kxlist.com//8a989a0c55e4a7900155e7fd7971000b/commodity/20170925/20170…

Ubuntu 24.10 安装Deepseek(Ollama+openwebui)

一、Ollama安装 1.在线安装 curl -fsSL https://ollama.com/install.sh | sh 如果curl工具没有安装先执行如下命令 sudo apt install curl 验证curl是否安装成功 curl --version 安装的过程中会提示输入当前系统登录用户的密码。 安装提示success后,验证安装 ollama -…

基于YOLOv8+PyQt5的目标检测系统(环境配置+数据集+Python源码+PyQt5界面)——持续更新中

第1期 基于YOLOv8的吸烟行为检测系统&#xff08;环境配置数据集Python源码PyQt5界面&#xff09; 第2期 基于YOLOv8的玩手机行为检测系统&#xff08;环境配置数据集Python源码PyQt5界面&#xff09; 第3期 基于YOLOv8的灭火器检测系统&#xff08;环境配置数据集Python源码…

项目的虚拟环境的搭建与pytorch依赖的下载

文章目录 配置环境 pytorch的使用需要安装对应的cuda 在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南&#xff0c;查看CUDA版本&#xff0c;安装对应版本pytorch 【超详细教程】2024最新Pytorch安装教程&#xff08;同时讲解安装CPU和GPU版本&#xff09; 配置环境…

[2025年最新]2024.3版本idea无法安装插件问题解决

背景 随着大模型的持续发展&#xff0c;特别年前年后deepseek的优异表现&#xff0c;编程过程中&#xff0c;需要解决ai来辅助编程&#xff0c;因此需要安装一些大模型插件 问题描述 在线安装插件的时候会遇到以下问题&#xff1a; 1.数据一直在加载&#xff0c;加载的很满 2.点…

怎么查看电脑显存大小(查看电脑配置)

这里提供一个简单的方法查看 winr打开cmd 终端输入dxdiag进入DirectX 点击显示查看设备的显示内存&#xff08;VRAM&#xff09; 用这个方法查看电脑配置和显存是比较方便的 dxdiag功能 Dxdiag是Windows的DirectX诊断工具&#xff0c;其主要作用包括但不限于以下几点&#…

拾取丢弃物品(结构体/数组/子UI/事件分发器)

实现&#xff1a;场景中随机生成几种物品&#xff0c;玩家可以拾取这些物品&#xff0c;也可丢弃已经拾取到的物品。 拾取丢弃物品时UI能实时更新玩家身上的物品量。 一.物品信息的创建 1.枚举 物品名 2.结构体表示物体属性 3.物品缩略图&#xff08;缩略图大小要为2的n次方…