0x1 使用场景
从之前介绍的哨兵模式可以知道,哨兵模式的好处如下:
- 自动化故障检测和自动故障转移
- 自动化的主备切换
- 集中的配置管理
这些优点使得哨兵模式成为了一个高可用性和可靠性较强的 Redis 部署方案。
但是仍然存在一个问题就是,哨兵模式做好了主备份切换,但是还是只有一个master,也就是存储的内存和写的上线取决于master的情况,如果说只是几G的数据,那这种方案没有问题,但是如果是几百G的数据,普通的redis或者哨兵模式都没有办法满足这个场景需求了,需要一个分布式方案。
Redis Cluster是Redis提供的分布式解决方案,它能够将多个Redis节点组合成一个集群,提供高性能和高可用性的数据存储服务。Redis Cluster的作用主要体现在以下几个方面:
- 分布式存储:Redis Cluster将数据分布在多个节点上,每个节点只负责一部分数据的存储和访问,从而实现了数据的分布式存储,提高了存储容量和吞吐量。
- 高可用性:Redis Cluster通过使用多个节点来提供服务,避免了单点故障的风险,即使某个节点发生故障,整个集群仍能够继续提供服务,保证了服务的高可用性。
- 高性能:Redis Cluster利用多个节点并行处理请求,从而提高了读写性能。此外,Redis Cluster还支持分片,将大的数据集分成多个小的数据集,每个节点只存储其中的一部分数据,从而提高了读写速度。
- 自动数据平衡:Redis Cluster会自动进行数据平衡,将数据均匀地分布在各个节点上,从而避免了节点负载不均的问题,保证了服务的可靠性和稳定性。
0x2 配置搭建
我们在单一机器上做这个实验,需要搭建6个redis实例(3主3从)通过不同的端口进行区分
ip | port |
---|---|
127.0.0.1 | 7001 |
127.0.0.1 | 7002 |
127.0.0.1 | 7003 |
127.0.0.1 | 7004 |
127.0.0.1 | 7005 |
127.0.0.1 | 7006 |
首先得安装redis
sudo apt-get install -y redis
然后修改下redis配置文件名称
cd /etc/redis
cp redis.conf redis-cluster-7001.conf
cp redis.conf redis-cluster-7002.conf
cp redis.conf redis-cluster-7003.conf
cp redis.conf redis-cluster-7004.conf
cp redis.conf redis-cluster-7005.conf
cp redis.conf redis-cluster-7006.conf
修改redis-cluster-*conf
// 改成对应端口
port 7001
// 安全模式关闭
protected-mode no
// 开启 cluster
cluster-enabled yes
// 不同实例不同名称
cluster-config-file nodes-7001.conf
启动redis实例
redis-server redis-cluster-7001.conf
redis-server redis-cluster-7002.conf
redis-server redis-cluster-7003.conf
redis-server redis-cluster-7004.conf
redis-server redis-cluster-7005.conf
redis-server redis-cluster-7006.conf
通过命令行创建redis集群
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
这里需要几秒钟创建完成,然后就可以验证了。
0x3 验证
首先连接
// 必须带-c
redis-cli -p 7001 -c
127.0.0.1:7001> set name1 111
-> Redirected to slot [12933] located at 127.0.0.1:7003
OK
127.0.0.1:7003>
可以看到在设置缓存的时候跳到7003保存了,说明已经配置成功,还有一些扩容和缩容的操作可以自己探索下,当做课后作业。