第 1 集 Redis6.X 节点高可用之 Cluster 集群介绍
简介: Redis6.X 节点高可用之 Cluster 集群介绍
-
背景
- Sentinel 解决了主从架构故障自动迁移的问题
- 但是 Master 主节点的写能力和存储能力依旧受限
- 使用 Redis 的集群 cluster 就是为了解决单机 Redis 容量有限的问题,将数据按一定的规则分配到多台机器
-
什么是集群 Cluster
-
Redis 集群模式介绍
- Cluster 模式是 Redis3.0 开始推出
- 采用无中心结构,每个节点保存数据和整个集群状态, 每个节点都和其他所有节点连接
- 官方要求:至少 6 个节点才可以保证高可用,即 3 主 3 从;扩展性强、更好做到高可用
- 各个节点会互相通信,采用 gossip 协议交换节点元数据信息
- 数据分散存储到各个节点上

第 2 集 Redis6.X 节点高可用之 Cluster 数据分片和虚拟哈希槽介绍
简介: Redis6.X 节点高可用之 Cluster 数据分片和虚拟哈希槽介绍
-
背景
- 主节点的写能力和存储能力受限
- 单台机器无法满足需求,因此把数据分散存储到多个机器
- 类似案例:mysql 分库分表

-
常见的数据分区算法
-
什么是 Redis 的哈希槽 slot
- Redis 集群预分好 16384 个槽,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384 的值,决定将一个 key 放到哪个桶中
-
大体流程

-
使用哈希槽的好处就在于可以方便的添加或移除节点。
- 当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;
- 当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了
第 3 集 Redis6.X 节点高可用之 Cluster 集群环境准备
简介: Redis6.X 节点高可用之 Cluster 集群环境准备
-
说明
- 旧版本的需要使用 ruby 语言进行构建,新版 5 之后直接用 redis-cli 即可
- 6 个节点,三主双从,主从节点会自动分配,不是人工指定
- 主节点故障后,从节点会替换主节点
-
注意点:
-
节点(网络安全组开放端口)
- 6381、6382
- 6383、6384
- 6385、6386

-
配置
bind 0.0.0.0
port 6381
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1.log"
dbfilename "xdclass1.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1.aof"
masterauth "123456"
#是否开启集群
cluster-enabled yes
# 生成的node文件,记录集群节点信息,默认为nodes.conf,防止冲突,改为nodes-6381.conf
cluster-config-file nodes-6381.conf
#节点连接超时时间
cluster-node-timeout 20000
#集群节点的ip,当前节点的ip
cluster-announce-ip 172.18.172.109
#集群节点映射端口
cluster-announce-port 6381
#集群节点总线端口,节点之间互相通信,常规端口+1万
cluster-announce-bus-port 16381
bind 0.0.0.0
port 6386
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis6.log"
dbfilename "xdclass6.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly6.aof"
masterauth "123456"
cluster-enabled yes
cluster-config-file nodes-6386.conf
cluster-node-timeout 20000
cluster-announce-ip 172.18.172.109
cluster-announce-port 6386
cluster-announce-bus-port 16386
第 4 集 Redis6.X 节点高可用之 Cluster 集群三主三从搭建实战
简介: Redis6.X 节点高可用之 Cluster 集群三主三从搭建实战
-
启动 6 个节点
./redis-server ../conf/cluster/redis1.conf
./redis-server ../conf/cluster/redis2.conf
./redis-server ../conf/cluster/redis3.conf
./redis-server ../conf/cluster/redis4.conf
./redis-server ../conf/cluster/redis5.conf
./redis-server ../conf/cluster/redis6.conf
-
加入集群(其中一个节点执行即可)
- --cluster 构建集群全部节点信息
- --cluster-replicas 1 主从节点的比例,1 表示 1 主 1 从的方式
./redis-cli -a 123456 --cluster create 172.18.172.109:6381 172.18.172.109:6382 172.18.172.109:6383 172.18.172.109:6384 172.18.172.109:6385 172.18.172.109:6386 --cluster-replicas 1

第 5 集 Redis6.X 节点高可用之 Cluster 集群读写命令实战
简介: Redis6.X 节点高可用之 Cluster 集群读写命令
第 6 集 Redis6.X 节点高可用之 Cluster 集群整合 SpringBoot2.X
简介: Redis6.X 节点高可用之 Cluster 集群整合 SpringBoot2.X
-
不在同个网络,所以集群改为阿里云公网 ip 地址才可以访问
-
连接池添加 (之前添加)
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
-
配置文件(注释 Sentinel 相关配置)
cluster:
#命名的最多转发次数
max-redirects: 3
nodes: 8.129.113.233:6381,8.129.113.233:6382,8.129.113.233:6383,8.129.113.233:6384,8.129.113.233:6385,8.129.113.233:6386
第 7 集 Redis6.X 高可用之 Cluster 集群故障自动转移实战和总结
简介: Redis6.X 节点高可用之 Cluster 集群故障自动转移实战