如何對 Amazon RDS 資料庫執行個體的 IP 位址問題進行疑難排解?
我想對 Amazon Relational Database Services (Amazon RDS) 指派給我的資料庫執行個體 IP 位址問題進行疑難排解。
解決方法
當 Amazon RDS 在虛擬私有雲端 (VPC) 中建立資料庫執行個體時,Amazon RDS 會為您的資料庫執行個體指派網路介面。根據您設定執行個體的方式,Amazon RDS 會指派私有 IP 位址或公有 IP 位址。
我選取了「可公開存取」設定,但 Amazon RDS 並未向資料庫執行個體指派公有 IP 位址
如果資料庫子網路群組中的子網路是私有的,則 Amazon RDS 不會為您的資料庫執行個體指派公有 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 內的資源連線到資料庫執行個體時,您的 Amazon RDS 端點會自動解析為私有 IP 位址。當您從 VPC 外部或網際網路連線到資料庫執行個體時,端點將解析為公有 IP 位址。
若要尋找連線訊息,您可以使用 Amazon RDS 主控台,執行 describe-db-instances AWS CLI 命令,或執行 DescribeDBInstances Amazon RDS API。
或者,您可以執行以下其中一個命令:
dig example-rds-endpoint
-或-
nslookup example-rds-endpoint
**注意:**將 example-rds-endpoint 替換為您的端點。
當您執行 nslookup 命令來取得 Amazon RDS 端點時,您會看到類似下列範例的輸出結果。
來自同一 VPC 中 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的輸出,解析為私有 IP 位址:
[ec2-user@ip-172-xx-xx-xx ~] nslookup myoracledb.abcd123.region.rds.amazonaws.com Server: 172.16.0.0 Address: 172.31.255.255#53 Non-authoritative answer: myoracledb.abcd123.region.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.abcd123.region.rds.amazonaws.com Server: 192.0.2.0 Address: 192.0.2.255#53 Non-authoritative answer: myoracledb.abcd123.region.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 位址不一致
在下列情況下,Amazon RDS 資料庫執行個體的 IP 位址可能會發生改變:
- 您停止並重新啟動資料庫執行個體。
**注意:**當您重新啟動資料庫執行個體時,IP 位址不會改變。 - 由於資料庫執行個體故障或資料庫執行個體類別更新,Amazon RDS 會取代底層主機。
- Amazon RDS 會對資料庫執行個體執行硬體維護。
- 資料庫執行個體處於多可用區域環境中,並且發生容錯移轉。
- 資料庫執行個體的作業系統 (OS) 進行了軟體修補。
- 您使用具有容錯移轉的重新啟動,手動啟動資料庫執行個體的容錯移轉。
- 資料庫引擎升級到主要版本或次要版本。
- 執行個體的可用區域發生中斷。
注意: 由於執行個體的 IP 位址是動態的,因此您無法為執行個體指派靜態 IP 位址或彈性 IP 位址。
相關內容
- 已提問 1 年前
- 已提問 2 年前

