05- redis集群模式搭建(上) (包含云服务器[填坑])
目录
1. 准备环境:
2. 简介:
-> 2.1 前言:
-> 2.2 Redis集群架构实现了对redis的水平扩容
-> 2.3 redis cluster集群原理
3. 搭建后特别需要注意的问题
->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务???
---> 3.1.1 如果集群中故障redis服务存在主从服务,
---> 3.1.2 如果redis集群中没有按官方推荐的去做主从备份
-> 3.2 理解:
---> 3.2.1 修改配置 redis.conf
-> 3.3 单服务器部署多个节点是否会影响带宽
4. 实际操作
-> 4.1 创建文件夹
-> 4.2 进入目录
-> 4.3 创建模板
--> 4.3.1 文件输入内容
---> 4.3.2 模板注释
---> 4.3.3 特别注意宿主机ip
-> 4.4 在当前目录下操作
-> 4.5 创建docker 容器
-> 4.6 进入redis-8010容器
-> 4.7 创建redis-cluster集群配置
-> 4.8 搭建成功了, 进入集群redis查看(内网ip)
-> 4.9 测试,如图所示, 也就解释了上述问题
5.出现异常, 执行下面重新来过
下一篇: java使用redis集群进行操作
1. 准备环境:
云服务器<虚拟机也可以>, centos7.9, docker-ce , 有redis镜像
2. 简介:
-> 2.1 前言(云服务器请与06配合使用):
===> 传送门: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题)
主从模式 哨兵模式, 都会在集群模式中体现出来, 官方推荐集群最少三主三从 6个redis服务
-> 2.2 Redis集群架构实现了对redis的水平扩容
即启动N个redis节点,将整个数据分布存储在这N个redis节点中,每个节点存储总数据的1/N。redis集群通过分区提供一定程度的可用性,即使集群中有一部分节点失效或无法进行通讯,集群也可以继续处理命令请求。
-> 2.3 redis cluster集群原理
redis cluster集群默认16384个hash槽,集群搭建成功之后,需要给每一个主节点分配hash槽。当外部数据插入的时候,会对key进行crc16然后对16384取模,这样就计算出哪个节点对该数据进行管理。创建集群时就已经分配哈希槽, 如果采用的3主3从的结构,主从模式通过哨兵模式,实现类主服务故障自动切换, 进而实现类服务的高可用
3. 搭建后特别需要注意的问题
->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务???
---> 3.1.1 如果集群中故障redis服务存在主从服务,
那么访问的时候回访问从redis服务,集群正常运行, 参考主从哨兵机制,
重新选举master 一般30秒
---> 3.1.2 如果redis集群中没有按官方推荐的去做主从备份
其中有一台redis服务故障挂掉,emm, 会导致整个集群则都不能使用,因为Redis集群的时候每一个Redis节点保存的数据不一样,如果一个节点有问题则整个数据就缺失。
-> 3.2 理解:
假设是一个云平台, 每个数据存在不同服务里 其中正好存你的数据服务gg了, 并且还没从服务重新选举, emm 其他人没影响<需要做一下配置> , 你的数据查不出来了
---> 3.2.1 修改配置 redis.conf
取决于redis.conf中的参数cluster-require-full-coverage
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage为yes ,整个集群都挂掉
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage为no , 该插槽数据全都不能使用,也无法存储。
-> 3.3 单服务器部署多个节点是否会影响带宽
相当会了 详细介绍引用他人文章了: Redis Cluster集群优势劣势已经介绍
4. 实际操作
-> 4.1 创建文件夹
mkdir -p /usr/local/src/docker/redis-cluster
-> 4.2 进入目录
cd /usr/local/src/docker/redis-cluster
-> 4.3 创建模板
vim redis-cluster.tmpl
--> 4.3.1 文件输入内容
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 10.0.4.*
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
bind 0.0.0.0
protected-mode no
---> 4.3.2 模板注释
port: 节点端口(对外通信)
cluster-enabled: 开启集群
cluster-config-file: 集群的配置是 nodes.conf
cluster-node-timeout:连接超时时间5000毫秒
cluster-announce-ip:宿主机ip
cluster-announce-port:集群节点映射端口
cluster-announce-bus-port:集群总线端口
appendonly:持久化模式 aof是否开启
---> 4.3.3 特别注意宿主机ip
1 可以是内网ip(如果想远端必须是公网ip)
ps: 但是公网ip需要进行下面操作: ===> 传送门: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题)
2 可以使用域名解析
3 不可以使用172.0.0.1
-> 4.4 在当前目录下操作
![]()
for port in $(seq 8010 8015); \
do \mkdir -p ./${port}/conf \&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \&& mkdir -p ./${port}/data; \
done
解释一下: shell脚本 循环 参数传递 生成配置文件
-> 4.5 创建docker 容器
for port in $(seq 8010 8015); \
do \docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \--privileged=true -v /usr/local/src/docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \--privileged=true -v /usr/local/src/docker/redis-cluster/${port}/data:/data \--restart always --name redis-${port} --net redis-net \--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
-> 4.6 进入redis-8010容器
docker exec -it redis-8010 bash
-> 4.7 创建redis-cluster集群配置
redis-cli --cluster create 10.0.4.*:8010 10.0.4.*:8011 10.0.4.*:8012 10.0.4.*:8013 10.0.4.*:8014 10.0.4.*:8015 --cluster-replicas 1

-> 4.8 搭建成功了, 进入集群redis查看(内网ip)
redis-cli -c -h 10.0.4.* -p 8010
cluster nodes #查看集群节点数
cluster info #查看集群基本信息

-> 4.9 测试,如图所示, 也就解释了上述问题

5.出现异常, 执行下面重新来过
批量删除容器 批量删除目录挂载
docker ps -a | grep -i "redis-801*" | awk '{print $1}' | xargs docker stop
docker ps -a | grep -i "redis-801*" | awk '{print $1}' | xargs docker rm -f#shell脚本 删除redis容器
for i in $(seq 8010 8015); \
do docker rm -f redis-${i}; \
done;rm -rf 801{0..5}/conf/redis.conf
rm -rf 801{0..5}
[留下拓展, 正式生产环境 配置密码等配置, 后续补充]
预告06篇: 06-redis集群模式(中) 项目测试的云服务ip变内网等(解决大多数问题)
预告07篇: java使用redis集群进行操作, 常规配置解释等
相关文章:
05- redis集群模式搭建(上) (包含云服务器[填坑])
目录 1. 准备环境: 2. 简介: -> 2.1 前言: -> 2.2 Redis集群架构实现了对redis的水平扩容 -> 2.3 redis cluster集群原理 3. 搭建后特别需要注意的问题 ->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务??? ---> 3.1.1 如果集群中故障re…...
【AI】YOLOV1原理详解
AI学习目录汇总 0、前言 YOLOv1~3作者是约瑟夫雷德蒙(Joseph Chet Redmon),他的网站:https://pjreddie.com/ YOLOv1网站:https://pjreddie.com/darknet/yolov1/ YOLOv2网站:https://pjreddie.com/darknet…...
提高APP安全性的必备加固手段——深度解析代码混淆技术
APP 加固方式 Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码: 使用 ProGuard 工具可以对代码进行混淆,使得反编译出来的代…...
想让行车记录仪协助道路病害自动化检测?可以!
针对【RGB3DS道路表观病害信息智慧检测系统】,我们着重介绍过其与道路检测车做集成预装或者处理道路检测车数据的极大便利,其中之一便是可高效输出带有道路检测车桩号标记的病害报表,这是因为道路检测车数据本身具有规范性。 那么如果使用道…...
git上传大大大文件项目好折磨人
本来想把unity项目的源码上传上gitee啊,但是那个项目有1个多G,还是个半成品,要是写完,都不知道行不行 正常的上传 所用到的命令: 1、 git init 初始化,创建本地仓库 2、 git add . 添加到本地仓库 3、 git…...
java常见异常的处理方法
以下是一些常见的异常处理方法: 捕获和处理异常(try-catch): 使用try-catch语句块可以捕获并处理异常。在try块中编写可能抛出异常的代码,然后在catch块中指定异常类型,以便捕获并处理异常。 try {// 可能抛…...
上传图片到阿里云服务器base64 上传
//上传图片到阿里云服务器 function upload_Ali($remoteImage){$imageData $this->n_img_base_64($remoteImage);if ($imageData ! false) {// 初始化 cURL 句柄$ch curl_init();// 设置请求 URL 和一些 cURL 选项curl_setopt($ch, CURLOPT_URL, http://dev.com/index/aja…...
【致敬未来的攻城狮计划】— 连续打卡第二十六天:瑞萨RA Cortex-M 内核RA2E1 RT-Thread BSP 启蒙知识
系列文章目录 由于一些特殊原因: 系列文章链接:(其他系列文章,请点击链接,可以跳转到其他系列文章)或者参考我的专栏“ 瑞萨MCU ”,里面是 瑞萨RA2E1 系列文章。 24.RA2E1的 DMAC——数据传输 …...
2023年5月8日-5月14日(方案C,下班UE视频教程为主)
目前,ue视频教程进行到了智 慧 城 市(3.13),mysql(7.1),tf1(4.11),蓝图反射(1.9),moba(1.5)webapp(2.4),mmoarpg(00A_04),fps1_12(0:3…...
「MIAOYUN」:降本增效,赋能传统企业数字化云原生转型 | 36kr 项目精选
作为新经济综合服务平台第一品牌,36氪自2019年落地四川站以来,不断通过新锐、深度的商业报道,陪跑、支持四川的新经济产业。通过挖掘本土优质项目,36氪四川帮助企业链接更多资源,助力企业成长,促进行业发展…...
Python突破JS加密限制,进行逆向解密
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 目录标题 前言开发环境:模块使用:逆向目标逆向过程参数 JS 加密关键代码Python 登录关键代码尾语 💝 开发环境: Python 3.8 Pycharm 模块使用: time >>> 时间模块,属于内置,无…...
【Linux】exec函数族
目录 1、exec函数族的介绍2、exec相关函数 1、exec函数族的介绍 2、exec相关函数 #include <unistd.h> int execl(const char *pathname, const char *arg0, ... /* (char *)0 */ ); /* - path 需要指定的执行的文件的路径或者名称,相对路径or绝对路径- arg …...
OSQP二次规划求解库使用说明
OSQP二次规划求解库使用说明 贺志国 2023.5.10 1. 凸二次规划的一般表达式 m i n 1 2 x T P x q T x s . t . l ≤ A x ≤ u min \quad \frac{1}{2}x^T Px q^Tx \qquad s.t. \quad l \leq Ax \leq u min21xTPxqTxs.t.l≤Ax≤u 其中, P P P称为内核矩阵&#x…...
Elasticsearch(一)
Elasticsearch(一) 初始elasticsearch 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速查找到需要的内容 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack&…...
深入探究Java中的枚举类型:定义、特性和应用
引言: 在Java编程中,枚举类型是一种强大而灵活的工具,用于定义一组具名的常量。它不仅提供了代码可读性和可维护性的优势,还为开发人员提供了一种更安全和结构化的方式来处理固定的常量集合。本文将深入探讨Java中的枚举类型&…...
linux密码忘了?一招解决
目录 一、前言 二、进入编辑界面 三、单用户模式 四、修改密码 五、更新信息 六、退出 七、验证 一、前言 版本:centos7.9、VMware15.5 在我们学习linux运行级别的时候,面试题可能会出如何找回root密码,下面来详细的介绍一波ÿ…...
苹果mac清理软件CleanMyMac X v4.13兼容13系统,堪称Mac最好的系统清理工具
CleanMyMac X for mac是MacOS上一款Mac清理优化工具,不仅包含各种清理功能,更是具有卸载器、维护、扩展、碎纸机这些实用功能,可以同时代替很多工具。它可以清理,优化,保养和监测您的电脑,确保您的Mac运行…...
FPGA实现Cordic算法求解arctan和sqr(x*2 + y* 2)
一. 简介 由于在项目中需要使用的MPU6050,进行姿态解算,计算中设计到**arctan 和 sqr(x2 y 2),**这两部分的计算,在了解了一番之后,发现Cordic算法可以很方便的一次性求出这两个这两部分的计算。另外也可以一次性求出sin和cos的…...
【最终截稿 | Springer 独立出版 | EI稳定检索】 2023年绿色建筑国际会议(ICoGB 2023)
会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org ICoGB 2023将围绕“绿色建筑”的最新研究领域而展开,为研究人员、工程师、专家学…...
Flutter常用状态管理框架及优缺点
Flutter 中常见的状态管理框架有以下几种: Provider: Provider 是一个轻量级的状态管理框架,可用于单个 Widget 或整个 Widget 树中分发状态。它通过 InheritedWidget 和 ChangeNotifier 来实现状态管理,并支持依赖项注入。Redux…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
