Redis 集群环境案例安装步骤

news2024/10/6 14:31:53

1. 3主3从redis集群配置

1.1 找3台真实虚拟机,各自新建   mkdir -p /myredis/cluster

1.2 新建6个独立的redis实例服务

1.2.1 本次案例设计说明(ip有变化) 

https://processon.com/diagraming/5fe6d76ce401fd549c8fe708

1.2.2 IP: 192.168.111.175+端门6381/端口6382

vim /myredis/cluster/redisCluster6381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6381
logfile "/myredis/cluster/cluster6381.log"
pidfile /myredis/cluster6381.pid
dir /myredis/cluster
dbfilename dump6381.rdb
appendonly yes
appendfilename "appendonly6381.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000

vim /myredis/cluster/redisCluster6382.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6382
logfile "/myredis/cluster/cluster6382.log"
pidfile /myredis/cluster6382.pid
dir /myredis/cluster
dbfilename dump6382.rdb
appendonly yes
appendfilename "appendonly6382.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 5000

1.2.3 IP: 192.168.111.172+端门6383/端门6384

vim /myredis/cluster/redisCluster6383.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6383
logfile "/myredis/cluster/cluster6383.log"
pidfile /myredis/cluster6383.pid
dir /myredis/cluster
dbfilename dump6383.rdb
appendonly yes
appendfilename "appendonly6383.aof"
requirepass 111111
masterauth 111111
cluster-enabled yes
cluster-config-file nodes-6383.conf
cluster-node-timeout 5000

vim /myredis/cluster/redisCluster6381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6384
logfile "/myredis/cluster/cluster6384.log"
pidfile /myredis/cluster6384.pid
dir /myredis/cluster
dbfilename dump6384.rdb
appendonly yes
appendfilename "appendonly6384.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6384.conf
cluster-node-timeout 5000

1.2.4 IP: 192.168.111.174+端口6385/端门6386

vim /myredis/cluster/redisCluster6385.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6385
logfile "/myredis/cluster/cluster6385.log"
pidfile /myredis/cluster6385.pid
dir /myredis/cluster
dbfilename dump6385.rdb
appendonly yes
appendfilename "appendonly6385.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6385.conf
cluster-node-timeout 5000

vim /myredis/cluster/redisCluster6386.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6386
logfile "/myredis/cluster/cluster6386.log"
pidfile /myredis/cluster6386.pid
dir /myredis/cluster
dbfilename dump6386.rdb
appendonly yes
appendfilename "appendonly6386.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6386.conf
cluster-node-timeout 5000

1.2.5 启动6台redis主机实例

redis-server /myredis/cluster/redisCluster6381.conf

.....

redis-server /myredis/cluster/redisCluster6386.conf

1.3 通过redis-cli命令为6台机器构建集群关系

1.3.1 构建主从关系命令

//注意,注意,注意自己的真实IP地址     //注意,注意,注意自己的真实IP地址

redis-cli -a 111111  --cluster create   --cluster-replicas 1  192.168.111.175:6381 192.168.111.175:6382 192.168.111.172:6383 192.168.111.172:6384 192.168.111.174:6385 192.168.111.174:6386

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

1.3.2 一切OK的话,3主3从搞定

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

1.4.1 链接进入6381作为切入点,查看节点状态

1.4.2 info replication

1.4.3 cluster info

1.4.4 cluster nodes

2. 3主3从redis集群读写

2.3.1 对6381新增两个key,看看效果如何

2.3.2 为什么报错

一定注意槽位的范围区间,需要路由到位,路由到位,路由到位,路由到位

2.3.3 如何解决

防止路由失效加入参数-c,优化路由

2.3.4 查看集群信息

2.3.5 查看某个key该属于对应的槽位值CLUSTER KEYSLOT 键名称

3. 主从容错切换迁移案例

3.1 容错切换迁移

3.1.1 主6381和从机切换,先停止主机6381

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

3.1.2 再次查看集群信息,本次6381主6384从

6381master假如宕机了,6384是否会上位成为了新的master?

3.1.3 停止主机6381,再次查看集群信息 

6381宕机了,6384上位成为了新的master。

备注:本次脑图笔记6381为主下面挂从6384每次案例下面挂的从机以实际情况为准,具体是几号机器就是几号

6384成功上位并正常使用

3.1.4 随后,6381原来的主机回来了,是否会上位?

1. 恢复前

2. 恢复后

6381 不会上位并以节点的形式回归

3.2 集群不保证数据 致性100%OK,一定会有数据丢失情况,

Redis集群不保证强一致性,这意味着在特定的条件下,Redis集群可能会丢掉一些被系统收到的写入请求命令

3.3 手动故障转移 or 节点从属调整该如何处理

3.3.1 上面一换后6381、6384主从对调了,和原始设计图不一样了,该如何

3.3.2 重新登陆6381机器

3.3.3 常用命令CLUSTER FAILOVER

4. 主从扩容案例

4.1 新建6387、6388两个服务实例配置文件+新建后启动

IP: 192.168.111.174+端门6387/端门6388

vim /myredis/cluster/redisCluster6387.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6387
logfile "/myredis/cluster/cluster6387.log"
pidfile /myredis/cluster6387.pid
dir /myredis/cluster
dbfilename dump6387.rdb
appendonly yes
appendfilename "appendonly6387.aof"
requirepass 111111
masterauth 111111
cluster-enabled yes
cluster-config-file nodes-6387.conf
cluster-node-timeout 5000

vim /myredis/cluster/redisCluster6388.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6388
logfile "/myredis/cluster/cluster6388.log"
pidfile /myredis/cluster6388.pid
dir /myredis/cluster
dbfilename dump6388.rdb
appendonly yes
appendfilename "appendonly6388.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6388.conf
cluster-node-timeout 5000
 

4.2 启动87/88两个新的节点实例,此时他们自己都是master3

redis-server /myredis/cluster/redisCluster6387.conf
redis-server /myredis/cluster/redisCluster6388.conf

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

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

4.4 检查集群情况第1次

redis-cli -a 密码 --cluster check 真实ip地址:6381
redis-cli -a 111111 --cluster check 192.168.111.175:6381

 

4.5 重新分派槽号(reshard)

重新分派槽号

命令:redis-cli -a 密码 --cluster reshard IP地址:端口号
redis-cli -a 密码 --cluster reshard 192.168.111.175:6381

4.6 检查集群情况第2次 

redis-cli -a 密码 --cluster check 真实ip地址:6381
redis-cli -a 111111 --cluster check 192.168.111.175:6381

槽号分派说明

为什么6387是3个新的区间,以前的还是连续?
重新分配成本太高,所以前3家各自匀出来一部分,从6381/6383/6385三个旧节点分别匀出1364个坑位给新节点6387

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

命令:redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
redis-cli -a 111111 --cluster add-node 192.168.111.174:6388 192.168.111.174:6387 --cluster-slave --cluster-master-id 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f------- 这个是6387的编号,按照自己实际情况

4.8 检查集群情况第3次

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

5. 主从缩容案例

5.1 目的: 6387和6388下线

5.2 检查集群情况第一次,先获得从节点6388的节点ID

redis-cli -a 密码 --cluster check 192.168.111.174:6388


5.3 从集群中将4号从节点6388删除

命令:redis-cli -a 密码 --cluster del-node ip:从机端口 从机6388节点ID
redis-cli -a 111111 --cluster  del-node  192.168.111.174:6388 218e7b8b4f81be54ff173e4776b4f4faaf7c13da

redis-cli -a 111111 --cluster check  192.168.111.174: 6385

 检查一下发现,6388被删除了,只剩下7台机器了。

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

redis-cli -a 111111 --cluster reshard 192.168.111.175:6381

5.5 检查集群情况第二次 

redis-cli -a 111111 --cluster check 192.168.111.175:6381

 
4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了,不然要输入3次,一锅端

5.6 将6387删除

命令:redis-cli -a 密码 --cluster del-node ip:端口 6387节点ID

 
redis-cli -a 111111 --cluster del-node 192.168.111.174:6387 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f

5.7 检查集群情况第三次,6387/6388被彻底祛除

redis-cli -a 111111 --cluster check 192.168.111.175:6381

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

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

相关文章

基于Matlab实现多个图像压缩案例(附上源码+数据集)

图像压缩是一种将图像数据量减少的技术,以减少存储空间和传输带宽的需求。在本文中,我们将介绍如何使用Matlab实现图像压缩。 文章目录 简单案例源码数据集下载 简单案例 首先,我们需要了解图像压缩的两种主要方法:有损压缩和无…

深入理解联邦学习——联邦学习的分类:基础知识

分类目录:《深入理解联邦学习》总目录 在实际中,孤岛数据具有不同分布特点,根据这些特点,我们可以提出相对应的联邦学习方案。下面,我们将以孤岛数据的分布特点为依据对联邦学习进行分类。 考虑有多个数据拥有方&…

[国产MCU]-W801开发实例-MQTT客户端通信

MQTT客户端通信 文章目录 MQTT客户端通信1、MQTT介绍2、W801的MQTT客户端相关API介绍3、代码实现本文将详细介绍如何在W801中使用MQTT协议通信。 1、MQTT介绍 MQTT 被称为消息队列遥测传输协议。它是一种轻量级消息传递协议,可通过简单的通信机制帮助资源受限的网络客户端。 …

thinkphp6 入门(5)-- 模型是什么 怎么用

一、模型 MVC架构 之前开发一个功能,后端为在控制器(C)中写 php SQL,前端为在页面(V)中写html css js,这就形成了 VC 架构。 但是发现,相同的数据逻辑(SQL&#xf…

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

一、会话跟踪技术(CookieSession) 1.1 预备知识 1. 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 2. 会话跟踪&a…

l8-d6 socket套接字及TCP的实现框架

一、socket套接字 /*创建套接字*/ int socket(int domain, int type, int protocol); /*绑定通信结构体*/ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); /*监听套接字*/ int listen(int sockfd, int backlog); /*处理客户端发起的连接&#xff0…

Beats:安装及配置 Metricbeat (二)- 8.x

这篇文章是继文章 “Beats:安装及配置 Metricbeat (一)- 8.x” 的续篇。你可以先阅读之前的那篇文章再继续阅读这篇文章。我们在这篇文章中继续之前的探讨。 使用 fingerprint 来代替证书 在实际的使用中,我们需要从 Elasticsear…

【Eclipse】Project interpreter not specified 新建项目时,错误提示,已解决

目录 0.环境 1)问题截图: 2)错误发生原因: 1.解决思路 2.具体步骤 0.环境 windows 11 64位,Eclipse 2021-06 1)问题截图: 2)错误发生原因: 由于我手欠,将…

[github-100天机器学习]day4+5+6 Logistic regression

https://github.com/MLEveryday/100-Days-Of-ML-Code/blob/master/README.md 逻辑回归 逻辑回归用来处理不同的分类问题,这里的目的是预测当前被观察的对象属于哪个组。会给你提供一个离散的二进制输出结果,一个简单例子:判断一个人是否会在…

一加11/Ace2/10Pro手机如何实现全局120HZ高刷-游戏超级流畅效果

已经成功root啦。安卓13目前也一样支持LSPosed框架,如果你对LSP框架有需求,也可以使 自测120HZ刷新率诞生以后,很多小伙伴用上了就很难回来啦,一加11/Ace2/10Pro/9pro手 机厂商也对新机做了很多的适配,让我们日常使用起…

【Spring Boot】使用MyBatis注解实现数据库操作

使用MyBatis注解实现数据库操作 MyBatis还提供了注解的方式,相比XML的方式,注解的方式更加简单方便,无须创建XML配置文件。接下来好好研究注解的使用方式。 1.XML和注解的异同 1)注解模式使用简单,开发效率高&#…

Vue3响应式源码实现

Vue3响应式源码实现 初始化项目结构 vue-proxy ├── effect.js ├── effect.ts ├── index.html ├── index.js ├── package.json ├── reactive.js ├── reactive.ts └── webpack.config.jsreactive.ts import { track, trigger } from "./effect&q…

文心一言api接入如何在你的项目里使用文心一言

文心一言api接入在项目里接入文心一言 一、百度文心一言API二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API 基于百度文心一言语言大模型的智能文本对话AI机器人…

DDR2 IP核调式记录2

本文相对简单,只供自己看看就行。从其它的博客找了个代码,然后记录下仿真波形。 1. 功能 直接使用quartus生成的DDR2 IP核,然后实现循环 -->写入burst长度的数据后读出。 代码数据的传输是32位,实际使用了两片IC。因此IP核也是…

npm版本升级报错

解决方法: 执行npm install --legacy-peer-deps依赖对等 npm install xxx --legacy-peer-deps命令用于绕过peerDependency里依赖的自动安装;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但版本不同的问题,以npm v4-v6的方式去继续执行…

OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found

在OC的项目里加入Swift代码,创建完桥接文件后,需要倒入Swift头文件,头文件的格式为“项目名-Swift.h”。 如下图,我在Xcode上看到我的项目名为YichangPark,导入 #import "YiChangPark-Swift.h" 之后提示 “Y…

手写Mybatis:第15章-返回Insert操作自增索引值

文章目录 一、目标:Insert自增索引值二、设计:Insert自增索引值三、实现:Insert自增索引值3.1 工程结构3.2 Insert自增索引值类图3.3 修改执行器3.3.1 修改执行器接口3.3.2 抽象执行器基类 3.4 键值生成器3.4.1 键值生成器接口3.4.2 不用键值…

使用vs播放.wav文件

本次操作在Windows10平台vs2019完成。 一、准备好.wav资源文件 上网找到自己想要播放的音乐文件,下载到本地后建议放到项目所在文件夹中。 二、添加资源文件 在“解决方案”中右键“资源文件”,点击“添加”,点击“资源”, 选…

【AGC】App Linking首次不能重定向指定页面的问题

【关键字】 AGC、App Linking、重定向 【问题描述】 有开发者反馈app linking未安装应用时,自定义地址可以重定向到apk应用内的任意页面会出现问题。app linking 未安装apk时指定到对应页面时,只拉开应用市场,安装后首次不能跳转到指定页面…