前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis集群

redis集群

作者头像
xiaozhangStu
发布2023-10-19 18:50:26
1580
发布2023-10-19 18:50:26
举报
文章被收录于专栏:xiaozhangStuxiaozhangStu

redis集群

集群模式

作用

集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。

集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。

集群的作用,可以归纳为两点:

1、数据分区:数据分区(或称数据分片)是集群最核心的功能。

集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。

Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出……。

2、高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。

关键字

分区 扩容 故障转移

搭建步骤

1.明确集群需要的实例端口 80 81 82 83 84 85 86 87 88

80-8182主从

83-8485主从

86-8788主从

无效明确,因为我们集群不主动去配置他的主从关系,而是交到我们redis本身去配置他的主从关系

2.删除rdb和aof文件

3.复制出多个redis配置文件更改配置信息,先配置一个,然后再复制

1).daemonize yes

2).修改pid文件名

3).指定端口号

4).修改log文件名字

5).修改dump文件名字

6).cluster-enabled yes 打开集群模式

7).cluster-config-file nodes-6380.conf 设定节点配置文件名

8.)cluster-node-timeout 15000 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。

4.复制出另外8个文件,然后vim进去输入

代码语言:javascript
复制
:%s/6380/6381  //意思就是将文中所有的6379变成6380

5.按照redis文件启动9个服务

代码语言:javascript
复制
./redis-server ../redis-cluster-80.conf
.........

6.合并成集群

代码语言:javascript
复制
./redis-cli --cluster create  xxx:6380 xxx:6381 xxx:6382 xxx:6383 xxx:6384 xxx:6385 xxx:6386 xxx:6387 xxx:6388 --cluster-replicas  2 
//replicas 2 配置集群,一台主机,二台从机,正好三组。如果是云服务器最好不要用外网地址,用127.0.0.1,不然会出现故障转移失败的问题,如果你是本机的虚拟机就是这个操作,云服务器要考虑相关的内存大小和网络通信问题
​
[WARNING] Some slaves are in the same host as their master就对了,他在问你是不是要接受这样的主从分配 然后记住他给你分配的主节点 然后把这些节点端口都开开,在运行如上的命令再  输入yes回车就完事了  一定要输入yes  输入y是不行的
你还要把集群总线给暴露出来 就是你redis主机端口前面再加个1  比如说 6380 前面加个1 就是16380,要把这个端口暴露
總共要開的端口 如下
26380/tcp 6380/tcp 6381/tcp 6382/tcp 26379/tcp 6383/tcp 6384/tcp 6385/tcp 6386/tcp 6387/tcp 6388/tcp 16380/tcp 16381/tcp 16382/tcp
如果出现故障转移失败的现象,注意总线端口是否打开,比如说16380-16388都要开开
26380/tcp 6380/tcp 6381/tcp 6382/tcp 26379/tcp 6383/tcp 6384/tcp 6385/tcp 6386/tcp 6387/tcp 6388/tcp 16380/tcp 16381/tcp 16382/tcp 16383/tcp 16384/tcp 16385/tcp 16386/tcp 16387/tcp 16388/tcp
输出All 16384 slots covered.就行了

7.登录

代码语言:javascript
复制
redis-cli -p
这种方式不推荐使用,既然用了集群就要用集群的方式,用这种方式可能会出现error,(会出现MOVED重定向操作)
redis-cli -c -p
这种事真正集群使用的连接操作,他会切换到相应的主机
​

8.查看集群信息

代码语言:javascript
复制
cluster nodes
分配原则

一个集群至少要有三个主节点。

选项 --cluster-replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。

分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上。

插槽

我们在之前会看到一个 All 16384 slots covered这个样的一个信息

这个其实就是告诉我们一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个,

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023/10/12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis集群
    • 集群模式
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档