报错内容如下:

阿里云报SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed:根本原因-LMLPHP

系统架构如下:

15台阿里云服务器集群(主服放在华南可用区A区,其他14台分别部署在A/B/C/D/E区都有) + 1台阿里云Reids(A区) + 5台阿里云mysql服务器(1主4从)(A区)

报错请况:

  • 这个错误不是必须,偶尔出现,或者出现一小段时间
  • 代码都没有更新,突然出现的问题

问题根源 

因为API服务器链接redis和mysql是使用阿里云内网的地址和端口,而api服务器部署在不同的可用区,排查这个问题很简单,只要把B/C/D/E区的服务器节点都去掉就立马正常了,所以问题肯定是阿里云不同可用区之间内网通讯有bug

解决办法:

第一种:api集群服务器改为使用外网地址链接redis和数据库

第二种:把集群服务器放在同一个可用区

11-21 13:47