帮助 - 自从向我的 EC2 Web 应用程序添加弹性负载均衡器后,我无法连接 MySQL 数据库(不在 AWS 中)

帮助 - 自从向我的 EC2 Web 应用程序添加弹性负载均衡器后,我无法连接 MySQL 数据库(不在 AWS 中)

我有一个 Web 应用程序,它使用 EC2 实例接收上传的图像、调整大小并存储在 S3 上,并使用图像记录更新我的 MySQL 数据库。此数据库托管在 Amazon Web Services 之外,因此显然涉及 EC2 实例和数据库之间的通信。图像从 Flash 客户端发布到上传服务器,该客户端在加载时接收上传服务器的 IP 地址,因此将图像发送到 1.12.23.34/resize_script.php

这非常有效...直到我开始尝试加入负载均衡器。

由于 ELB 不使用 IP 地址而是使用 DNS 地址,我现在将其传递给 Flash。现在,当我上传图像时,我会从服务器收到以下响应 -

无法连接到 MySQL:在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:111

什么原因可能导致与 MySQL 服务器的连接丢失。我是否需要采取其他步骤来允许我的上传服务器实现负载平衡?我已将此用户的 MySQL 权限的主机属性设置为 %

任何指点都非常感谢,谢谢。

答案1

检查防火墙规则和数据库上的 MySQL 用户权限。您的数据库服务器是否允许来自新 ELB IP 地址的传入连接?

答案2

为每个 EC2 实例分配一个弹性 IP,只要将弹性 IP 分配给 EC2 实例,就不会向您收取费用(使用完毕后请务必删除它们,即不要让它们处于未分配实例的状态,因为出于某种原因,亚马逊会对空闲的弹性 IP 收费)。

一旦每个 EC2 实例都有一个 IP,您就需要授权这些 IP 连接到数据库服务器。

连接到数据库服务器的不是负载均衡器(而是 EC2 实例),因此您不必担心 ELB 的 dns 或更改 ip。

希望对其他遇到此问题的人有所帮助

相关内容