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

云小課必用.png

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

順著以下幾個(gè)方面進(jìn)行排查,問(wèn)題就可以迎刃而解~

1.png

 

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

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

解決方法:嘗試實(shí)例重啟功能。

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

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

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

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

1. (推薦)SSL方式:實(shí)例連接管理頁(yè)面的SSL開(kāi)關(guān)開(kāi)啟,并且上傳證書(shū)到ECS。

2. 普通方式:實(shí)例基本信息頁(yè)面的SSL開(kāi)關(guān)關(guān)閉。

4. 排除連接命令錯(cuò)誤

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

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

連接地址:

連接信息可在“實(shí)例管理”頁(yè)的“連接地址”列獲取。

圖1 連接地址

1.png

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

目標(biāo)實(shí)例的“連接管理”頁(yè)面,“內(nèi)網(wǎng)連接”頁(yè)簽的“數(shù)據(jù)庫(kù)端口”。

用戶名和密碼:

root管理員帳號(hào)及其對(duì)應(yīng)的密碼。

證書(shū)名稱:

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

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

連接地址:

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

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

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

用戶名和密碼:

root管理員帳號(hào)及其對(duì)應(yīng)的密碼。

證書(shū)名稱:

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

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

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

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

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

內(nèi)網(wǎng)訪問(wèn)

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

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

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

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

在ECS上測(cè)試是否可以正常連接到DDS實(shí)例地址的端口。

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

telnet <實(shí)例地址{8635}

公網(wǎng)訪問(wèn)

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

安全組外訪問(wèn)安全組內(nèi)的DDS實(shí)例時(shí),需要為安全組加相應(yīng)的入方向規(guī)則。

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

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

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

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

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

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

3. 相同區(qū)域主機(jī)進(jìn)行ping測(cè)試。

如果在原ECS上沒(méi)有ping通DDS實(shí)例綁定的EIP,請(qǐng)?jiān)谙嗤瑓^(qū)域的另一臺(tái)ECS上去ping該EIP,如果可以正常ping通,說(shuō)明 虛擬網(wǎng)絡(luò) 正常,請(qǐng)?zhí)峤还温?lián)系華為云客服協(xié)助解決。

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

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

2. 云監(jiān)控服務(wù) 目前可以監(jiān)控?cái)?shù)據(jù)庫(kù)CPU、內(nèi)存、磁盤、連接數(shù)等指標(biāo),并且設(shè)置告警策略,出現(xiàn)告警時(shí)可以提前識(shí)別風(fēng)險(xiǎn)。

7. 連接失敗的常見(jiàn)報(bào)錯(cuò)及處理方法

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

該命令為非SSL方式下連接實(shí)例的命令,若實(shí)例已開(kāi)通SSL連接,執(zhí)行此命令會(huì)報(bào)錯(cuò)??捎靡韵路绞浇鉀Q:

        。關(guān)閉SSL連接,使用非SSL方式下的命令連接實(shí)例。

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

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

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

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

可能是DDS實(shí)例的端口錯(cuò)誤,也可能是DDS實(shí)例與ECS不在同一個(gè)區(qū)域活子網(wǎng)。可以通過(guò)curl命令確認(rèn)到達(dá)DDS實(shí)例的網(wǎng)絡(luò)是否暢通。

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

可能是連接DDS實(shí)例命令中管理員密碼錯(cuò)誤。請(qǐng)重新輸入正確的管理員密碼。

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

可能是未設(shè)置正確的安全組策略,導(dǎo)致從安全組外訪問(wèn)安全組內(nèi)的DDS實(shí)例失敗。請(qǐng)?jiān)O(shè)置正確的安全組策略。

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

可能是由于MongoDB客戶端版本太低導(dǎo)致的。請(qǐng)使用4.0版本以上的MongoDB客戶端連接實(shí)例。

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

可能是使用Connection String URI連接副本集實(shí)例時(shí),URI命令行沒(méi)有加雙引號(hào)。請(qǐng)將命令行添加雙引號(hào),再連接副本集實(shí)例。

8. Java驅(qū)動(dòng)連接實(shí)例失敗,提示:Timeout while receiving message。

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

更多詳細(xì)內(nèi)容,趕緊戳這里,了解詳情吧~~