redis集群

2023-10-19 18:50:26 浏览数 (2)

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 个插槽的其中一个,

0 人点赞