版本redis 6.2.7
系统:Rocky 9
本文采用手动安装方式
官方下载地址 (也可选择其他版本)Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/下载后上传至服务器自定义路径
解压
tar -zxvf redis-6.2.7.tar.gz
进入解压后路径
cd redis-6.2.7
编译(指定路径)
make install PREFIX=/自定义/redis-6.2.7/
在创建redis_cluster目录,并在目录下创建6个子目录node7001~node7006
在以上目录中分别放入redis.conf配置文件(可以区别命名)下图中红圈内文件,其他的是自动生成的。
配置文件详细内容如下
※如果是应用服务与redis集群不在同一部机器,bind 一定要配置为 ip4地址和127.0.0.1
例如:bind 10.140.0.4 127.0.0.1
不建议配置公网IP
port 7001 --设置端口 bind 10.140.0.4 127.0.0.1 --设置服务器的内网ip4地址和127.0.0.1 protected-mode no --保护模式关闭 dir /usr/local/redis/redis_cluster/node7001/ --指定数据存储位置,指定不同目录好区分 pidfile /usr/local/redis/redis_cluster/node7001/nodes-7001.pid --指定pid进程文件存放目录 logfile /usr/local/redis/redis_cluster/node7001/nodes-7001.log --指定log日志存放目录 cluster-enabled yes --集群启动开启 cluster-config-file /usr/local/redis/redis_cluster/nodes-7001.conf --集群节点配置文件,各个节点必须区分开 cluster-node-timeout 15000 --集群节点超时时间,超过这个时间则认为该节点为宕机 appendonly yes --开启aof持久化 设置密码,强烈建议以下两个密码相同 requirepass 123456 --连接redis的密码 masterauth 123456 --节点之间通讯的访问密码
各目录下prot端口分别配置7001~7006
启动各节点,启动命令如下(分别执行)
./src/redis-server redis_cluster/node7001/redis_7001.conf ./src/redis-server redis_cluster/node7002/redis_7002.conf ./src/redis-server redis_cluster/node7003/redis_7003.conf ./src/redis-server redis_cluster/node7004/redis_7004.conf ./src/redis-server redis_cluster/node7005/redis_7005.conf ./src/redis-server redis_cluster/node7006/redis_7006.conf
通过以下命令查看启动状况
ps -ef|grep redis
搭建集群,进入一个客户端,输入命令连接不同开启集群的节点 (1qaz2wsx 为前步骤配置文件中配置的密码)
./src/redis-cli -a 1qaz2wsx -p 7001
在执行以下命令
cluster meet 127.0.0.1 7002
配置集群
#进入集群节点 7001 ./src/redis-cli -a 1qaz2wsx -p 7001 #将其余节点加入集群 cluster meet 10.140.0.4 7002 cluster meet 10.140.0.4 7003 cluster meet 10.140.0.4 7004 cluster meet 10.140.0.4 7005 cluster meet 10.140.0.4 7006
设置主从
#进入从节点 ./src/redis-cli -a 1qaz2wsx -h 10.140.0.4 -p 7004 -c #cluster replicate <node_id> 将当前节点设置为node_id指定的节点的从节点 cluster replicate c332ef81a53b6cc8f41328a1a127657b8775ffde #依次对3个从属节点就行设置……
分配槽位
#3个主节点依次分配槽位 ./src/redis-cli -a "你的密码" -h 10.140.0.4 -p 7001 -c cluster addslots {0..5461} ./src/redis-cli -a "你的密码" -h 10.140.0.4 -p 7002 -c cluster addslots {5462..10922} ./src/redis-cli -a "你的密码" -h 10.140.0.4 -p 7003 -c cluster addslots {10923..16383}
/*****************************************************/
※分配槽如出现以下错误
(error) ERR Slot 0 is already busy
解决方案,进入节点,移除指派给当前节点的所有槽
如果仍然报错
此法慎用!!! 则可以选择充值集群。进入节点执行,cluster reset 重置集群(逐个节点重置,然后重新建群,配置) ※处于新建阶段可以,已使用中的集群服务慎用此法!!!!!!!
/*****************************************************/
查看状态如下
常见问题:
1、出现个别节点连接不成功,且显示的IP不匹配时可如下操作
哪个节点有问题就查看哪个节点的node-7001.conf文件
查看这一列ip是否有问题,下图是修改后的正确情况。
redis集群命令汇总
集群(cluster) cluster info 打印集群的信息 cluster nodes 列出集群当前已知的所有节点(node),以及这些节点的相关信息 节点(node) cluster meet <ip> <port> 将ip和port所指定的节点添加到集群当中,让它成为集群的一份子 cluster forget <node_id> 从集群中移除node_id指定的节点 cluster replicate <node_id> 将当前节点设置为node_id指定的节点的从节点 cluster saveconfig 将节点的配置文件保存到硬盘里面 cluster slaves <node_id> 列出该slave节点的master节点 cluster set-config-epoch 强制设置configEpoch 槽(slot) cluster addslots <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点 cluster delslots <slot> [slot ...] 移除一个或多个槽对当前节点的指派 cluster flushslots 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点 cluster setslot <slot> node <node_id> 将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派 cluster setslot <slot> migrating <node_id> 将本节点的槽slot迁移到node_id指定的节点中 cluster setslot <slot> importing <node_id> 从node_id 指定的节点中导入槽slot到本节点 cluster setslot <slot> stable 取消对槽slot的导入(import)或者迁移(migrate) 键(key) cluster keyslot <key> 计算键key应该被放置在哪个槽上 cluster countkeysinslot <slot> 返回槽slot目前包含的键值对数量 cluster getkeysinslot <slot> <count> 返回count个slot槽中的键 其它 cluster myid 返回节点的ID cluster slots 返回节点负责的slot cluster reset 重置集群,慎用