集群搭建前分享个redis笔记博客链接:https://blog.csdn.net/weixin_43672855/category_9843184.html
https://blog.csdn.net/qq_33423418/article/details/101351944
一、Redis Cluster集群搭建
1、redis集群中至少应该有奇数个节点,所以搭建集群最少需要3台主机。同时每个节点至少有一个备份节点,所以最少需要创建使用6台机器,才能完成Redis Cluster集群。我们这里搭建三个master节点,并且给每个master节点搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地址就可以了)部署6个redis实例,三主三从步骤如下:
cd /usr/local/redis mkdir 7000 7001 7002 7003 7004 7005 cp redis.conf 7000
2、修改7000文件夹下redis.conf文件如下几项:
protected-mode no #关闭保护模式 用于公网访问 port 7000 #开启集群模式 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 #后台启动 daemonize yes pidfile /var/run/redis_7000.pid logfile "7000.log" #bind 127.0.0.1
3、依次复制并修改6个redis.conf
cp 7000/redis.conf 7001/ vi 7001/redis.conf :%s/7000/7001/g 全部替换 :wq保存退出即可
4、依次启动6个节点
./bin/redis-server ./7000/redis.conf ./bin/redis-server ./7001/redis.conf ./bin/redis-server ./7002/redis.conf ./bin/redis-server ./7003/redis.conf ./bin/redis-server ./7004/redis.conf ./bin/redis-server ./7005/redis.conf
启动用使用ps -ef|grep redis查看进程
5、redis5版本后通过redis-cli客户端命令来创建集群。5之前比较麻烦,需要安装ruby
./bin/redis-cli --cluster create 127.0.0.1:7000 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 --cluster-replicas 1
如果有密码,--cluster create -a xxx master ip1:port1 master ip2:port2 master ip3:port3 slave ip1:port1 .....
--cluster-replicas 1意味着我们每个创建的master都有一个slave。其它参数是我们要用于创建新集群的实例的地址列表

输入yes则集群创建完成
二、 Redis Cluster集群验证
使用redis客户端连接集群的任意一个端口节点:
./bin/redis-cli -c -h 127.0.0.1 -p 7000
redis cluster在设计的时候,就考虑到了去中心化,去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据
基本命令:
info replication #查看当前登录节点信息

cluster nodes #查看集群所有节点信息

每个Redis节点都有一个ID值,此ID将被此特定redis实例永久使用,以便实例在集群上下文具有唯一的名称。每个节点都会记住使用此ID的每个其他节点,而不是通过IP或端口。IP地址和端口可能会发生变化,但唯一的节点标识符在节点的整个生命周期内都不会改变。我们简单地称这个标识符为节点ID。
cluster info #查看集群信息
redis集群各节点都是平等的,读写操作会根据key值计算出特定槽位自动重定向到对应节点操作,如:

redis集群call指令:集群所有节点操作redis
redis-cli -c -a [CLUSTER_AUTH] --cluster call [CLUSTER_IP:CLUSTER_POPRT] keys * #集群所有节点模糊匹配
集群模糊删除key命令:
cluster nodes #查看master节点机器 ./redis-cli -h [ip] -p [port] -a [pass] keys *aaaaa*|xargs -n1 ./redis-cli -h [ip] -p [port] -a [pass] del #每台master节点执行
三、 Redis Cluster总结
Redis cluster为了保证数据的高可用,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。
所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。
不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。
四、脚本关闭、开启集群
在redis目录下编写脚本文件:vi shutdown.sh
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7000 -a xxx shutdown #如果有密码 /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7001 shutdown /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7002 shutdown /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7003 shutdown /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7004 shutdown /usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 7005 shutdown
chmod u+x shutdown.sh #将shutdown.sh变成可执行文件
./shutdown.sh #在当前目录下启动
在redis目录下编写脚本文件:vi clusterstart.sh
/usr/local/redis/bin/redis-server ./7000/redis.conf /usr/local/redis/bin/redis-server ./7001/redis.conf /usr/local/redis/bin/redis-server ./7002/redis.conf /usr/local/redis/bin/redis-server ./7003/redis.conf /usr/local/redis/bin/redis-server ./7004/redis.conf /usr/local/redis/bin/redis-server ./7005/redis.conf
chmod u+x clusterstart.sh #将clusterstart.sh变成可执行文件
五、三台机器安装使用
make make PREFIX=/data/redis install cd /data/redis && mkdir {master,slave}
将一台机器的/data/redis复制到其它两台机器上 cd master && ../bin/redis-server redis.conf cd slave && ../bin/redis-server redis.conf ./bin/redis-cli --cluster create -a [pass] [master1]:6379 [master2]:6379 [master3]:6379 [slave1]:7379 [slave2]:7379 [slave3]:7379 --cluster-replicas 1