為什麼我無法連線至 Amazon DocumentDB 叢集?

2 分的閱讀內容
0

當我嘗試連線至 Amazon DocumentDB (與 MongoDB 相容) 叢集時遇到問題 。

簡短描述

Amazon DocumentDB 是僅限虛擬私有雲端 (VPC) 的服務,不支援使用公有端點。若要連線,您必須在與執行個體相同的 VPC 中使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或另一個 AWS 服務。

但是,您可以使用 VPC 對等傳輸閘道,從 EC2 執行個體或不同 VPC 或區域中的其他 AWS 服務存取 Amazon DocumentDB。但是,如果您需要從 AWS 網路外部存取 Amazon DocumentDB 叢集,請使用 SSH 通道AWS Client VPN

解決方案

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新的 AWS CLI 版本

當您嘗試連線至 Amazon DocumentDB 叢集時,有幾種原因導致您可能會遇到問題。請使用以下步驟對最常見的根本原因進行疑難排解。

資料庫執行個體不是處於可用的狀態

檢查 Amazon DocumentDB 叢集是否至少有一個處於可用狀態的執行個體和叢集。如果您的執行個體都不是處於可用的狀態,就無法接受連線。如需詳細資訊,請參閱監控 Amazon DocumentDB 叢集的狀態監控 Amazon DocumentDB 執行個體的狀態

該來源沒有授權的叢集存取權

確認您用於連線至執行個體的來源擁有叢集的存取權。您的執行個體必須擁有網路存取控制清單 (ACL)、本機防火牆及安全群組規則中的叢集存取權。請確定來自連線至資料庫執行個體的來源流量未遭到以下一或多個項目封鎖:

  • 與資料庫執行個體相關聯的 Amazon Virtual Private Cloud (Amazon VPC) 安全群組。如有必要,請將規則新增至與 VPC 相關聯的安全群組,其允許與資料庫執行個體內外來源相關的流量。您可以指定 IP 地址、IP 地址範圍或另一個 VPC 安全群組。
  • 網路 ACL 規則。如果您在 VPC 中使用 網路 ACL,請確定它們具有允許輸入和輸出流量往返資料庫執行個體的規則。
  • 網路或本機防火牆。檢查您的網路是否允許資料庫執行個體用於輸入和輸出通訊之連接埠的流量。

Amazon VPC 子網路路由表不允許流量

Amazon VPC 子網路的路由表必須允許來自您機器或執行個體的流量。確認與每個資料庫執行個體相關聯的子網路,都與相同或類似的路由表相關聯。

如果您的主要資料庫執行個體容錯移轉至與不同路由表相關聯的待命複本,則流量可能無法正確路由。如果該流量先前路由時沒有任何問題,請檢查它是否仍然正確路由。

DNS 名稱或端點不正確

確認您使用正確的 DNS 名稱或端點來連線至 Amazon DocumentDB 叢集。然後確認端點的格式正確,適用於您用於連線至資料庫執行個體的用戶端。

例如,從 VPC 內的 EC2 執行個體對資料庫執行個體端點使用 nslookup:

nslookup docdb-2022-12-16-09-10-582.cuh2dlyxxxxx.us-east-1.docdb.amazonaws.com
Server: x.x.x.x
Address: x.x.x.x#53
Non-authoritative answer:
Name: docdb-2022-12-16-09-10-582.cuh2dlyrdizy.us-east-1.docdb.amazonaws.com
Address: x.x.x.x

如需對 DNS 和連線問題進行疑難排解,請參閱無法連線至 Amazon DocumentDB 端點

檢查連線是否已建立

執行下列其中一個命令來驗證連線:

telnet <DocDB endpoint> <port number>
nc -zv <DocDB endpoint> <port number>

如果 telnetnc 命令成功,即會建立網路連線。這表示該問題可能是因使用者對資料庫進行驗證而造成,例如使用者名稱和密碼。

確認您用於連線的憑證

確認您連線至叢集時輸入正確的使用者名稱和密碼。如果忘記密碼,可以修改 Amazon DocumentDB 叢集來重設密碼

關閉 TLS 組態

根據預設,系統會針對 Amazon DocumentDB 叢集開啟 TLS 組態。如果您的應用程式不使用 TLS/SSL 連線,請從自訂 Amazon DocumentDB 叢集參數群組關閉 TLS 組態。如需詳細資訊,請參閱管理 Amazon DocumentDB 叢集參數群組

注意: TLS 是會要求您重新啟動叢集的靜態參數,這樣叢集參數群組變更才會生效。如需詳細資訊,請參閱修改 Amazon DocumentDB 叢集參數

對其他使用案例進行疑難排解

無法取得本機發行人憑證錯誤

您可能會收到因 MongoDB 驅動程式與 CA 憑證之相容性而造成的「無法取得本機發行人憑證」錯誤。請確定您使用如開啟 TLS 時連線中所述的正確參數。

重新啟動後無法連接到您的執行個體

重新啟動後,您可能無法連線至執行個體。當您重新啟動執行個體時,執行個體的私有 IP 地址可能會變更。這可能造成連線問題。最佳實務是使用叢集或執行個體端點,而不是使用 Amazon DocumentDB 資源的 DNS 解析 IP 地址。

驗證失敗錯誤

連線至執行個體時,您可能會收到「驗證失敗」錯誤訊息。此錯誤是由密碼問題引起,例如使用的密碼或使用者名稱不正確。遵循下方步驟來解決此錯誤:

  1. 確認提供正確的使用者名稱和密碼。
  2. 手動輸入密碼,而不是使用複製貼上的方法。
  3. 從 Amazon DocumentDB 主控台或使用 AWS CLI 重設密碼。

多次連線後無法連線

如果您再也無法連線,則執行個體可能已達到其執行個體類別的資料庫連線上限。若要允許更多連線,請升級執行個體類別。

最佳實務是從用戶端調查連線管理。檢查連線共用及相關逾時設定是否設定正確。設定必須足以讓您管理與 Amazon DocumentDB 叢集的連線數量。設定還必須防止您達到連接限制。

無法使用 AWS Client VPN 從本機系統連線

當您使用虛擬私有網路 (VPN) 時,可能無法從本機系統連線至 Amazon DocumentDB 叢集。請確定您正確使用 AWS Client VPN。AWS Client VPN 可讓您從 VPC 連線至遠端網路,並設定路由以透過連線傳遞流量。

間歇性連線問題

如果您的應用程式遇到間歇性連線問題,請檢查叢集上是否有繁重的工作負載。例如,檢閱 VolumeWriteIOPs、VolumeReadIOPs、OpcountersCommand 及 CPUUtilization 等 Amazon CloudWatch 指標。

如果您發現這些 CloudWatch 指標中的峰值,則連線問題可能是封鎖而造成的狀況。使用者查詢可能因為次優的查詢計畫而執行緩慢,或者可能遭到資源爭用封鎖。使用 Performance InsightsProfiler 日誌尋找造成此問題的查詢。

相關資訊

連線問題

使用 Amazon EC2 連線

使用 CloudWatch 監控 Amazon DocumentDB

Amazon DocumentDB 中的安全性

AWS 官方
AWS 官方已更新 1 年前