本文介紹了ECS通過內網以及ECS以外的其他裝置通過外網無法訪問RDS SQL Server執行個體時的解決方案。
問題描述
使用ECS執行個體通過內網串連RDS SQL Server執行個體時,提示以下錯誤資訊。
無法串連到XXX。Cannot connect to XXX。
在與 SQL Server 建立串連時出現與網路相關的或特定於執行個體的錯誤。未找到或無法訪問伺服器。請驗證執行個體名稱是否正確並且 SQL Server 已配置為允許遠端連線。 (provider: TCP Provider, error: 0 - 由於串連方在一段時間後沒有正確回覆或串連的主機沒有反應,串連嘗試失敗。) (Microsoft SQL Server,錯誤:10060或258)
解決方案
阿里雲提醒您:
如果您對執行個體或資料有修改、變更等風險操作,務必注意執行個體的容災、容錯能力,確保資料安全。
如果您對執行個體(包括但不限於ECS、RDS)等進行配置與資料修改,建議提前建立快照或開啟RDS記錄備份等功能。
如果您在阿里雲平台授權或者提交過登入帳號、密碼等安全資訊,建議您及時修改。
ECS通過內網無法訪問RDS的解決辦法
檢查ECS執行個體的內網IP地址是否已添加到RDS執行個體的白名單。
通過RDS內網地址串連RDS執行個體前,需要先將ECS內網IP添加到RDS白名單。相關操作,請參見如何查詢ECS執行個體的IP地址和如何設定RDS白名單。
說明如果僅將ECS外網IP地址添加到RDS白名單,則無法通過內網串連RDS。
檢查ECS和RDS執行個體是否位於不同的地區。
ECS執行個體和RDS執行個體需要位於同一地區才能內網互連。可以是同一地區的相同或不同可用性區域。
如果ECS執行個體和RDS執行個體位於不同的地區,則無法直接通過內網互連,請參見以下方法處理:
方法一:
方法二:
ECS執行個體使用RDS執行個體的公網串連地址串連RDS執行個體,這種方式的效能、安全性、穩定性較差。如何申請外網地址,請參見申請SQL Server外網地址。
方法三:
使用雲企業網打通跨地區VPC網路(前提是源和目標的網路類型都是Virtual Private Cloud),詳情請參見雲企業網入門概述。
檢查ECS和RDS的網路類型是否相同(都是專用網路或都是傳統網路)。
如果網路類型不同,一個是傳統網路,一個是專用網路,請參見以下方法處理:
重要阿里雲各產品傳統網路正在逐步下線中,對於RDS執行個體和ECS執行個體,建議您儘快將傳統網路切換到VPC網路。具體詳情,請參見【產品/功能變更】RDS資料庫傳統網路下線計劃和【下線公告】停止提供阿里雲傳統網路類型的ECS執行個體相關服務。
ECS執行個體採用專用網路而RDS執行個體採用傳統網路的情境:
方法一(推薦):將RDS執行個體從傳統網路切換為專用網路(需要切換到待串連的ECS執行個體所在的VPC)。具體操作,請參見更改網路類型。
方法二:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體,這種方式的效能、安全性、穩定性較差。如何申請外網地址,請參見申請SQL Server外網地址。
ECS執行個體採用傳統網路而RDS執行個體採用專用網路的情境:
方法一(推薦):將ECS執行個體從傳統網路遷移到待串連的RDS執行個體所在的VPC,可在RDS執行個體詳情頁網路類型右側單擊查看串連詳情查看RDS執行個體所在VPC ID。具體操作,請參見ECS執行個體從傳統網路遷移到專用網路。
方法二:開通ClassicLink功能,使傳統網路的ECS執行個體可以和VPC中的RDS執行個體通過內網互連。
說明若開通ClassicLink功能後網路不通,請參見建立ClassicLink串連後傳統網路和VPC網路不通的排查思路。
方法三:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體,這種方式的效能、安全性、穩定性較差。如何申請外網地址,請參見申請SQL Server外網地址。
如果ECS和RDS執行個體的網路類型都是專用網路,則檢查ECS與RDS執行個體是否位於不同的VPC。
如果專用網路不同,請參見以下方法進行處理:
方法一(推薦):將ECS執行個體VPC遷移到RDS執行個體所在VPC。具體操作,請參見更換ECS執行個體的VPC。
方法二:將RDS執行個體VPC遷移到ECS執行個體所在VPC。具體操作,請參見切換Virtual Private Cloud和虛擬交換器。
方法三:在兩個VPC之間建立雲企業網。
方法四:ECS執行個體使用RDS執行個體的公網地址串連RDS執行個體。這種方式的效能、安全性、穩定性較差。如何申請外網地址,請參見申請SQL Server外網地址。
檢查白名單是否設定成了
0.0.0.0
,正確格式應該為0.0.0.0/0
。重要0.0.0.0/0
表示允許任何IP訪問RDS執行個體,有安全風險,請謹慎使用。檢查ECS執行個體中配置的RDS內網地址和連接埠是否正確。更多詳情,請參見查看內外網地址和連接埠。
ECS以外的裝置無法訪問RDS的解決辦法
建議在訪問RDS時使用內網網域名稱而不是IP地址,IP地址可能隨著執行個體的遷移而變動。
ECS以外的裝置訪問RDS時,只能通過外網串連。如果串連失敗,請參見如下方法解決。
檢查您使用的串連地址是否為RDS的內網地址。
您需要修改串連地址為RDS外網地址。如何擷取外網地址,請參見查看外網串連地址。
說明ECS和DMS以外的裝置無法通過內網訪問RDS(除非使用物理專線)。
檢查是否已設定RDS白名單。如果未設定,請參見設定白名單。
檢查白名單是否設定成了
0.0.0.0
,正確格式為0.0.0.0/0
。重要0.0.0.0/0
表示允許任何IP訪問RDS執行個體,有安全風險,請謹慎使用。如果您已設定白名單,但還是串連失敗,很可能是因為您在白名單中添加的裝置公網IP地址並非裝置真正的出口IP地址。原因如下所示:
公網IP地址不固定,可能會變動。
IP地址查詢工具或網站查詢的公網IP地址不準確。
說明如何確認裝置公網IP地址,請參見SQL Server如何確定外部伺服器/用戶端的公網IP地址。
適用於
雲資料庫RDS SQL Server版