本文介紹在各種情況下如何自助解決串連不上RDS的問題。
在搭建業務情境調試的過程中,經常會出現無法串連RDS執行個體的情況,很多時候都是由於網路類型不統一、白名單未放對應IP等導致的。以下為最常見的原因和解決辦法。
網路類型不同
ECS執行個體採用Virtual Private Cloud,RDS執行個體採用傳統網路
解決辦法一(推薦):將RDS執行個體從傳統網路切換為VPC,具體操作請參見切換網路類型。
說明切換後,兩者必須處於同一個VPC,才能內網互連。
解決辦法二:重新購買傳統網路的ECS執行個體(ECS執行個體不支援從VPC遷移到傳統網路)。但是VPC比傳統網路更安全,建議您使用VPC。
解決辦法三:ECS執行個體使用RDS執行個體的公網串連地址串連RDS執行個體,即通過公網串連RDS執行個體。這種方式的效能、安全性、穩定性較差。
ECS執行個體採用傳統網路,RDS執行個體採用Virtual Private Cloud
解決辦法一(推薦):將ECS執行個體從傳統網路遷移到VPC。
說明切換後,兩者必須處於同一個VPC,才能內網互連。
解決辦法二:將RDS執行個體從VPC切換為傳統網路。但是VPC比傳統網路更安全,建議您使用VPC。
解決辦法三:使用ClassicLink功能,使傳統網路的ECS執行個體可以和VPC中的雲資源通過內網互連。
解決辦法四:ECS執行個體使用RDS執行個體的公網串連地址串連RDS執行個體,即通過公網串連RDS執行個體。這種方式的效能、安全性、穩定性較差。
Virtual Private Cloud不同
Virtual Private Cloud是基於阿里雲構建的一個隔離的網路環境,專用網路之間邏輯上徹底隔離,所以當ECS和RDS執行個體的網路類型都是專用網路時,還需要保證所屬的專用網路也相同,才能內網互連。
解決辦法一(推薦):將RDS執行個體遷移到ECS執行個體所在的VPC。
具體操作:參見切換Virtual Private Cloud和虛擬交換器或切換網路類型(先將RDS執行個體的網路類型從VPC切換到傳統網路,再切換回VPC)。
解決辦法二:在兩個VPC之間建立雲企業網。
解決辦法三:通過公網互連。這種方式的效能、安全性、穩定性較差。
地區不同
ECS執行個體和RDS執行個體位於不同的地區時,無法直接通過內網互連。
IP白名單設定有誤
由於白名單設定中只有預設地址127.0.0.1。該地址表示不允許任何裝置訪問RDS執行個體。因此需在白名單中添加對端的IP地址,具體操作請參見設定IP白名單。
白名單設定成了0.0.0.0,正確格式為0.0.0.0/0。
重要0.0.0.0/0表示允許任何裝置訪問RDS執行個體,請謹慎使用。
如果開啟了高安全白名單,需進行如下檢查:
如果使用的是專用網路的內網串連地址,請確保ECS內網IP地址添加到了專用網路的分組。
如果使用的是傳統網路的內網串連地址,請確保ECS內網IP地址添加到了傳統網路的分組。
如果通過公網串連,請確保裝置公網IP地址添加到了傳統網路的分組(專用網路的分組不適用於公網)。
您在白名單中添加的裝置公網IP地址可能並非裝置真正的出口IP地址。原因如下:
公網IP地址不固定,可能會變動。
IP地址查詢工具或網站查詢的公網IP地址不準確。
網域名稱解析失敗或錯誤
網域名稱伺服器出現故障或修改過網卡配置,可能會導致網域名稱解析失敗或錯誤。此時可以通過ping
和 telnet
測試到RDS的連通性,命令如下。
ping <網域名稱>
telnet <網域名稱> <連接埠號碼>
樣本
如果失敗的話,可以通過修改網卡設定檔來解決問題,具體步驟如下:
修改對應的網卡設定檔。
vi /etc/sysconfig/network-scripts/<網卡設定檔名>
說明<網卡設定檔名>:ECS伺服器使用的網卡,可以通過
ifconfig
查看尾碼名,預設為ifcfg-eth0。在設定檔末尾加入如下配置。
DNS1=100.100.XX.XX DNS2=100.100.XX.XX
說明如果已經有DNS1和DNS2配置,請將IP地址修改為如上所示。
使用如下命令重啟Network服務。
sudo systemctl restart network
使用如下命令查看是否修改成功。
cat /etc/resolv.conf
執行個體狀態一直處於“建立網路連接”中
通過控制台進入工作清單,可對執行個體的當前任務重試,或修改切換時間。詳情請參見工作清單。