一. redis-cluster架构图
架构细节:
- 所有的redis节点彼此互联(PING-PONG机制),节点的fail是通过集群中超过半数的节点检测失效时才生效
- 存取数据时连接任一节点都可以,但集群中有一个节点fail整个集群都会fail
Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点 crc16(key)%16384=0~16383
二. redis集群的搭建
- 搭建之前i请先在linux内安装一台redis服务器,redis安装请参考本链接博客内容:
https://blog.csdn.net/qq_46147786/article/details/126503802?spm=1001.2014.3001.5501
- Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
- Redis集群至少需要6台服务器。
- 搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
2.1 集群搭建环境
-
使用ruby脚本搭建集群,需要安装ruby(redis-3.0.0.gem 需要上传到linux)
[root@upload ~]# yum install ruby
[root@upload ~]# yum install rubygems
[root@upload ~]# gem install redis-3.0.0.gem[root@localhost ~]# cd redis-3.0.0/src
[root@localhost src]# ll *.rb-rwxrwxr-x. 1 root root 48141 Apr 1 2015 redis-trib.rb
2.2 搭建步骤
注意:必须删除dump.rdb和appendonly.aof文件(不删除的搭建会报错)
- 搭建伪分布式,需要6个redis实例放到/usr/local/redis-cluster目录下,并且运行在不同的端口7001-7006
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7001
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7002
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7003
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7004
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7005
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7006
-
修改配置文件
进入配置文件:redis.conf,修改一下内容:
port 7001
cluster-enable yes
-
创建启动集群的脚本:start-all.sh 放在/usr/java/redis-cluster目录下。
cd redis-7001
./bin/redis-server bin/redis.conf
cd ..
cd redis-7002
./bin/redis-server bin/redis.conf
cd ..
cd redis-7003
./bin/redis-server bin/redis.conf
cd ..
cd redis-7004
./bin/redis-server bin/redis.conf
cd ..
cd redis-7005
./bin/redis-server bin/redis.conf
cd ..
cd redis-7006
./bin/redis-server bin/redis.conf
cd ..
[root@localhost redis-cluster]# chmod 777 start-all.sh
- 创建关闭集群的脚本:shutdown-all.sh,放在/usr/local/redis-cluster目录下。
cd redis-7001
./redis7001/ bin/redis-cli -p 7001 shutdown
./redis7001/ bin/redis-cli -p 7002 shutdown
./redis7001/ bin/redis-cli -p 7003 shutdown
./redis7001/ bin/redis-cli -p 7004 shutdown
./redis7001/ bin/redis-cli -p 7005 shutdown
./redis7001/ bin/redis-cli -p 7006 shutdown
[root@localhost redis-cluster]# chmod 777shutdown-all.sh
- 使用ruby脚本搭建redis集群----搭建redis集群之前6台redis服务器必须全部开启
cd /usr/upload/redis.3.0.0/src
./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
三. 测试
- 启动时使用-c参数来启动集群模式,命令如下:
./redis-cli -c -p 7001
- redis cluster命令
cluster info #打印集群的信息
cluster nodes #列出集群当前已知的所有节点(node),以及这些节点的相关信息