在 AWS 上,为什么 PHP 页面中的 RDS 内部 DNS 查找会失败?

在 AWS 上,为什么 PHP 页面中的 RDS 内部 DNS 查找会失败?

我有一个 AWS Elastic Beanstalk 配置 (PHP),其中包含一个 EC2 实例和一个 RDS 实例。这是一个 QA 环境。它运行良好,但最近它开始持续失败并出现以下错误(没有代码更改):

“PDO::__construct(): php_network_getaddresses: getaddrinfo 失败:名称解析暂时失败错误:连接到 pdo_mysql 数据库时出错:连接尝试失败:SQLSTATEHY000 2002 php_network_getaddresses: getaddrinfo 失败:名称解析暂时失败”

这不是什么暂时现象。

如果我用 RDS 实例的 IP 地址代替主机名,它可以在 AWS 中正​​常运行。

如果我使用主机名从本地开发机器(AWS 之外)访问 AWS RDS 实例,它会完美地执行相同的代码。

在 EC2 实例中,RDS 主机名的 Nslookup 运行良好。

我已经停止并启动了 ec2 实例,并且重新启动了 RDS 实例,但无济于事。

我看到有关间歇性 AWS DNS 故障的零星帖子,但似乎没有一个适合我的问题。

有人知道这个问题吗?有人知道我可以做哪些进一步的测试来诊断它吗?

谢谢

https://forums.aws.amazon.com/thread.jspa?threadID=141277

答案1

事实证明,重新启动 apache 至少可以解决问题,直到我下次重新启动 ec2 实例。我的 AMI 版本(2013 年 8 月构建)显然存在一些问题。当前构建的 Elastic Beanstalk 版本(2013 年 12 月)没有这个问题。

相关内容