Linux系统部署Redis集群服务(3主3从)

版本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/下载后上传至服务器自定义路径

3131ea2d29f74c9f9a7abca1341daa6f.png

解压

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

8ce3d5ddf5a14b26a8a205a3817844ae.png

在以上目录中分别放入redis.conf配置文件(可以区别命名)下图中红圈内文件,其他的是自动生成的。

1a883df964a8404d83f63b5b81ce8b40.png

配置文件详细内容如下

※如果是应用服务与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

cffe377c2c324e8daee9fb45ff0540f9.png

配置集群

#进入集群节点 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

b7a4cd12ad2740399cda40e699575848.png

设置主从

297b14c8d8d842f2b0317e9980f38e5b.png

#进入从节点
./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}

f21f2d745cdf4db5a9a56b311350273a.png

/*****************************************************/

※分配槽如出现以下错误

(error) ERR Slot 0 is already busy

解决方案,进入节点,移除指派给当前节点的所有槽

0b61c07f28974923ac56a447325887e4.png

如果仍然报错

此法慎用!!!  则可以选择充值集群。进入节点执行,cluster reset 重置集群(逐个节点重置,然后重新建群,配置)  ※处于新建阶段可以,已使用中的集群服务慎用此法!!!!!!!

1607a0ef091e4447b666754050dad29e.png

/*****************************************************/

查看状态如下

edf2f747d9014013a3a2c779abe74571.png

e29275e6d7b647f29a848caecef754c5.png

常见问题:

1、出现个别节点连接不成功,且显示的IP不匹配时可如下操作

2518744ac1394e6ca5aa2ddcb545118a.png

哪个节点有问题就查看哪个节点的node-7001.conf文件

c8daf709b8434c6aa43634146e62b5e9.png

查看这一列ip是否有问题,下图是修改后的正确情况。

6f6c0a3f057a438c90001b1194e24596.png

 

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

 

 

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲斯Face

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值