Redis集群安装各种坑各种报错和解决办法~

要求

在多台centos7服务器上搭建集群,并且同时外网任意IP都可以访问这些集群上的redis但需要使用密码。redis集群的密码和单独访问密码不能一样。

各种坑

1.配置中 requirepass 和 masterauth 必须一致?

网上的各种资料都是相互抄,所有文档都说这两个必须一致?其实根本就不用一致。并且可以两个同时开启。masterauth是集群间的节点相互访问时候用到的密码,而requirepass是单独请求连接时候用到的密码。

2.报错redis requires Ruby version >= 2.3.0.

解决办法,用 rvm 安装redis,关键代码如下:

      //具体RVM安装命令地址:http://rvm.io/
  [root@linux ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 
  [root@linux ~]# curl -sSL https://get.rvm.io | bash -s stable
  [root@linux ~]# find / -name rvm -print

详细教程:https://www.cnblogs.com/PatrickLiu/p/8454579.html

3.报错提示-bash: ./redis-trib.rb: No such file or directory

网上都是说要手动下载redis的目录,进入src,全都是相互抄写复制的文章。真正的做法,直接一句 yum install redis-trib 即可解决。

4.测试提示 [ERR] Sorry, can’t connect to node 47.10.13.21:6379

这个原因是你已经开启了requirepass,但使用redis-trib check的时候是没有放入密码。解决办法,手动修改一个client.rb文件,位置可能是 /usr/local/rvm/gems/ruby-2.6.3/gems/redis-4.1.2/lib/redis/client.rb 将password 的值改为你在/etc/redis.confrequirepass 的值。

5.有以下报错

[ERR] Node 47.10.13.21:6379 is not empty.
(error) CLUSTERDOWN Hash slot not served
ERR Slot 0 is already busy (Redis::CommandError)

解决办法,进入每一个node的redis-cli,执行一遍flushdbcluster reset两个命令。

6.创建cluster一直等待

一直等待>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....

问题原因,缺少一个端口,比如你的redis端口为6379,就需要同时开一个 16379端口,否则无法这样。

7.修改端口无法启动cluster

原因 cluster要求端口不能大于 55535,将配置中的port改小重启。
报错日志中有提示/var/log/redis/redis.log

29791:M 06 Jun 12:02:13.745 # Redis port number too high. 
Cluster communication port is 10,000 port numbers higher than your Redis port. Your Redis port number must be lower than 55535.

8.集群安装好之后,无法连接

执行redis-cli -h XXX.XXX.XX.XXX -p 6379 -a requirepass提示错误信息 (error) MOVED 15495 XXX.XXX.XXX.XXX:6379。解决办法:命令中加一个参数 -c,即redis-cli -c -h XXX.XXX.XXX -p 6379 -a requirepass

测试

1)连接上一台节点A,设置一个变量值。访问另外一个节点C,获取能得到同样值。
2)将其中一台节点A里面的redis关闭,进入另外一台节点B,设置一个变量值,再进入节点A,启动redis,连接他的节点,获取该变量得到刚刚设置的值。

你可能感兴趣的:(Redis集群安装各种坑各种报错和解决办法~)