Redis5.0集群搭建Cluster模式及slot丢失重新修复问题(使用redis 您所在的位置:网站首页 redis迁移失败的原因 Redis5.0集群搭建Cluster模式及slot丢失重新修复问题(使用redis

Redis5.0集群搭建Cluster模式及slot丢失重新修复问题(使用redis

2023-08-18 14:29| 来源: 网络整理| 查看: 265

Redis集群搭建 一、安装redis1.1 redis_70011.1.1 解压1.1.2 编译1.1.3将redis安装为系统服务并后台启动1.1.4 修改配置文件 1.2 redis_70021.3 redis_70031.4 编写启动脚本 二、创建集群三、修复集群四、SpringBoot项目连接Redis集群4.1 yml配置文件4.2 配置安全组4.3 hosts文件 Redis有三种集群模式,分别是:

主从模式 在这里插入图片描述

Cluster模式

Sentinel(哨兵)模式

本片文章搭建的是第二种集群模式Cluster,只搭建了三个节点,创建了三个主节点的redis集群。 如果想要三主三从,需要在部署6个Redis节点

一、安装redis 1.1 redis_7001 1.1.1 解压

在 /usr/local/ 下创建redis目录 ,进入目录,解压redis压缩包tar -zxvf redis-5.0.0.tar.gz 并改名为redis_7001 mv redis-5.0.0 redis_7001

1.1.2 编译

进入redis_7001目录编译安装make && make install

1.1.3将redis安装为系统服务并后台启动

进入/redis_7001/utils目录 使用./install_server.sh 将redis安装为系统服务并后台启动。

在这里插入图片描述 注意指定端口号:7001指定为7001,7002指定为7002,7003指定为7003。

将redis安装为系统服务后,会自动在/etc/redis 目录下创建指定的redis配置文件:7001.conf

在这里插入图片描述

将redis安装为系统服务的启动方式:systemctl start redis_7001.service ;关闭:systemctl stop redis_7001.service

1.1.4 修改配置文件

编辑 redis 配置文件vim /etc/redis/7001.conf

设置允许远程连接,将 bind 127.0.0.1 修改为 0.0.0.0 在这里插入图片描述

设置后台启动daemonize yes (指定为系统服务后,已经是后台启动) 在这里插入图片描述

查看端口号(指定为系统服务后,端口号已经是7001) 在这里插入图片描述 设置密码 在这里插入图片描述 将cluster-enabled yes 的注释打开,启用集群模式 在这里插入图片描述

1.2 redis_7002

同上

1.3 redis_7003

同上

1.4 编写启动脚本

启动脚本

#!/bin/env bash systemctl start redis_7001.service systemctl start redis_7002.service systemctl start redis_7003.service echo "=== START UP ALL BY SYSTEM ==="

关闭脚本

#!/bin/env bash pkill redis-server systemctl stop redis_7001.service systemctl stop redis_7002.service systemctl stop redis_7003.service echo "=== SHUTDOWN ALL BY SYSTEM ==="

给脚本赋可执行权限chmod +x startupallbysystem.sh 启动脚本./startupallbysystem.sh 三个节点安装成功并启动 查看redis运行状态: ps aux | grep redis 关闭redis服务: pkill redis-server

二、创建集群

redis5.0创建集群命令使用redis-cli --cluster create [IP:PORT] 可以使用redis-cli --cluster help 查看其它参数

redis-cli --cluster create 172.30.118.68:7001 172.30.118.68:7002 172.30.118.68:7003 -a password -a 指定认证密码

创建三主三从集群:

redis-cli --cluster create 192.168.236.128:6379 192.168.236.128:6380 192.168.236.128:6381 192.168.236.128:6382 192.168.236.128:6383 192.168.236.128:6384 --cluster-replicas 1 --cluster-replicas 1 #表示为集群中的每一个主节点指定一个从节点,即一比一的复制

Redis5.0之后可以不用 ruby,直接用 redis-cli 即可创建集群。

在这里插入图片描述

以集群形式登陆 redis-cli -c -h 172.30.118.68 -p 7001 -a password -c,使用集群方式登录。 登陆集群中的单个节点 redis-cli -h 127.0.0.1 -p 7001 -a password 。

查看集群状态:cluster info 在这里插入图片描述

三、修复集群

进入集群查看集群状态 cluster info 发现节点状态为fail

登陆集群 如果集群没有配置密码就不用添加 -a password 参数 redis-cli -c -h 172.30.118.68 -p 7003 -a password 查看集群节点状态 cluster info 检查节点,使用check参数 redis-cli --cluster check 127.0.0.1:7003 -a password 修复节点 使用fix参数 redis-cli --cluster fix 127.0.0.1:7003 -a password

在这里插入图片描述

检查节点redis-cli --cluster check 127.0.0.1:7003 -a password 在这里插入图片描述 [ERR] Not all 16384 slots are covered by nodes. ==》[ERR]并非所有16384个槽位都被节点覆盖。 说明有几个槽点丢失。

重新修复集群redis-cli --cluster fix 127.0.0.1:7003 -a password 中间选择yes

在这里插入图片描述

在这里插入图片描述 完成后重新检查 在这里插入图片描述 在这里插入图片描述

四、SpringBoot项目连接Redis集群 4.1 yml配置文件 redis: database: 0 lettuce: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0 cluster: nodes: - 192.168.184.58:7000 - 192.168.184.58:7001 - 192.168.184.58:7002 - 192.168.184.59:7000 - 192.168.184.59:7001 - 192.168.184.59:7002 max-redirects: 3 password: password timeout: 5000 4.2 配置安全组

如果服务器为阿里云服务器,还需要打开安全组端口。 在这里插入图片描述

4.3 hosts文件

阿里云服务器还分了公网和内网两个ip地址。在阿里云服务器上搭建的一个三节点的Redis集群 我在项目中操作Redis集群时,发现连接不上Redis集群,yml配置文件中redis集群的地址是公网的IP地址,但是控制台日志打印显示的内网的地址。 解决办法: 在阿里云服务器编辑hosts文件 vim /etc/hosts 将公网和内网的两个IP地址都映射到本地

127.0.0.1 公网IP 127.0.0.1 内网IP


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有