Redis搭建集群的过程与遇到的问题
报错信息:[ERR] Sorry, can’t connect to node 127.0.0.1
At least 6 nodes is required
Too many cluster redirections redis?
来自:behance 画师( Kirill Kleymenov)
( 报错信息的解决在文章尾部 )
redis搭建环境
Ubuntu版本18.04+redis版本5.0.5
redis安装(已经安装跳过)
安装环境:(服务器自带跳过)
yum install gcc-c++
下载/安装:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
#编译源码
make
make install PREFIX=/usr/local/redis
修改配置文件redis.conf
vim redis.conf
daemonize yes #守护进程
#bind 127.0.0.1 #注释掉
requirepass 123456 #设置密码,可以不设置默认为空
protected-mode no #关闭保护模式,远程连接不上加上
复制配置文件到/usr/local/redis/bin:
cp redis.conf /usr/local/redis/bin/
启动与停止:
!记得开放端口6379或干掉防火墙!
cd /usr/local/redis/bin
./redis-server redis.conf #启动
./redis-cli shutdown #停止
集群搭建
搭建Ruby环境:(服务器自带跳过)
#centos
yum install ruby
yum install rubygems
#Ubuntu
apt-get install ruby
apt-get install rubygems
安装接口程序:
gem update #服务器自带更新一下
gem install /usr/local/redis-3.0.0.gem
复制redis-trib.rb:【报错点1】
cd /root/redis-5.0.5/src
cp redis-trib.rb /usr/local/redis/rediscluster/ -r
复制出一个7001机器:
cp bin ./redis-cluster/7001 –r
#如果存在持久化文件,则删除
rm -rf appendonly.aof dump.rdb
设置集群参数:【报错点2】
cd 7001
vim redis.conf
cluster-enabled yes
port 7001 #对应文件夹名
protected-mode no
cluster-config-file nodes-7001.conf #对应文件夹名,没有无所谓启动时会生成
#bind 127.0.0.1 #注释掉
复制7001到其他5份(7002-7006):
cp 7001/ 7002 -r
cp 7001/ 7003 -r
cp 7001/ 7004 -r
cp 7001/ 7005 -r
cp 7001/ 7006 -r
#修改7002-7006的端口与cluster-config
#略
编写启动脚本startall.sh:【报错点3】
vim startall.sh
#!/bin/bash
cd 7001
./redis-server redis.conf
cd ..
cd 7002
./redis-server redis.conf
cd ..
cd 7003
./redis-server redis.conf
cd ..
cd 7004
./redis-server redis.conf
cd ..
cd 7005
./redis-server redis.conf
cd ..
cd 7006
./redis-server redis.conf
cd ..
#保存退出并赋予权限
chmod +x startall.sh
启动各自服务并创建集群:
sh startall.sh
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
处理报错
报错点1:redis-5.0.5安装后自带的redis-trib.rb版本比gem3.0.6版本过高
解决方式:下载低版本的redis的源码包(这里找的是3.2.0),找到里面的redis-trib.rb复制到服务器中覆盖原文件
报错点2:创建集群是不可以设置密码的,否则集群启动报错 Sorry, can’t connect to node …
解决方式:修改7001-7006的配置文件注释掉密码
#requirepass 123456 注释掉
报错点3:一开始我只创建了7001-7003,启动后报错 At least 6 nodes is required
!搭建集群最少要3台主机每台主机配一台从机最少要6台机器!
解决方式:复制其余3份,再次启动集群
补充:在用java代码去连接集群时,出现报错Too many cluster redirections redis?
解决方式:启动集群时将127.0.0.1改为真实ip即可
以上解决