華為云計算 云知識 【云小課】DDS實例連接失敗?跟著我七步搞定!
【云小課】DDS實例連接失???跟著我七步搞定!

云小課必用.png

使用 文檔數(shù)據(jù)庫服務 (Document Database Service,簡稱DDS)實例時,實例連接失敗真是令人頭大。萬事開頭難,跟著小云妹,耐心閱讀本貼,讓你自學成才,實例連接自此暢通無阻!

順著以下幾個方面進行排查,問題就可以迎刃而解~

1.png

 

1. 排除 數(shù)據(jù)庫 實例異常

可能原因:DDS系統(tǒng)故障,實例狀態(tài)異常,實例或表被鎖定等。

解決方法:嘗試實例重啟功能。

2. 使用正確的客戶端連接方式

建議安裝使用4.0版本以上的MongoDB客戶端連接實例,以集群為例:

連接方式 使用場景
內網(wǎng)方式 系統(tǒng)默認提供內網(wǎng)IP地址。當應用部署在ECS上,且該ECS與DDS實例處于同一區(qū)域,同一VPC時,建議單獨使用內網(wǎng)IP連接ECS與DDS實例。
公網(wǎng)方式 不能通過內網(wǎng)IP地址訪問DDS實例時,使用公網(wǎng)訪問,建議單獨綁定 彈性公網(wǎng)IP 連接ECS(或公網(wǎng)主機)與DDS實例。

3. 使用正確的SSL方式安全連接

1. (推薦)SSL方式:實例連接管理頁面的SSL開關開啟,并且上傳證書到ECS。

2. 普通方式:實例基本信息頁面的SSL開關關閉。

4. 排除連接命令錯誤

請獲取正確的連接地址、端口參數(shù)配置、用戶名和密碼、SSL方式下命令錯誤,并重試連接實例。

SSL內網(wǎng)連接集群示例:./mongo mongodb://rwuser:****@:,:/test?authSource=admin --ssl --sslCAFile  --sslAllowInvalidHostnames

連接地址:

連接信息可在“實例管理”頁的“連接地址”列獲取。

圖1 連接地址

1.png

數(shù)據(jù)庫端口:

目標實例的“連接管理”頁面,“內網(wǎng)連接”頁簽的“數(shù)據(jù)庫端口”。

用戶名和密碼:

root管理員帳號及其對應的密碼。

證書名稱:

SSL證書文件名,該文件需放在執(zhí)行該命令的路徑下。

SSL公網(wǎng)連接集群示例:./mongo mongodb://rwuser:****@:/test?authSource=admin --ssl --sslCAFile  --sslAllowInvalidHostnames

連接地址:

單擊實例名稱,在實例“連接管理”頁面“公網(wǎng)連接”頁簽的公網(wǎng)連接地址處獲取。

數(shù)據(jù)庫端口:

目標實例的“連接管理”頁面,“公網(wǎng)連接”頁簽的“數(shù)據(jù)庫端口”。

用戶名和密碼:

root管理員帳號及其對應的密碼。

證書名稱:

SSL證書文件名,該文件需放在執(zhí)行該命令的路徑下。

5. 排除網(wǎng)絡不通

跨網(wǎng)段訪問(配置IP映射)

1. 確保在源端ECS網(wǎng)絡與實例節(jié)點網(wǎng)絡連通,如果網(wǎng)絡不通,可以可以通過建立VPC對等連接進行相關配置。

2. 在客戶端與副本集實例部署在不同網(wǎng)段的情況下需要進行跨網(wǎng)段訪問配置,例如訪問副本集的客戶端所在網(wǎng)段為192.168.0.0/16,副本集所在的網(wǎng)段為172.16.0.0/24,則需要添加跨網(wǎng)段配置192.168.0.0/16才能正常訪問。

內網(wǎng)訪問

1. 檢查ECS與RDS是否在同一個區(qū)域,VPC。

● 不同區(qū)域的云服務之間內網(wǎng)互不相通,無法訪問實例。請就近選擇靠近您業(yè)務的區(qū)域,可減少網(wǎng)絡時延,提高訪問速度。

● 不同VPC下,可以通過建立VPC對等連接實現(xiàn)網(wǎng)絡互通。

2. 檢查安全組規(guī)則。

在ECS上測試是否可以正常連接到DDS實例地址的端口。

3. 安全組外訪問安全組內的DDS實例時,需要為安全組添加相應的入方向規(guī)則。

telnet <實例地址{8635}

公網(wǎng)訪問

1. 檢查安全組規(guī)則。

安全組外訪問安全組內的DDS實例時,需要為安全組加相應的入方向規(guī)則。

2. 檢查網(wǎng)絡ACL規(guī)則。

a. 進入 虛擬私有云 網(wǎng)絡ACL列表。

b. 檢查EIP綁定的網(wǎng)卡是否在網(wǎng)絡ACL關聯(lián)的子網(wǎng)下。

c. 查看網(wǎng)絡ACL當前是“開啟”狀態(tài)還是“關閉”狀態(tài)。

d. 若網(wǎng)絡ACL為“開啟”狀態(tài),需要添加ICMP放通規(guī)則進行流量放通。

注意:網(wǎng)絡ACL的默認規(guī)則是丟棄所有出入方向的包,關閉“網(wǎng)絡ACL”后,其默認規(guī)則仍然生效。

3. 相同區(qū)域主機進行ping測試。

如果在原ECS上沒有ping通DDS實例綁定的EIP,請在相同區(qū)域的另一臺ECS上去ping該EIP,如果可以正常ping通,說明 虛擬網(wǎng)絡 正常,請?zhí)峤还温?lián)系華為云客服協(xié)助解決。

6. 排除實例的連接數(shù)滿的情況

1. 查看實例的連接數(shù)是否已達上限。

2. 云監(jiān)控服務 目前可以監(jiān)控數(shù)據(jù)庫CPU、內存、磁盤、連接數(shù)等指標,并且設置告警策略,出現(xiàn)告警時可以提前識別風險。

7. 連接失敗的常見報錯及處理方法

1. Mongo Shell連接實例失敗,提示:isMaster。

該命令為非SSL方式下連接實例的命令,若實例已開通SSL連接,執(zhí)行此命令會報錯??捎靡韵路绞浇鉀Q:

        。關閉SSL連接,使用非SSL方式下的命令連接實例。

        。下載SSL證書,將證書上傳到ECS目錄下(示例:/root/ca.crt),使用SSL方式下的命令連接實例。

2. Mongo Shell連接實例失敗,提示No route to host以及connection attempt failed。

可能是DDS實例的端口錯誤,也可能是DDS實例與ECS不在同一個區(qū)域活子網(wǎng)??梢酝ㄟ^curl命令確認到達DDS實例的網(wǎng)絡是否暢通。

3. Mongo Shell連接實例失敗,提示No route to host以及connection attempt failed。

可能是DDS實例的端口錯誤,也可能是DDS實例與ECS不在同一個區(qū)域活子網(wǎng)??梢酝ㄟ^curl命令確認到達DDS實例的網(wǎng)絡是否暢通。

4. Mongo Shell連接實例失敗,提示:Authentication failed。

可能是連接DDS實例命令中管理員密碼錯誤。請重新輸入正確的管理員密碼。

5. Mongo Shell連接實例失敗,提示:couldn't connect to server。

可能是未設置正確的安全組策略,導致從安全組外訪問安全組內的DDS實例失敗。請設置正確的安全組策略。

6. Mongo Shell連接實例失敗,提示:Cannot list multiple servers in URL without 'replicaSet' option。

可能是由于MongoDB客戶端版本太低導致的。請使用4.0版本以上的MongoDB客戶端連接實例。

7. Mongo Shell連接副本集實例失敗,提示:Cannot list multiple servers in URL without 'replicaSet'option。

可能是使用Connection String URI連接副本集實例時,URI命令行沒有加雙引號。請將命令行添加雙引號,再連接副本集實例。

8. Java驅動連接實例失敗,提示:Timeout while receiving message。

可能是由于異常的慢查詢占用實例資源,導致CPU使用率激增甚至到達峰值,請檢查是否有慢查詢,建議添加索引進行優(yōu)化。也可能是應用端連接池的配置錯誤導致,如超時時間的設置等,請檢查應用端連接池的配置是否正確。

更多詳細內容,趕緊戳這里,了解詳情吧~~