繁体   English   中英

池连接超时 - 从 EC2 连接到 AWS RDS

[英]Pool connection timeout - connecting to AWS RDS from EC2

我正在尝试使用 pg npm 包通过 NodeJS 应用程序从 EC2 服务器连接到 Amazon RDS (Postgres) 实例。 我收到错误的错误(注意我正在通过反应应用程序访问我的节点后端): OPTIONS /users/login 200 0.424 ms - 2 Error fetching client from pool Error:连接因连接超时而终止

我已经在本地测试了该应用程序并且一切正常(包括连接到 RDS),但是一旦我在服务器上运行该应用程序,我就无法连接。

为了简化问题,我刚刚在 NodeJS 路由文件中明确输入了我的凭据,所以我知道环境变量等没有问题。然后我将我的代码推送到服务器,按原样提取并运行它。 没运气。 从连接的角度来看,我只是创建了一个池(需要来自 pg 的池),然后使用 pool.connect 和 client.query 来发出请求。

我觉得考虑到它在本地工作,问题是我的网络/安全组的 AWS 问题,但我觉得我已经尝试了一切:

  1. 确保数据库设置为公共
  2. 创建一个新的安全组并将其添加到 EC2 和 RDS
  3. 完全开放端口(入站和出站)
  4. 创建 VPC 并添加到 EC2 和 RDS
  5. 检查入站/出站是否在 VPC 子网 NACL 上打开

任何帮助将非常感激。 我快疯了

连接到您的服务器并尝试使用 telnet 或 PostgreSQL 客户端调试连接。

此错误最常见的错误是:

  1. RDS 安全组不允许来自您的 VPC 范围或公共 EC2 服务器 IP(在公共数据库的情况下)的传入连接。
  2. RDS 子网不允许在 NACL 中进行传出连接。 请记住,只有第一个连接发生在您在 RDS 中定义的端口上,其他连接发生在其他端口上; 但我认为一旦你说你可以在本地连接,这不是你的情况。
  3. RDS 路由表不允许来自 VPC 外部的连接。 但是,再一次,我认为这不是你的情况。
  4. EC2 安全组不允许与 RDS 的传出连接。 这种情况有点棘手,但如果您没有正确设置 SG,就会发生这种情况。
  5. 最后一种情况是您的 EC2 服务器子网不允许连接到 Internet。 你说你可以本地连接,所以我想你的RDS是正确设置为允许公共连接的; 但是,您可能会遇到这样的情况:您没有在 EC2 服务器路由表中连接 Internet 网关或 NAT 网关,或者没有正确配置 NACL 以允许来自 Internet 的入站/出站连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM