hosts配置导致的生产问题排查

127 阅读1分钟

记录一个没有更新hosts 导致的问题

背景

APP 注册时候,有的手机总是收不到验证码,有的手机却能收到。

服务架构是:

App -->  backend --> msg service
  <--      ...       <--  

查看后端服务

向服务端发送请求, 服务端调用消息服务发送验证码。

但是有的手机能收到,有的却收不到, 查 msg service 的日志,也是有的有,有的手机却查不到。

排查问题

  1. 首先测试 msg service, 用 curl 工具在msg 服务器上测试短信接口,发现正常返回。
  2. 查看 bankend 调用 msg service 的方式,发现是用域名的方式调用的
  3. 继续回到 msg service ,使用curl 调用域名方式的服务, 是可以访问到的
  4. 去所有部署 bankend 实例的机器上测试域名调用, 发现有个机器是调用不到的
  5. 那么,问题就出在这台机器上

查看域名解析

去域名控制台,发现是没有配置域名解析的,那么之前的服务为什么是好的呢?

有可能是用的本机 hosts 配置的, 去能访问通的服务器检查 hosts, 果然是配置好的, 不能访问的机器由于是新开的服务器, 所以就没有配置hosts. 然后就把hosts 更新了,问题就解决了。

为何会出现这个问题

新开机器部署也好多天了,服务一直正常,为何今日出现? 因为为了方便日志追踪,同一个用户落到同一个机器,使用nginx负载均衡里配置了, ip_hash;
之前是没配置 ip_hash, nginx默认轮训方式,不一定会出现问题, 今天绑定了ip访问实例,问题就出现了。