我想要對指派給我的 Amazon Relational Database Service (Amazon RDS) 執行個體 IP 位址問題進行疑難排解。
解決方法
當 Amazon RDS 在虛擬私有雲端 (VPC) 中建立資料庫執行個體時,會為您的資料庫執行個體指派網路介面。系統會根據您設定執行個體的方式,為您的執行個體指派私有 IP 位址或公有 IP 位址。
我選擇了「可公開存取」設定,但公有 IP 位址未指派給資料庫執行個體
如果資料庫子網路群組中的子網路是私有的,則系統不會為您的資料庫執行個體指派公有 IP 位址。
若要解決此問題,請完成下列步驟:
- 開啟 Amazon RDS 主控台。
- 在導覽窗格中,選擇 Subnet groups (子網路群組)。
- 選擇與資料庫執行個體相關聯的子網路群組。
注意: 您可以查看具有 VPC ID 和相關聯子網路 ID 的子網路群組。
- 開啟 Amazon Virtual Private Cloud (Amazon VPC) 主控台。
- 在導覽窗格中,選擇 Internet gateways (網際網路閘道)。
- 檢查您的 VPC 是否已連接到網際網路閘道。
注意: 如果您的 VPC 未連接到網際網路閘道,請建立閘道並將其連接到您的 VPC。
- 在導覽窗格中,選擇 Route tables (路由表)。
- 選擇與您的 VPC 相關聯的路由表。
- 選擇 Subnet associations (子網路關聯) 索引標籤,然後確認資料庫子網路群組中的所有子網路是否已附加到路由表中。
**注意:**如果子網路未與路由表關聯,則選擇 Edit subnet associations (編輯子網路關聯)。選取要與路由表相關聯的子網路。
- 選擇 Routes (路由) 索引標籤。檢查資料庫子網路群組中的所有子網路,確認目的地欄位中是否都有 0.0.0.0/0,且目標欄位中顯示的是網際網路閘道識別碼。
**注意:**如果子網路的 Destination (目的地) 和 Target (目標) 欄位具有不同的值,請修改路由以包含上述的值。
- 開啟 Amazon RDS 主控台。
- 在導覽窗格中,選擇 Databases (資料庫)。
- 選擇要修改的資料庫執行個體,然後選擇 Modify (修改)。
- 在 Connectivity (連線) 下,展開 Additional configuration (其他設定) 區段,然後選取 Publicly accessible (可公開存取)。
- 選擇 Continue (繼續)。
- 選擇 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 位址。