Redis Cluster集群方案

RedisCluster 集群方案

目录

RedisCluster 集群方案

简介

核心原理

配置

节点配置

集群配置

健康检查

常见管理手段

扩容-增加 Redis 节点

扩容-slot 自动平衡

缩容-slot 手动分配

缩容-删除 Redis 节点


简介

Redis 集群实现了一个数据分布式存储、节点水平扩容、故障自动转移的集群方案

1. 存储:

Redis 集群实现了对 Redis 的水平扩容,即启动 N 个 Redis 节点,将整个数据库分布存储在这 N 个节点中,每个节点存储总数据的 1/N

2. 水平扩容:

Redis 集群模式用来解决单 Redis 数据量瓶颈,并且不再需要配置单独的哨兵,可以进行水平扩展

3. 故障自动转移:

Redis 集群将 key 通过 crc16 运算后与 16384 取模,将 key 分布到固定 16384 个槽位(slot)中的一个(0-16383),每个 redis 分别保管不同 的槽位,不同的 Redis 子集群分管不同的槽位,每个子集可用一主多从实现,进行故障自动转移

4. 注意:

并且集群模式默认使用 db0 不支持 select 别的 db

核心原理

Redis 集群采用了哈希 Slot+主从节点实现了一个数据分布式存储、节点水平扩容、故障自动转移的集群方案

为了提高效率,Redis 集群客户端维护当前插槽配置的映射,比如像 Java 实现的 JedisCluster

Redis Cluster集群方案_第1张图片

配置

节点配置

1. redis.conf 单点增加配置

cluster-enabled yes

cluster-config-file nodes-{port}.conf

2. 节点数量

要求节点数量为 2*N=2 *N个节点

生产要求至少 2 台机器,保证挂掉一台机器或者一个节点后,服务仍能正常进行

而且主从不能配对在同一台机器上

3. 启动所有节点

以 cluster 模式启动 2*N 个 redis 服务

集群配置

1. 创建集群 ./redis-cli --cluster create 192.168.128.167:6381 192.168.128.167:6382 192.168.128.167:6383

192.168.128.167:6384

192.168.128.167:6385 192.168.128.167:6386 --cluster-replicas 1

2. 数据目录:这时候在数据目录下面会生成集群配置文件

Redis Cluster集群方案_第2张图片

健康检查

redis-cli --cluster info 192.168.128.167:6381

redis-cli --cluster check 192.168.128.167:6381

常见管理手段

扩容-增加 Redis 节点

准备单节点 (一主一丛)

按集群环境搭建的要求准备好单节点

192.168.128.167:6387 和 192.168.128.167:6388

添加主节点

redis-cli --cluster add-node 192.168.128.167:6387 192.168.128.167:6381

第一个节点为待加入的新节点,后面一个节点为集群中的任意节点

添加节点命令,默认是主节点

添加从节点

redis-cli --cluster add-node 192.168.128.167:6388 192.168.128.167:6381 --cluster-slave

不指定主节点时,由 Redis 自动分配,一般会自动加入没有从节点的主下面

redis-cli --cluster add-node 192.168.128.167:6388 192.168.128.167:6381 --cluster-slave --cluster-master-id

0d77af6e29a5d11ecb9cadbd6ceb282cceaca2c4

扩容-slot 自动平衡

当 Redis 集群中的节点出现新增时,我们需要对数据进行 slot 重新划配,有两种模式,自动平衡模式和手动划配模式

新增的时候我们一般采用自动平衡处理,这样方便快捷

自动平衡命令

./redis-cli --cluster rebalance 192.168.128.167:6381 --cluster-use-empty-masters --cluster-replace

缩容-slot 手动分配

当我们想要对 Redis 集群进行缩容时,在删除 Redis 节点前,我们必须对要删除的节点上的数据进行手动划配迁移缩容前的 key 分布

缩容-删除 Redis 节点

从节点可以随时移除,0 slot 的孤主节点可以随时移除(无从节点),其它主节点无法删除

红色框节点可以直接删除,1 号节点在删除对应的从节点后可以删除,2、3、4 号节点需要将数据迁走+删除对应的从节点后可删除

redis-cli --cluster del-node 192.168.128.167:6388 eba6e33d52b8d77832f3590de76ca53b6f78e71a

你可能感兴趣的:(Redis,redis,数据库,java)