簡體   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