版本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 重置集群,慎用