redis4.0 版本cluster被重启后,启动不了!!!心中N个滚粗而出。。。途中花了不少时间去修复这个问题
解决第一个问题
#启动redis遇到问题
/usr/local/redis_cluster/bin/redis-server /usr/local/redis_cluster/7003/redis.conf
报错如下:Unrecoverable error: corrupted cluster config file.
12213:C 27 Jul 14:44:23.967 # Configuration loaded
12214:M 27 Jul 14:44:23.969 # Unrecoverable error: corrupted cluster config file.
12486:C 27 Jul 14:45:08.377 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12486:C 27 Jul 14:45:08.377 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=12486, just started
12486:C 27 Jul 14:45:08.377 # Configuration loaded
12487:M 27 Jul 14:45:08.379 # Unrecoverable error: corrupted cluster config file.
12790:C 27 Jul 14:46:11.114 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12790:C 27 Jul 14:46:11.114 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=12790, just started
12790:C 27 Jul 14:46:11.114 # Configuration loaded
12791:M 27 Jul 14:46:11.116 # Unrecoverable error: corrupted cluster config file.
第一个问题解决办法:
[root@localhosts data]# pwd
/usr/local/redis_cluster/data
[root@localhosts data]# ls -sh
total 2.7G
509M appendonly-7003.aof 4.0K nodes-7003.conf 256M temp-2470.rdb
507M appendonly-7004.aof 4.0K nodes-7004.conf 22M temp-2616.rdb
493M appendonly-7005.aof 4.0K nodes-7005.conf 229M temp-rewriteaof-10579.aof
294M dump.rdb 321M temp-2441.rdb 102M temp-rewriteaof-11209.aof
[root@localhosts data]# vim nodes-7003.conf
#nodes-7003.conf 删除非myself的其他行,只保留myself那行,然后保存。
解决第二个问题
第一个问题解决后,redis 集群起来了,但是,进去不能写数据,提示:[ERR] Sorry, can't connect to node 192.168.11.244:7001
$ /usr/local/redis_cluster/src/redis-trib.rb check 192.168.11.244:7001
[ERR] Sorry, can't connect to node 192.168.11.244:7001
第二个问题解决办法:
find / -name "client.rb"
/usr/share/ruby/xmlrpc/client.rb
/usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.3/lib/redis/client.rb
/usr/local/rvm/gems/ruby-2.3.3/gems/redis-3.0.7/lib/redis/client.rb
/usr/local/rvm/gems/ruby-2.3.3/gems/elasticsearch-transport-1.0.18/lib/elasticsearch/transport/client.rb
/usr/local/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/xmlrpc/client.rb
vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.3/lib/redis/client.rb
#找password更改为你的redis密码
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "123456",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:reconnect_delay => 0,
:reconnect_delay_max => 0.5,
:inherit_socket => false
}
然后修复
/usr/local/redis_cluster/src/redis-trib.rb check 127.0.0.1:7000
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: f57c0d6d88a9c6be2bddeb4f2b3d9a2192b6e756 127.0.0.1:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 324fc57a3cc7adc90ee505b96044cab535cf97c7 192.168.11.243:7003
slots: (0 slots) slave
replicates d395a617fa5fced78ec4fb8f612cefcdca486fa5
M: d395a617fa5fced78ec4fb8f612cefcdca486fa5 192.168.11.244:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: ec4ada841b490672c3dbea6a620f4572ff0aa898 192.168.11.244:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 7479fffffb37d5a9a02bd0d8d45dcae5a62bda53 192.168.11.243:7004
slots: (0 slots) slave
replicates ec4ada841b490672c3dbea6a620f4572ff0aa898
S: b1785b0daee0dafa4a2210ca69ffb8a6d14939e0 192.168.11.243:7005
slots: (0 slots) slave
replicates f57c0d6d88a9c6be2bddeb4f2b3d9a2192b6e756
[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
提示[ERR] Nodes don't agree about configuration!
./redis-cli -p 7000 cluster meet 192.168.11.244 7001
./redis-cli -p 7000 cluster meet 192.168.11.244 7002
./redis-cli -p 7000 cluster meet 192.168.11.244 7003
./redis-cli -p 7000 cluster meet 192.168.11.244 7004
./redis-cli -p 7000 cluster meet 192.168.11.244 7005
ok至此问题解决
温馨提示:
Redis4.x上面的cluster命令基本上都仍可以在redis5.0.x正常使用。 但是redis5.0.x上redis-trib.rb工具不再可用,redis-trib.rb相关的全部功能,已迁移到redis-cli --cluster命令上了。
参考:
redis阅读扩展
网友评论