阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis 集群

378次阅读
没有评论

共计 7650 个字符,预计需要花费 20 分钟才能阅读完成。

sentinel 模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或 sentinel 模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个 Redis 实例中。cluster 模式的出现就是为了解决单机 Redis 容量有限的问题,将 Redis 的数据根据一定的规则分配到多台机器。

一、集群模式概述

1.1、什么是集群模式

Redis 的哨兵和主从模式基本已经可以实现高可用和读写分离,但是在这种模式下每台 Redis 服务器都存储相同的数据,浪费内存空间,所以在 redis 上加入了 Cluster 集群模式,实现了 Redis 的分布式存储,也就是说 Redis 节点上存储不同的内容。

Redis 集群

1.2、集群模式特点

多个 redis 节点网络互联,数据共享

所有的节点都是一主一从(也可以是一主多从),其中从节点不提供服务,仅作为备用

不支持同时处理多个 key(如 MSET/MGET),因为 redis 需要把 key 均匀分布在各个节点上,并发量很高的情况下同时创建 key-value 会降低性能并导致不可预测的行为

支持在线增加、删除节点

客户端可以连接任何一个主节点进行读写

1.3、集群工作方式

数据存取工作方式

在 Redis 的每一个节点上,都有这么两个东西,一个是插槽(slot),一个是 cluster。

插槽的取值范围是:0-16383。cluster,可以理解为是一个集群管理的插件。

当我们的存取 Key 的时候,Redis 会根据算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

集群工作方式

为了保证高可用,redis 集群模式引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。

那么如何发现主节点宕机?当其它主节点 ping 一个主节点 C 时,如果半数以上的主节点与 C 通信超时,那么认为主节点 C 宕机了。如果主节点 C 和它的从节点 C1 都宕机了,那么该集群就无法再提供服务了。

二、集群模式的搭建

2.1、搭建前的准备

集群搭建:至少要三个 master

第一步:创建一个文件夹 redis-cluster,然后在其下面分别创建 6 个文件夹如下:

[root@zutuanxue redis]# mkdir redis-cluster [root@zutuanxue redis]# cd redis-cluster/ [root@zutuanxue redis-cluster]# mkdir 7001 [root@zutuanxue redis-cluster]# mkdir 7002 [root@zutuanxue redis-cluster]# mkdir 7003 [root@zutuanxue redis-cluster]# mkdir 7004 [root@zutuanxue redis-cluster]# mkdir 7005 [root@zutuanxue redis-cluster]# mkdir 7006

第二步:把之前的 redis.conf 配置文件分别 copy 到 700* 下

[root@zutuanxue redis]# cp redis.conf ./redis-cluster/7001/redis.conf [root@zutuanxue redis]# cp redis.conf ./redis-cluster/7002/redis.conf [root@zutuanxue redis]# cp redis.conf ./redis-cluster/7003/redis.conf [root@zutuanxue redis]# cp redis.conf ./redis-cluster/7004/redis.conf [root@zutuanxue redis]# cp redis.conf ./redis-cluster/7005/redis.conf [root@zutuanxue redis]# cp redis.conf ./redis-cluster/7006/redis.conf

第三步:由于 redis 集群需要使用 ruby 命令,所以我们需要安装 ruby

yum install ruby yum install rubygems gem install redis #(安装 redis 和 ruby 的接口)

2.2、修改集群配置

[root@zutuanxue redis]# vim ./redis-cluster/7001/redis.conf # 需要修改的配置 daemonize yes port 700* #(分别对每个机器的端口号进行设置) bind 192.168.1.171 #(必须要绑定当前机器的 ip,不然会无限悲剧下去哇.. 深坑勿入!!!) dir /usr/local/redis-cluster/700*/ #(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,深坑勿入!!!) appendonly yes cluster-enabled yes #(启动集群模式,开始玩耍) cluster-config-file nodes700*.conf#(这里 700x 最好和 port 对应上) cluster-node-timeout 5000 #redis 节点宕机被发现的时间

注意:

每个文件要修改端口号,bind 的 ip,数据存放的 dir,并且 nodes 文件都需要进行修改!

2.3、启动 redis 服务

[root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7001/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7002/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7003/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7004/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7005/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7006/redis.conf

2.4、创建集群

执行 redis-cli –cluster create 命令

[root@zutuanxue redis]# ./src/redis-cli --cluster create 192.168.1.121:7001 192.168.1.121:7002 192.168.1.121:7003 192.168.1.121:7004 192.168.1.121:7005 192.168.1.121:7006 --cluster-replicas 1

说明:

create

表示创建一个 redis 集群。

–cluster-replicas 1

表示为集群中的每一个主节点指定一个从节点,即一比一的复制。

Redis 集群

2.5、查看 redis 服务状态

[root@zutuanxue redis]# ps -ef|grep redis

Redis 集群

2.6、进入一个节点

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7001 192.168.1.121:7001> info cluster # Cluster cluster_enabled:1 # 节点是否为 cluster 模式。1 是 0 否

2.7、测试操作

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> set b fdfsfsd -> Redirected to slot [3300] located at 192.168.1.121:7001 OK 192.168.1.121:7001> get b "fdfsfsd" 192.168.1.121:7001> set c fdsfdfdsfds -> Redirected to slot [7365] located at 192.168.1.121:7002 OK 192.168.1.121:7002> get c "fdsfdfdsfds" 192.168.1.121:7002> set x fdsfdsfsdf -> Redirected to slot [16287] located at 192.168.1.121:7003 OK 192.168.1.121:7003> keys * 1) "x" 2) "a" 192.168.1.121:7003> get b -> Redirected to slot [3300] located at 192.168.1.121:7001 "fdfsfsd" 192.168.1.121:7001> keys * 1) "b" 192.168.1.121:7001> set d fdsfdsfsd -> Redirected to slot [11298] located at 192.168.1.121:7003 OK 192.168.1.121:7003> get d "fdsfdsfsd" 192.168.1.121:7003> set x zhangsan OK 192.168.1.121:7003> get x "zhangsan"

三、集群操作

3.1、主从切换

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7001 192.168.1.121:7001> cluster nodes # 查看集群中的节点

Redis 集群

停掉 7003,在查看节点信息

[root@zutuanxue redis]# ps -ef|grep redis root 31370 1 0 21:04 ? 00:00:05 ./src/redis-server 192.168.1.121:7001 [cluster] root 31375 1 0 21:04 ? 00:00:05 ./src/redis-server 192.168.1.121:7002 [cluster] root 31380 1 0 21:04 ? 00:00:05 ./src/redis-server 192.168.1.121:7003 [cluster] root 31385 1 0 21:05 ? 00:00:05 ./src/redis-server 192.168.1.121:7004 [cluster] root 31394 1 0 21:05 ? 00:00:05 ./src/redis-server 192.168.1.121:7005 [cluster] root 31399 1 0 21:05 ? 00:00:05 ./src/redis-server 192.168.1.121:7006 [cluster] root 32361 2769 0 22:39 pts/0 00:00:00 grep --color=auto redis [root@zutuanxue redis]# kill -s 9 31380 [root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

启动 7003,查看节点信息

[root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7003/redis.conf [root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

3.2、从节点操作

3.2.1、前期准备

准备一个新的 Redis,7007

[root@zutuanxue redis]# cd redis-cluster/ [root@zutuanxue redis-cluster]# ls 7001 7002 7003 7004 7005 7006 [root@zutuanxue redis-cluster]# mkdir 7007 [root@zutuanxue redis-cluster]# cp ./7006/redis.conf ./7007/redis.conf [root@zutuanxue redis-cluster]# cd .. [root@zutuanxue redis]# vim ./redis-cluster/7007/redis.conf [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7007/redis.conf

3.2.2、增加从节点

[root@zutuanxue redis]# ./src/redis-cli --cluster add-node 192.168.1.121:7007 192.168.1.121:7004 --cluster-slave

Redis 集群

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

3.2.3、删除从节点

删除 7007 节点

[root@zutuanxue redis]# ./src/redis-cli --cluster del-node 192.168.1.121:7007 99d2ceb080ef0d701546dea0901d4784a201fc06 >>> Removing node 99d2ceb080ef0d701546dea0901d4784a201fc06 from cluster 192.168.1.121:7007 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

3.3、主节点操作

3.3.1、添加主节点

将 7007 设置为 7006 的主节点

保证 7007 服务是启动的

[root@zutuanxue redis]# ./src/redis-cli --cluster add-node 192.168.1.121:7007 192.168.1.121:7006

Redis 集群

查看节点信息,未分配槽位不能存储数据

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

重新分配槽位

[root@zutuanxue redis]# ./src/redis-cli --cluster reshard 192.168.1.121:7007

Redis 集群

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

3.3.2、给主节点加从节点

准备一个新的 Redis,7008

[root@zutuanxue redis]# cd redis-cluster/ [root@zutuanxue redis-cluster]# ls 7001 7002 7003 7004 7005 7006 7007 [root@zutuanxue redis-cluster]# mkdir 7008 [root@zutuanxue redis-cluster]# cp ./7007/redis.conf ./7008/redis.conf [root@zutuanxue redis-cluster]# vim ./7008/redis.conf [root@zutuanxue redis-cluster]# cd .. [root@zutuanxue redis]# ./src/redis-server ./redis-cluster/7008/redis.conf

为 7007 添加从节点 7008

[root@zutuanxue redis]# ./src/redis-cli --cluster add-node 192.168.1.121:7008 192.168.1.121:7007 --cluster-slave

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

3.4、主节点操作

3.4.1、删除主节点

删除从节点

[root@zutuanxue redis]# ./src/redis-cli --cluster del-node 192.168.1.121:7008 8e52c94dafa72df26b1eddf94363a4780bed9339 >>> Removing node 8e52c94dafa72df26b1eddf94363a4780bed9339 from cluster 192.168.1.121:7008 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.

移动数据将 7007 移动到 7001 节点

[root@zutuanxue redis]# ./src/redis-cli --cluster reshard 192.168.1.121:7007

Redis 集群

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

删除主节点

[root@zutuanxue redis]# ./src/redis-cli --cluster del-node 192.168.1.121:7007 d7a3e48cd142dce6566023fce21e31669e9fa3d5 >>> Removing node d7a3e48cd142dce6566023fce21e31669e9fa3d5 from cluster 192.168.1.121:7007 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node.

查看节点信息

[root@zutuanxue redis]# ./src/redis-cli -c -h 192.168.1.121 -p 7005 192.168.1.121:7005> cluster nodes

Redis 集群

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-09发表,共计7650字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7807481
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...