如何對指派給我的 Amazon RDS 資料庫執行個體 IP 位址問題進行疑難排解?

2 分的閱讀內容
0

我想要對指派給我的 Amazon Relational Database Service (Amazon RDS) 執行個體 IP 位址問題進行疑難排解。

解決方法

當 Amazon RDS 在虛擬私有雲端 (VPC) 中建立資料庫執行個體時,會為您的資料庫執行個體指派網路介面。系統會根據您設定執行個體的方式,為您的執行個體指派私有 IP 位址或公有 IP 位址

我選擇了「可公開存取」設定,但公有 IP 位址未指派給資料庫執行個體

如果資料庫子網路群組中的子網路是私有的,則系統不會為您的資料庫執行個體指派公有 IP 位址。

若要解決此問題,請完成下列步驟:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇 Subnet groups (子網路群組)。
  3. 選擇與資料庫執行個體相關聯的子網路群組。
    注意: 您可以查看具有 VPC ID 和相關聯子網路 ID 的子網路群組。
  4. 開啟 Amazon Virtual Private Cloud (Amazon VPC) 主控台
  5. 在導覽窗格中,選擇 Internet gateways (網際網路閘道)。
  6. 檢查您的 VPC 是否已連接到網際網路閘道。
    注意: 如果您的 VPC 未連接到網際網路閘道,請建立閘道並將其連接到您的 VPC。
  7. 在導覽窗格中,選擇 Route tables (路由表)。
  8. 選擇與您的 VPC 相關聯的路由表。
  9. 選擇 Subnet associations (子網路關聯) 索引標籤,然後確認資料庫子網路群組中的所有子網路是否已附加到路由表中。
    **注意:**如果子網路未與路由表關聯,則選擇 Edit subnet associations (編輯子網路關聯)。選取要與路由表相關聯的子網路。
  10. 選擇 Routes (路由) 索引標籤。檢查資料庫子網路群組中的所有子網路,確認目的地欄位中是否都有 0.0.0.0/0,且目標欄位中顯示的是網際網路閘道識別碼。
    **注意:**如果子網路的 Destination (目的地) 和 Target (目標) 欄位具有不同的值,請修改路由以包含上述的值。
  11. 開啟 Amazon RDS 主控台
  12. 在導覽窗格中,選擇 Databases (資料庫)。
  13. 選擇要修改的資料庫執行個體,然後選擇 Modify (修改)。
  14. Connectivity (連線) 下,展開 Additional configuration (其他設定) 區段,然後選取 Publicly accessible (可公開存取)。
  15. 選擇 Continue (繼續)。
  16. 選擇 Modify DB instance (修改資料庫執行個體)。

注意: 包含公有子網路和私有子網路組合的子網路群組,在容錯移轉後可能會發生連線問題。例如,您有一個主要執行個體在公有子網路中執行,而次要執行個體則在多可用區域組態中的私有子網路中執行。

我想要尋找我的 Amazon RDS 資料庫執行個體的連接資訊

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

當您嘗試從同一 VPC 內的資源連線到資料庫執行個體時,您的 RDS 端點會自動解析為私有 IP 位址。當您從 VPC 外部或網際網路連線到資料庫執行個體時,端點將解析為公有 IP 位址。

若要尋找連線訊息,您可以使用 Amazon RDS 主控台,執行 describe-db-instances AWS CLI 命令或DescribeDBInstances RDS API。

您也可以執行以下其中一個命令來尋找連線資訊:

dig example-rds-endpoint

- 或 -

nslookup example-rds-endpoint

當您執行 nslookup 命令來取得 RDS 端點時,您會看到類似下列範例的輸出結果。

來自同一 VPC 中 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的輸出,解析為私有 IP 位址:

[ec2-user@ip-172-xx-xx-xx ~]$ nslookup myoracledb.xxxxx.us-east-1.rds.amazonaws.com  
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer: myoracledb.xxxxx.us-east-1.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 172.31.8.27

來自不同 VPC 中 Amazon EC2 執行個體的輸出,解析為公有 IP 位址:

[ec2-user@ip-172-xx-xx-xx ~]$ nslookup myoracledb.xxxxx.us-east-1.rds.amazonaws.com  
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer: myoracledb.xxxxx.us-east-1.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 3.232.189.42

我的資料庫執行個體的 IP 位址不一致

指派給您 RDS 資料庫執行個體的 IP 位址,可能會在下列情況下發生改變:

  • 您停止並重新啟動資料庫執行個體。
    注意: 當您重新啟動資料庫執行個體時,IP 位址不會改變。
  • 由於資料庫執行個體失敗或資料庫執行個體類別更新,底層主機遭到取代。
  • 對資料庫執行個體進行了硬體維護。
  • 資料庫執行個體處於多可用區域環境中,並且發生了容錯移轉。
  • 資料庫執行個體作業系統進行了軟體修補。
  • 您使用具有容錯移轉的重新啟動,手動啟動資料庫執行個體的容錯移轉。
  • 資料庫引擎升級到主要或次要版本。
  • 執行個體的可用區發生中斷。

注意: 由於執行個體的 IP 位址是動態的,因此您無法為執行個體指派靜態 IP 位址或彈性 IP 位址。