Amazon DocumentDB クラスターに接続できないのはなぜですか?

所要時間2分
0

Amazon DocumentDB (MongoDB との互換性を備えた) クラスターに接続しようとすると問題が発生します。

簡単な説明

Amazon DocumentDB は仮想プライベートクラウド (VPC) 専用のサービスであり、パブリックエンドポイントの使用はサポートしていません。接続するには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたはインスタンスと同じ VPC 内の別の AWS サービスを使用する必要があります。

ただ、VPC ピアリングまたはトランジットゲートウェイを使用すれば、異なる VPC もしくはリージョンにある EC2 インスタンスや他の AWS サービスから Amazon DocumentDB にアクセスすることができます。しかし、AWS ネットワークの外部から Amazon DocumentDB クラスターにアクセスする必要がある場合は、SSH トンネリングまたは AWS Client VPN を使用してください。

解決策

**注:**AWS コマンドラインインターフェイス (AWS CLI)コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用しているかどうかを確認ください

Amazon DocumentDB クラスターに接続しようとしたときに問題が発生する理由はいくつかあります。次の手順を使用し、最も一般的な根本原因をトラブルシューティングします。

DB インスタンスが利用可能な状態ではない

Amazon DocumentDB クラスターに少なくとも 1 つの利用可能な状態のインスタンスとクラスターがあることを確認してください。インスタンスが利用可能な状態にない場合、接続を受け入れることはできません。詳細については、「Amazon DocumentDB クラスターのステータスをモニタリングする」「Amazon DocumentDB インスタンスのステータスをモニタリングする」をご参照ください。

ソースに対して、クラスターへのアクセスが許可されていない

インスタンスへの接続に使用するソースに、クラスターにアクセスする権限があるかどうかを確認します。インスタンスは、ネットワークアクセスコントロールリスト (ACL)、ローカルファイアウォール、セキュリティグループルール内のクラスターにアクセスできる必要があります。DB インスタンスに接続するソースからのトラフィックが、次に挙げた少なくとも 1 つ以上に原因によってブロックされていないかを確認してください。

  • DB インスタンスに関連付けられている Amazon Virtual Private Cloud (Amazon VPC) セキュリティグループ。必要に応じて、VPC に関連付けられたセキュリティグループに、DB インスタンスに出入りするソースに関連するトラフィックを許可するルールを追加します。IP アドレス、IP アドレスの範囲、または別の VPC セキュリティグループを指定できます。
  • ネットワーク ACL ルール。VPC でネットワーク ACL を使用する場合は、DB インスタンスとの間のインバウンドトラフィックとアウトバウンドトラフィックを許可するルールがあるかを確認してください。
  • ネットワークまたはローカルのファイアウォール。DB インスタンスがインバウンドとアウトバウンドの通信に使用するポートへのトラフィックとポートからのトラフィックが、ネットワークで許可されているかどうかを確認します。

Amazon VPC サブネットルートテーブルがトラフィックを許可しない

Amazon VPC サブネットのルートテーブルは、マシンまたはインスタンスからのトラフィックを許可する必要があります。各 DB インスタンスに関連付けられているサブネットが、同じまたは類似のルートテーブルに関連付けられているかを確認します。

プライマリ DB インスタンスが、別のルートテーブルに関連付けられているスタンバイレプリカにフェイルオーバーすると、トラフィックが正しくルーティングされない可能性があります。そのトラフィックが以前は問題なくルーティングされていた場合は、まだ正しくルーティングされているかどうかを確認します。

DNS 名またはエンドポイントが正しくない

正しい DNS 名またはエンドポイントを使用して Amazon DocumentDB クラスターに接続しているかを確認します。次に、エンドポイントが DB インスタンスへの接続に使用するクライアントに適した形式であるかを確認します。

たとえば、VPC 内の EC2 インスタンスから DB インスタンスエンドポイントに 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>

**telnet ** または nc コマンドのいずれかが成功すると、ネットワーク接続が確立されます。つまり、この問題は、ユーザー名やパスワードなど、データベースへのユーザー認証が原因である可能性が高いということです。

接続に使用する認証情報を確認する

クラスターに接続するときは、正しいユーザー名とパスワードを入力しているかを確認してください。パスワードを忘れた場合は、Amazon DocumentDB クラスターを変更することでパスワードのリセットが可能です

TLS 設定をオフにする

デフォルトでは、Amazon DocumentDB クラスターの TLS 設定はオンになっています。アプリケーションが TLS/SSL 接続を使用していない場合は、カスタム Amazon DocumentDB クラスターパラメータグループから TLS 設定をオフにします。詳細については、「Amazon DocumentDB クラスターパラメータグループの管理」をご参照ください。

**注:**TLS は、クラスターパラメータグループの変更を有効にするために、クラスターを再起動する必要がある静的パラメーターです。詳細については、「Amazon DocumentDB クラスターパラメータの変更」をご参照ください。

他のユースケースのトラブルシューティング

ローカル発行者証明書を取得できないというエラー

MongoDB ドライバーと CA 証明書の互換性が原因で、「unable to get local issuer certificate」というエラーが表示される場合があります。「TLS を有効にして接続する」で説明されているように、正しいパラメータを使用しているかを確認してください。

再起動後にインスタンスに接続できない

再起動後、インスタンスに接続できなくなる場合があります。インスタンスを再起動すると、インスタンスのプライベート IP アドレスが変更されることがあります。これにより、接続の問題が発生する可能性があります。Amazon DocumentDB リソースの DNS 解決済み IP アドレスを使用する代わりに、クラスターまたはインスタンスのエンドポイントを使用するのがベストプラクティスです。

認証失敗エラー

インスタンスに接続すると、「Authentication failed」というエラーが表示される場合があります。このエラーは、間違ったパスワードや間違ったユーザー名の使用など、パスワードの問題が原因で発生します。このエラーを解決するには、以下の手順に従ってください。

  1. 正しいユーザー名とパスワードが入力されていることを確認します。
  2. コピーアンドペーストではなく、手動でパスワードを入力します。
  3. Amazon DocumentDB コンソールから、または AWS CLI を使用してパスワードをリセットします。

何回接続しても接続できない

接続できなくなった場合は、インスタンスがそのインスタンスクラスのデータベース接続の最大制限に達している可能性があります。接続数を増やすには、インスタンスクラスをアップグレードします。

クライアント側から接続管理を調査するのがベストプラクティスです。接続プールと関連するタイムアウト設定が正しく設定されていることを確認します。Amazon DocumentDB クラスターへの接続数を管理するには、十分な設定が必要です。また、接続制限に達しないように設定する必要があります。

AWS Client VPN を使用してローカルシステムから接続できない

仮想プライベートネットワーク (VPN) を使用している場合、ローカルシステムから Amazon DocumentDB クラスターに接続できない場合があります。AWS Client VPN を正しく使用しているかを確認してください。AWS Client VPN を使用すれば、VPC からリモートネットワークに接続し、接続を介してトラフィックを渡すようにルーティング設定をすることができます。

接続が途切れ途切れになる問題

アプリケーションで接続が途切れ途切れになる問題が発生する場合は、クラスターに大きな負荷がかかっていないかどうかを確認してください。たとえば、ボリューム書き込み IOPS、ボリューム読み取りIOPS、OPCountersCommand、CPU 使用率などの Amazon CloudWatch メトリクスを確認します。

これらの CloudWatch メトリックスが急増している場合、接続の問題はブロッキングが原因である可能性があります。ユーザークエリは、クエリプランが最適ではないために実行速度が遅くなったり、リソースの競合によってブロックされたりすることがあります。パフォーマンスインサイトプロファイラーログを使用すれば、この問題の原因となったクエリを見つけることができます。

関連情報

接続に関する問題

Amazon EC2 を使用して接続する

CloudWatch で Amazon DocumentDB をモニタリングする

Amazon DocumentDB のセキュリティ

AWS公式
AWS公式更新しました 1年前