有關指派給 Amazon RDS 資料庫執行個體的 IP 地址,我需要瞭解哪些資訊?

上次更新日期:2021 年 11 月 9 日

我正在尋找與指派給我的 Amazon Relational Database Services (Amazon RDS) 執行個體的 IP 地址相關的資訊。

解決方案

當 Amazon RDS 在 Virtual Private Cloud (VPC) 中建立資料庫執行個體時,會使用資料庫子網路群組中的 IP 地址將網路界面指派給您的資料庫執行個體。根據執行個體的組態,會將兩種不同類型的 IP 地址指派給您的執行個體。

  • 私有 IP 地址:當您在 VPC 中啟動資料庫執行個體時,資料庫執行個體具有適用於 VPC 內部流量的私有 IP 地址。此 IP 地址無法從網際網路存取。此 IP 地址用於從相同 VPC 內的資源連線至執行個體。根據預設,每個 Amazon RDS 資料庫執行個體都有私有 IP 地址。根據您在資料庫子網路群組中定義的範圍指派此 IP 地址。
  • 公有 IP 地址:公有 IP 地址可從網際網路存取。此 IP 地址用於從 VPC 以外的資源或網際網路連線至執行個體。只有在為執行個體選取可公開存取的組態設定時,才會將公有 IP 地址指派給您的資料庫執行個體。

我已為 RDS 執行個體選取可公開存取設定,但未指派公有 IP 地址給執行個體

通常,當您的資料庫子網路群組中的子網路是私有子網路時,就會發生這種情況。

若要解決此問題,請執行下列動作:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇子網路群組
  3. 選擇與資料庫執行個體相關聯的子網路群組。
    您可以檢視具有相關聯子網路的 VPC ID 和子網路 ID 的子網路群組。
  4. 開啟 Amazon VPC 主控台
  5. 在導覽窗格中,選擇網際網路閘道
  6. 檢查您的 VPC 是否已連線至網際網路閘道。
    如果您的 VPC 未連線至網際網路閘道,請建立網際網路閘道並將其連接至您的 VPC。
  7. 在導覽窗格中,選擇路由表
  8. 選擇與 VPC 關聯的路由表。
  9. 選擇子網路關聯標籤。然後,確認您的資料庫子網路群組中的所有子網路都連接到此路由表
    如果子網路未與路由表相關聯,請選擇編輯子網路關聯。然後,選取要與路由表相關聯的子網路。如需詳細資訊,請參閱建立子網路與路由表的關聯
  10. 選擇路由標籤。然後,確認資料庫子網路群組中的所有子網路在目的地欄位中均具有值 0.0.0.0/0,在目標欄位中均具有網際網路閘道 ID。
    如果子網路的目的地目標欄位的值不同,請編輯路由以包含上述值。如需詳細資訊,請參閱從路由表中新增和移除路由
  11. 開啟 Amazon RDS 主控台
  12. 在導覽窗格中,選擇資料庫
  13. 選取要修改的資料庫執行個體,然後選擇修改
  14. 連線下,展開其他設定區段,然後選取可公開存取
  15. 選擇繼續
  16. 選擇修改資料庫執行個體

注意:請確定您的子網路群組不包含公有和私有子網路的組合。此組合可能會引發各種情況,例如在多可用區域組態中,主要執行個體在公有子網路中運行,同時次要執行個體在公有子網路中執行。這些情況會導致容錯移轉之後的連線問題。

我想要尋找 Amazon RDS 資料庫執行個體的私有和公有 IP 地址

在 Amazon RDS 中,IP 地址是動態的,而端點是靜態的。因此,最佳實務是使用端點連線到執行個體。每個 Amazon RDS 執行個體都有一個端點。若要尋找執行個體的端點 (也稱為 DNS 名稱),請執行下列動作:

  1. 開啟 Amazon RDS 主控台
  2. 在導覽窗格中,選擇資料庫
  3. 選擇您要尋找其 IP 地址的資料庫執行個體。
  4. 選擇連線與安全標籤。

您可以在端點和連接埠區段下看到端點資訊。

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

您也可以執行下列命令之一來尋找 RDS 執行個體的 IP 地址:

nslookup example-rds-endpoint

-或-

dig example-rds-endpoint

當您針對 RDS 資料庫執行個體執行 nslookup 命令時,可能會看到類似下列的輸出:

  • 相同 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 地址不一致

由於執行個體的 IP 地址是動態的,因此您無法將靜態 IP 地址或彈性 IP 地址指派給執行個體。指派給 RDS 資料庫執行個體的 IP 地址會在下列一或多個情況下變更:

  • 執行執行個體已停止並重新啟動。
    注意:執行個體重新啟動時,IP 地址不會變更。
  • 基礎主機會因為執行個體故障和資料庫執行個體類別更新等情況而被取代。
  • 執行個體上發生硬體維護。
  • 執行個體位於多可用區域環境中,並發生容錯移轉。
  • 資料庫執行個體的作業系統進行軟體修補。
  • 使用帶容錯移轉的重新開機啟動資料庫執行個體的手動容錯移轉。
  • 資料庫引擎進行主要或次要版本升級。
  • 執行個體的可用區域發生中斷。

此文章是否有幫助?


您是否需要帳單或技術支援?