Redis保护模式开启问题解决
今天上班时候,同事反馈我们负责的一个系统服务挂了,因为主负责人有事不在,我作为第二负责人(其实是刚来不久的新人)开始着手处理这个事情。
根据同事描述,看了一下对应的dubbo服务,显示"没有提供者",看了一下系统页面,也打不开了,以为只是常规的配置更改影响到了,我便重新打包上传、重启部署等待系统恢复;然而一二分钟过去了,dubbo服务迟迟没有动静,页面依旧打不开……怀疑是关联系统没有启动的原因,检查了一下关联系统正常,不放心,又重启了关联系统,问题依旧……
image.png
然后继续分析,我就查看日志文件,发现了这么一段话:
image.pngredis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled
怀疑是Redis保护模式开启了,导致Redis连不上导致的,尝试用客户端连接,果然出现了超时。至此,原因算是找到了,知道了问题原因,便解决了问题的一半,何况这种开源软件真的良心,把解决方案都列出来了:
1)通过从服务器的同一主机连接到Redis,只需禁用保护模式从环回接口发送命令'CONFIG SET protected-mode no'正在运行,但如果您这样做,则无法通过互联网公开访问。使用CONFIG REWRITE使此更改成为永久更改。
2)或者,您可以通过编辑Redis配置文件并将保护模式选项设置为“no”来禁用保护模式,然后重新启动服务器。
3)如果您手动启动服务器进行测试,请使用“--protected-mode no”选项重新启动它。
4)设置绑定地址或验证密码。
参考了网上的一篇资料 解决使用jedis连接是报DENIED Redis is running in protected mode错误
顺便检查了一下相应的配置
- redis 时只能通过本地localhost (127.0.0.1)这个来链接,而不能用网络ip(192.168..)这个链接,问题然如果用网络ip 链接会报错误: 处于保护模式,只能本地链接,我们需要修改配置文件../redis.conf
# bind 127.0.0.1 这个已经注释
2.Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes 已经改为yes
- 将保护模式关闭
protected-mode no
搞定上述步骤准备重启,关键的是 没反应应该是你启动服务端的时候没有带上配置文件
你配置好了,但要重新启动redis,如果还是报一样的错误,很可能是没有启动到配置文件,所以需要真正的和配置文件启动需要:
./redis-server redis.conf
这样,启动成功!
image.png
最后,检查dubbo服务正常,刷新页面,页面终于正常显示。大功告成,记录下心得~
image.png