作者:霞慧水灵灵_973 | 来源:互联网 | 2023-09-08 08:42
目录
架构图
容错图
架构细节
节点分配
集群的搭建
集群搭建环境
使用方式
数据测试
架构图
redis-cluster架构图
容错图
redis-cluster投票:容错图
架构细节
- 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
- 节点的fail是通过集群中超过半数的节点检测失效时才生效.
-
客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任 何一个可用节点即可
-
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->vallue
节点分配
Redis 集群中内置了 16384 个哈希槽&#xff0c;当需要在 Redis 集群中放置一个 key-value 时&#xff0c;redis 先对 key 使用 crc16 算法算出
一个结果&#xff0c;然后把结果对 16384 求余数&#xff0c;这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽&#xff0c;redis 会根据节点数量
大致均等的将哈希槽映射到不同的节点。如下图所示
集群的搭建
Redis集群中至少应该有三个节点。要保证集群的高可用&#xff0c;需要每个节点有一个备份机
所以Redis集群至少需要6台服务器&#xff0c;而考虑到太占用资源&#xff0c;我们可以搭建伪分布式
可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
首先创建个redis-cluster文件夹&#xff0c;我的是在local下创建的
mkdir /usr/local/redis-cluster
然后把已经装好redis文件下的bin目录复制到redis-cluster文件下&#xff0c;没装的话看下面这篇博客
cp /usr/local/redis/bin /usr/local/redis-cluster/redis-01 -r
如果redis-01中有dump.rdb话就删除
rm -f dump.rdb
更改redis.conf配置文件&#xff0c;更改端口和放开cluster-enabled yes
vim redis.conf
然后把redis-01复制5个&#xff0c;在redis-cluster文件目录下
cp -r redis-01/ redis-02
cp -r redis-01/ redis-03
cp -r redis-01/ redis-04
cp -r redis-01/ redis-05
cp -r redis-01/ redis-06
把每个复制的文件下的port端口改了
启动&#xff1a;一个个启动太麻烦了&#xff0c;可以写个批处理 vim start-all.sh 把下面内容复制到里面保存
cd redis-01
./redis-server redis.conf
cd ..
cd redis-02
./redis-server redis.conf
cd ..
cd redis-03
./redis-server redis.conf
cd ..
cd redis-04
./redis-server redis.conf
cd ..
cd redis-05
./redis-server redis.conf
cd ..
cd redis-06
./redis-server redis.conf
cd ..
给这个批处理赋予权限
chmod u&#43;x start-all.sh
查看是否启动成功
ps aux|grep redis
接下来把这六个节点连接到一起把槽分配好&#xff0c;需要一个工具&#xff08;ruby脚本&#xff09;&#xff0c;在redis源代码中&#xff0c;复制过来
cp /redis-3.0.0/src/redis-trib.rb /usr/local/redis-cluster/
集群搭建环境
使用ruby脚本搭建集群&#xff0c;需要ruby环境 &#xff0c;输入以下命令
yum install ruby
yum install rubygems
安装ruby脚本运行使用的包&#xff0c;先把包下载下来&#xff0c;下面提供了网盘链接
链接&#xff1a;https://pan.baidu.com/s/1jUyFF0KmMOsj5IfzYhgz8w 提取码&#xff1a;t349
然后输入以下命令安装
gem install redis-3.0.0.gem
装好后就可以启动啦&#xff0c;不过启动时需要设置参数
./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006
上面的IP地址要改为自己的
启动后的结果为
可以看到各个节点的创建和连接&#xff0c;槽的分配&#xff0c;主从节点的创建都已成功&#xff0c;最后yes就可以了
可以看到集群已经搭建成功了。注意&#xff1a;要关闭防火墙
使用方式
先连接集群&#xff0c;任意节点都行
redis-01/redis-cli -p 7004 -c -p是指定端口号 -c是说明连接的是集群
数据测试
可以看到每次添加数据它都能均匀的分配到每个主节点&#xff0c;数据测试也没问题&#xff0c;接下来可以使用了