记录一次成功的服务维护-----ERR Slot 0 is already busy (Redis::CommandError)

本文记录一次Redis服务宕机后,Redis集群出现拒绝访问的情况的解决过程。

背景:各项服务在服务器中运行正常,某一天,突然服务器断电,重新拉起各个服务,发现有部分服务无法使用,日志提示Redis拒绝访问。

解决思路:

1、首先定位问题为Redis,出现拒绝访问情况,检查各个系统系统之间的防火墙有没有关闭 iptables -F 

2、防火墙确认关闭后,检查各个服务是否启动正常?有无报错。

3、定位出现拒绝访问的Redis集群(可能存在多个),并使用命令行redis-cli确认是否能访问。

4、如果redis能访问,但仍旧出现该情况,尝试修复redis集群。

修复办法:

在redis集群主节点src的目录下,redis-trib fix ip:port,redis-trib.rb create --replicas 1 ip:port逐个进行修复。

理论上,修复后,就可以了。但是在create时,可能出现如下问题:

/usr/local/rvm/gems/ruby-2.4.5/gems/redis-4.1.0/lib/redis/client.rb:124:in `call': ERR Slot 0 is already busy (Redis::CommandError)
    from /usr/local/rvm/gems/ruby-2.4.5/gems/redis-4.1.0/lib/redis.rb:3282:in `block in cluster'
    from /usr/local/rvm/gems/ruby-2.4.5/gems/redis-4.1.0/lib/redis.rb:50:in `block in synchronize'
    from /usr/local/rvm/rubies/ruby-2.4.5/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
    from /usr/local/rvm/gems/ruby-2.4.5/gems/redis-4.1.0/lib/redis.rb:50:in `synchronize'
    from /usr/local/rvm/gems/ruby-2.4.5/gems/redis-4.1.0/lib/redis.rb:3281:in `cluster'
    from ./redis-trib.rb:212:in `flush_node_config'
    from ./redis-trib.rb:906:in `block in flush_nodes_config'
    from ./redis-trib.rb:905:in `each'
    from ./redis-trib.rb:905:in `flush_nodes_config'
    from ./redis-trib.rb:1426:in `create_cluster_cmd'
    from ./redis-trib.rb:1830:in `<main>'

出现该问题,进行如下操作:

进入每一个redis中,执行

  1. flushall

  2. cluster reset

之后,就可以重新create

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嫌疑人X的解忧杂货店

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值