Redis Cluster(Redis 集群)的搭建
1、redis-cluster(redis集群)
redis-cluster投票容错机制:Redis 之间通过互相的 ping-pong 判断是否节点可以连接上。如果有一半以上的节点去ping 一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的从节点(必须主备模式)。
如果某个节点和所有从节点全部挂掉,集群就进入 fail 状态。 如果有一半以上的主节点宕机,那么集群同样进入 fail 了状态。
由于投票容错机制集群最少需要3个节点
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
根据Redis槽的概念集群最多16384个
2、集群搭建
Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机,因此Redis集群至少需要6台服务器。
搭建伪分布式。使用一台虚拟机运行6个redis实例。需要修改redis的端口号为7001-7006.
在/usr/local目录下创建redis-cluster目录,并将redis目录下的redis安装文件复制到redis-cluster目录
1 | cd /usr/local |
删除复制文件中的数据文件包括dump.rdb和.aof文件
1 | cd /usr/local/redis-cluster/redis01 |
修改redis.conf文件
1 | vim redis.conf |
将redis01再复制5份
1 | cd .. |
分别修改端口号为7002-7006
批处理启动6个redis服务
1 | #创建一个批处理文件 |
1 | 加入代码 |
现在文件还不能执行,需要授权
1 | chmod u+x start-all.sh |
1 | #执行 |
1 | 查看是否启动成功 |
搭建集群需要redis源文件的.rb脚本
找到redis源文件中的src/redis-trib.rb文件,并将之复制到redis-cluster目录下
1 | cd /usr/local/redis/redis-5.0.3/src |
因为使用的是ruby脚本搭建服务器,所以需要ruby环境
2.1、安装ruby环境
1 | #这两个旧版本先别装会报错,往后看,装新版本 |
下载 redis-3.0.0.gem
下载链接:redis-3.0.0.gem
提取码:fs2u
将redis-3.0.0.gem传到linux系统下并安装
安装gem install redis-3.0.0.gem
执行redis-trib.rb脚本文件
1 | ./redis-trib.rb create --replicas 1 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 ip:7006 |
报错
ruby版本问题
卸载低版本
1 | yum remove -y ruby |
官网下载新版本
ruby
1 | #解压 |
进入任意redis实例
1 | cd redis01 |
这儿有个坑!!!下面是输入yes分配槽,只输y不行
2.2、连接节点操作数据库
进入任意实例使用redis-cli连接节点
1 | cd redis01 |
计算出槽后将数据放在了7003上
一、Redis服务器搭建与学习
三、SSM整合Redis Cluster(Redis集群)
四、Redis集群踩的坑及报错记录并解决