有次遇到一个redis很简单的问题,但是我和同事一起看了两天都没有发现原因,问题是在客户端连不上服务端的redis,我们一开始想到的是服务本身 或者 网络 问题,后来终于解决,在解决这个问题也是翻阅了很多博客和用了各种办法,为了警示自己,特地写此文章。
问题背景:
有三台服务器 ip 分别是 A:192.168.3.50,B:192.168.3.234,C:192.168.1.234
需求是A服务器上有套告警平台, B服务器上有分析告警服务,C:底层算法服务
其中的逻辑 是 B平台通过redis与C服务器交互,C接收到图片后解析告警行为,然后再返回结果给B服务器上;A服务会主动过来取B服务的告警行为;
简单理解就是
A 主动交互 B
C 主动交互 B
中间只有B有redis,所以其他两台都是主动来连B
在网络配置好后,A可以正常连上redis服务,C 端口能通,但是执行 keys *时报错 connection by peer,一开始排查的方向是网络问题,但是双方端口及ping都通,所以我们认为网络应该没问题,就在服务上花了好久;
1.检查配置文件有没有禁止本机外的IP可连
2.连接时长参数配置的是否够用
3.是否原先key值数据有误
4.服务代码是否存在问题
以上方向经反复排查后,都没有找到问题。
后来又转回到网络,这个网络看着是没有问题,相互间也都能访问通,但是无法通信,后来将C服务器也改成3段后就可以正常连通了,具体是网络的什么问题至今也不清楚,端口什么的都能通,接口也能调用但是redis就是无法通信,如果有大佬知道问题,欢迎指正 感激不尽。