背景:Redis 版本 3.2.1(基于ruby),机器是两台CentOS.基本参照下面这篇进行搭建
其中遇到的坑:
redis requires Ruby version >= 2.2.2.
https://www.cnblogs.com/PatrickLiu/p/8454579.html
这个是解决方案
在两台搭建好机器以后,进行集群连接操作,发现报错:
Creating cluster[ERR] Sorry, can't connect to node 192.168.1.53:7003
我猜测原因:
1-Server 192.168.1.53的7003没有起来(通过一下命令发现服务和监听是起来的)
netstat -tnlp |grep redis
//发现说明是起来的
tcp 0 0 0.0.0.0:7004 0.0.0.0:* LISTEN 5979/redis-server 0
tcp 0 0 0.0.0.0:7005 0.0.0.0:* LISTEN 5990/redis-server 0
tcp 0 0 0.0.0.0:17003 0.0.0.0:* LISTEN 22716/redis-server
tcp 0 0 0.0.0.0:17004 0.0.0.0:* LISTEN 5979/redis-server 0
tcp 0 0 0.0.0.0:17005 0.0.0.0:* LISTEN 5990/redis-server 0
tcp 0 0 0.0.0.0:7003 0.0.0.0:* LISTEN 22716/redis-server
这里redis.conf bind的端口要为 0.0.0.0 ,因为如果写127.0.0.1,Server2访问不到;如果写192.168.1.53,Server1的 redis-cli 访问不到
2-外网没有通这个端口
那么需要验证一下,在CentOS中用wget进行验证,windows用telnet
https://blog.csdn.net/csdnliuxin123524/article/details/80475787
wget 127.0.0.1:7003
Connecting to 127.0.0.1:7003... connected.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: ‘index.html’
[ <=> ] 184 --.-K/s
说明是通的。但是此时wget无法用 ctrl+c 停止,于是只能用下面这个方法来
https://blog.csdn.net/buyueliuying/article/details/52550262
重新开一个终端,输入
killall wget
再回到原终端,发现已经停止;可以发现当前目录下生成了一个index.html 文件,暂时不知道有什么用。后来发现是安全组没有打开,以及需要设置防火墙:防火墙需要开启,并且开放端口,需要重启防火墙,设置的开放端口才有效果
由于之前搭建了一次集群失败,于是用同样的命令
/usr/local/redis-3.2.1/src/redis-trib.rb create --replicas 1 192.168.1.117:7000 192.168.1.117:7001 192.168.1.117:7002 192.168.1.53:7003 192.168.1.53:7004 192.168.1.53:7005
发现报错:
[ERR] Node is not empty. Either the node already knows other nodes (check with C
https://blog.csdn.net/vtopqx/article/details/50235737
到 /usr/local 目录下,对 appendonly.aof dump.rdb nodes-7000.conf nodes-7001.conf nodes-7002.conf 文件进行删除。再重新输入命令基本解决。
输入命令后又发现报错:
ERR Slot 741 is already busy (Redis::CommandError)
https://blog.csdn.net/qiushisoftware/article/details/78837855
https://www.oschina.net/question/1031396_246716(还是这个解答实在)
用redis-cli登录到每个节点执行flushall和cluster reset就可以了
//登录
redis-cli -c -p 7000
于是再次创建集群,发现一直等待
Waiting for the cluster to join....
https://q.cnblogs.com/q/107914/
由于之前设置了0.0.0.0 端口,于是解决了 redis-cli 和外网同时访问 server 端口的问题,于是
终于明白了该咋做了,在执行创建集群命令的对应一台服务器,用 redis-cli 依次登录 server 7003 7004 7005 依次执行
cluster meet 192.168.1.238 7000
cluster meet 192.168.1.238 7001
cluster meet 192.168.1.238 7002
于是终于成功
redis-cli -c -p 7003
//客户端登录
127.0.0.1:7003> CLUSTER info//输入这个
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:4
cluster_stats_messages_sent:110147
cluster_stats_messages_received:110131
127.0.0.1:7003>
网友评论