Redis5.0集群搭建Cluster模式及slot丢失重新修复问题(使用redis | 您所在的位置:网站首页 › redis迁移失败的原因 › Redis5.0集群搭建Cluster模式及slot丢失重新修复问题(使用redis |
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 实验室设备网 版权所有 |