このページでは、一般的なプライベートエンドポイント接続の問題と考えられる解決策について説明します。
専有クラスター
AWS PrivateLink 接続のステータスを確認します。
各プライベートエンドポイントのステータスを表示するには:
Atlasで、プロジェクトのGo Database & Network Access{0 ページに します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
[ データベースとネットワーク アクセス] ページが表示されます。
[Private Endpoint] タブをクリックします。
ステータスを確認します。
Atlas Endpoint Service StatusフィールドとEndpoint Statusフィールドには、各プライベートエンドポイントのステータスが表示されます。
プライベートエンドポイント接続の状態を判断するには、次のステータスを参照してください。
Atlas Endpoint Service Status
ステータス | 説明 |
|---|---|
プライベートリンクの作成 | Atlas はネットワーク ロード バランサーと VPCリソースを作成しています。 |
失敗 | システム障害が発生しました。 |
利用可能 | Atlas ネットワーク ロード バランサーとVPCエンドポイント サービスが作成され、接続リクエストを受信する準備が整いました。 |
削除 | Atlas はプライベートエンドポイント サービスを削除しています。 |
Endpoint Status
ステータス | 説明 | |||
|---|---|---|---|---|
未構成 | Atlas はネットワーク ロードバランサーとVPCエンドポイント サービスを作成しましたが、Amazon Web Services はまだインターフェイスエンドポイントを作成していません。Edit をクリックし、ウィザードを完了してインターフェイスエンドポイントを作成します。 | |||
保留中の受け入れ | Amazon Web Services は、インターフェイスエンドポイントから Atlas VPCエンドポイント サービスへの接続リクエストを受信しました。 | |||
支払い待ち | Amazon Web Services は、インターフェイスエンドポイントと Atlas VPCエンドポイント サービス間の接続を確立しています。 | |||
失敗 | Amazon Web Services がAtlas VPCリソースとVPCのインターフェイスエンドポイントの間の接続を確立できませんでした。Edit をクリックし、提供した情報が正しいことを確認し、プライベートエンドポイントを再度作成します。 重要:インターフェイスエンドポイントが失敗すると、次のメッセージが表示される場合があります。 このメッセージは、AWS PrivateLink 接続を作成したときにサブネットを指定しなかったことを示しています。 このエラーを解決するには、以下の手順を行います。
| |||
利用可能 | ||||
削除 | Atlas は、プライベートエンドポイント サービスからインターフェイスエンドポイントを削除しています。 |
セキュリティ グループが正しく構成されていることを確認します。
AWS PrivateLink を使用して Atlas クラスターに接続する必要があるリソースごとに、リソースのセキュリティグループは、すべてのポートで インターフェイスエンドポイントの プライベートIPアドレスへのアウトバウンド トラフィックを許可する必要があります(1024 -65535 )。
詳細については、「 セキュリティ グループへのルールの追加 」を参照してください。
インターフェイスエンドポイントのセキュリティグループは、 AWS PrivateLink を使用して Atlas クラスターに接続する必要がある各リソースからのすべてのポートでインバウンド トラフィックを許可する必要があります。
インスタンスのIPアドレスまたはセキュリティ グループにアクセスして、それらからのトラフィックがインターフェイスエンドポイントセキュリティ グループに到達できるようにします。
DNS ルックアップによるプライベート IP の取得
お使いの VPC 内のクライアントが、これらのプライベート エンドポイント対応の接続文字列のいずれかを使用して Atlas クラスターに接続する際、クライアントは VPC 内の Atlas のロード バランサーに対して、インターフェース エンドポイントのいずれかを通じて接続を試みます。ホスト名は、お使いのクライアントで使用される DNS 解決メカニズムに従って、インターフェイスエンドポイントに変換されます。あるインターフェイスエンドポイントが使用できない場合は、次のものが使用されます。ドライバーなどの接続メカニズムではこの処理を見通すことはできません。ドライバーが認識するのは、SRV レコード形式または接続文字列形式のホスト名のみです。
DNS シードリストのプライベートエンドポイント対応接続文字列の SRV レコード
次の例は、 AWS PrivateLink が有効化されている単一リージョン クラスターの SRVレコードで、 に 3 つの一意なポートが定義されています。pl-0-us-east-1.k45tj.mongodb.net
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
前の例では、次のようになります。
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.netは、mongodb+srv://cluster0-pl-0.k45tj.mongodb.net接続文字列が参照する SRV レコードです。pl-0-us-east-1.k45tj.mongodb.netは、AWS PrivateLink を構成済みのあるリージョンに属する 1 つの Atlas クラスター内の各ノードのホスト名です。1024、1025、1026は、Atlas で AWS PrivateLink を有効化したリージョンに属する各 Atlas レプリカセット ノードのロード バランサーに割り当てられる固有のポートです。Atlas レプリカセット内のどのノードにも同じホスト名でアクセスでき、個々のノードはロード バランサーによって固有のポート別に解決されます。
プライベートエンドポイント対応接続文字列と SRV レコードでのホスト名 DNS 解決
SRV レコードおよび標準の接続文字列に含まれるホスト名は、DNS 正規名(CNAME)レコードであり、DNS 名(これは AWS がインターフェース エンドポイント用に生成する、エンドポイント固有のリージョン別名)に解決されます。DNS ALIAS レコードは、インターフェース エンドポイントを配置した VPC 内の各サブネットに対して存在します。各 ALIAS レコードには、そのサブネットのインターフェイス エンドポイントのプライベート IP アドレスが含まれています。
以下に例示されているのは、SRV レコードと標準接続文字列のホスト名向けの DNS ルックアップであり、インターフェイスエンドポイントとその DNS ALIAS レコード向けのエンドポイント固有のリージョン別 DNS 名が含まれています。
nslookup pl-0-us-east-1.k45tj.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: pl-0-us-east-1.k45tj.mongodb.net canonical name = vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com. Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com Address: 10.0.30.194 Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com Address: 10.0.20.54
オープンな接続が多すぎるため、接続を拒否
接続が クラスター サービスの制限 を超える場合は、クラスター層を増やす 必要があります。
接続数が予想される接続数よりも大幅に高い場合は、以下の「 ほとんどの接続を行うクライアントに関する詳細情報の収集 」セクションを参照してください。
負荷分散された最適化された接続文字列を使用して、シャーディングされたクラスターv7.0.22 に を適用する例。
$ mongosh "mongodb+srv://aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/" --apiVersion 1 --username sarah Enter password: ***** Current Mongosh Log ID: 68910f1754be6d9adc74e399 Connecting to: mongodb+srv://<credentials>@aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/?appName=mongosh+2.5.6 MongoNetworkError: Client network socket disconnected before secure TLS connection was established
{"t":{"$date":"2025-08-04T19:48:17.649+00:00"},"s":"I", "c":"NETWORK", "id":22942, "ctx":"listener","msg":"Connection refused because there are too many open connections","attr":{"remote":"54.172.143.8:33205", "isLoadBalanced":false,"uuid":{"uuid":{"$uuid":"e52e9c14-7648-430a-bc2e-95292347b7e0"}}, "connectionId":380,"connectionCount":58}}
クライアントソースIPの表示
注意
この機能は徐々に廃止されています。2025 年 9 月 日までに、 Amazon Web Servicesのすべての専用クラスターで利用可能になる予定です。
クライアントソースIP は、プライベートエンドポイント経由で接続しているシャーディングされたクラスターの mongos ログ で表示できます。
クライアントソースIP は、プライベート エンドポイント経由で接続しているレプリカセットのmongodログで表示できます。
クライアントソースIP は、プライベートエンドポイント経由で接続しているレプリカセットとシャーディングされたクラスターの両方の監査するログで表示できます。
この機能は、次のバージョンのAmazon Web Servicesでサポートされています。
8.1 および v8.1.0+
8.0 および v8.0.10+
7.0 および v7.0.22+
オリジンクライアントのIPアドレスとポートは
sourceClientフィールドによって示されます。その値は、上記の例では10.50.4.23です。{"t":{"$date":"2025-07-21T12:15:42.123+00:00"},"s":"I","c":"NETWORK", "id":22943,"ctx":"listener","msg":"Connection accepted","attr":{"remote":"192.168.100.55:31245", "isLoadBalanced":true,"sourceClient":"10.50.4.23:50123","uuid":{"uuid":{"$uuid":"12345678-abcd-4321-abcd-87654321abcd"}}, "connectionId":345,"connectionCount":19}}
ほとんどの接続を行うクライアントに関する詳細情報を収集する
これらの詳細を収集するには、 jqウェブサイトからダウンロードできる jq ツール を使用する必要があります。
クライアントメタデータから作成された接続
次のクエリは、特定のクライアントIPアドレスから作成された接続の数を表示します。属性 sourceClient を使用して、正確なソースVPCプライベートIPアドレスを収集できるようになりました。
grep '"c":"NETWORK"' mongod.log | jq -c '.attr.sourceClient' | grep -v null | sort | uniq -c
1 "172.31.36.2:32958" 1 "172.31.36.2:52904" 1 "172.31.36.2:52908" 1 "172.31.36.2:52910" 1 "172.31.36.2:52918"
クラスターに接続するためにアプリケーションで使用されるドライバー
次のクエリは、各ドライバーによって作成された接続の数を示します。これは、カスタマーがアプリケーションごとに異なるドライバーを使用する可能性があるシナリオで役立ちます。
more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.driver.name' | grep -v null | sort | uniq -c | sort -rn
56447 mongo-go-driver 21633 mongo-java-driver|sync 75 mongo-java-driver|sync|Airbyte 4 nodejs|Mongoose
接続数とドライバーの詳細をより詳細に分析するには、次のPythonスクリプトを使用できます。このスクリプトは、ドライバー名とバージョンの詳細とともに、作成および終了した接続の数に関する包括的な情報を提供します。
import json import sys def process_log_file(json_file_path): # Dictionary to store the filtered data filtered_data = {} with open(json_file_path, "r") as json_file: # Read the file line by line for line in json_file: # Parse each line as a separate JSON object data = json.loads(line) if 'msg' in data and data['msg'] == 'client metadata': # Extract the relevant data from the JSON object drivername = data['attr']['doc']['driver']['name'] driverversion = data['attr']['doc']['driver']['version'] connectionid = data['ctx'] # Create a unique key for the driver based on name and version driver_key = (drivername, driverversion) # Add the connection ID to the driver's set of connections if driver_key not in filtered_data: filtered_data[driver_key] = {'connections': set(), 'opencount': 0, 'closedcount': 0} filtered_data[driver_key]['connections'].add(connectionid) filtered_data[driver_key]['opencount'] += 1 if 'msg' in data and data['msg'] == 'Connection ended': connectionid = data['ctx'] # Check if the connection ID exists in any driver's connections for driver_data in filtered_data.values(): if connectionid in driver_data['connections']: driver_data['closedcount'] += 1 driver_data['connections'].remove(connectionid) # Print the filtered data for each driver for driver_key, driver_data in filtered_data.items(): print('Driver:', driver_key) print('Connection Opened:', driver_data['opencount']) print('Connection Closed:', driver_data['closedcount']) if __name__ == '__main__': # Check if a JSON file argument is provided if len(sys.argv) < 2: print("Please provide the path to a JSON file as an argument.") sys.exit(1) # Extract the JSON file path from the command-line arguments json_file_path = sys.argv[1] # Process the log file process_log_file(json_file_path)
Driver: ('mongo-go-driver', 'v1.12.0-cloud') Connection Opened: 14368 Connection Closed: 14362 Driver: ('mongo-go-driver', 'v1.12.1') Connection Opened: 42056 Connection Closed: 41958 Driver: ('mongo-java-driver|sync', '4.11.1') Connection Opened: 18012 Connection Closed: 17987 Driver: ('mongo-java-driver|sync', '4.8.2') Connection Opened: 3621 Connection Closed: 3610 Driver: ('nodejs|Mongoose', '4.17.1|6.12.0') Connection Opened: 3 Connection Closed: 1 Driver: ('mongo-go-driver', 'v1.13.0') Connection Opened: 23 Connection Closed: 20 Driver: ('mongo-java-driver|sync|Airbyte', '4.11.0') Connection Opened: 75 Connection Closed: 75 Driver: ('nodejs|Mongoose', '4.17.2|6.13.0') Connection Opened: 1 Connection Closed: 0
クラスターに接続するためにクライアントアプリケーションが使用するアプリケーション名
クラスターに接続するさまざまなアプリケーションを指定するために、接続文字列にアプリケーション名を含めることを提案できます。 appName を使用すると、どのアプリケーションが将来クラスターへの多くの接続を作成しているかを特定できます。接続文字列で appName を使用する方法の詳細については、ドキュメントの「 その他の構成 」セクションを参照してください。さらに、db.currentOp().appname コマンドを使用して、アプリケーション名に関連付けられている現在の操作を確認することもできます。次のクエリは、特定のアプリケーションによって作成された接続の数を含む appName の詳細を提供します。
more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.application.name' | grep -v null | sort | uniq -c | sort -rn
10809 niyo-*******-api 8616 MongoDB CPS Module v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f) 7203 niyo-ns***** 5752 MongoDB Automation Agent v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f) 3601 *****-auth-service
提供された詳細は、接続数が多い特定の要因を特定するのに役立ちます。ソース クライアントIP、クライアントメタデータ、ドライバーの使用状況、およびアプリケーション名を分析することで、接続増加に関連する要素を特定でき、調査が必要な領域を判断できます。この ターゲットを絞ったアプローチ により、関連性のない他の要因は無視され、強調表示された情報に基づく問題への対処に集中できるようになり、最終的には軽減プロセスが効率化され、クラスターのパフォーマンスが向上します。
マルチリージョン プライベートエンドポイント
プライベートエンドポイントは、クラスターがまたがる各リージョン内にプライベートエンドポイントが設定されているノードがある場合にのみ、 マルチリージョンクラスター で 使用できます 。マルチリージョンプライベートエンドポイントの構成の詳細については、マルチリージョン シャーディングされたクラスターのリージョン別プライベートエンドポイント を参照してください。
マルチリージョンクラスターの接続文字列のインデックス作成
新しいリージョンのプライベートエンドポイントを構成し、そのリージョンにクラスター ノードを配置した後、プライベートエンドポイントを使用してクラスターに接続すると、次のエラーが表示される場合があります。
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
このエラーは、接続文字列のインデックスが自動的に変更され、その後クライアントが再起動された場合に発生し、SRV DNS ルックアップが発生します。 マルチリージョンクラスターのプライベートエンドポイント接続文字列は 0 のインデックスを使用します。 接続文字列で別のインデックスが使用されている場合、 MongoDB は接続文字列を自動的に更新し、 0インデックスを使用します。
例、リージョンに 2 つのプライベートエンドポイントを構成できます。最初のプライベートエンドポイントを削除すると、接続文字列は1 のインデックスを使用し、次のようになります。
mongodb+srv://abc-pl-1.xxxxx.mongodb.net/
次に、クラスター内の新しいリージョンにプライベートエンドポイントを構成し、その後そのリージョンにクラスター ノードを追加するとします。クラスターに複数のリージョンが含まれ、接続文字列が0 のインデックスを使用するように更新されます。
mongodb+srv://abc-pl-0.xxxxx.mongodb.net/
クライアントの次回の再起動後に接続の問題が発生しないようにするには、 0 からインデックス作成された プライベートエンドポイント接続文字列を使用してクラスターに接続していることを確認してください。 クラスターの変更が完了すると、Atlas UIまたはAPIから更新されたプライベートエンドポイント接続文字列にアクセスできます。
配置したアプリケーションからの接続をテストする
ツール nslookup と telnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。
Atlas クラスターの接続の詳細を取得します。
-type=SRV フラグを指定して nslookup を実行し、クラスター内の各ノードに関連付けられているポート番号を取得します。
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
各プライベートエンドポイントのステータスを表示するには:
AtlasGoDatabase & Network AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
[ データベースとネットワーク アクセス ] ページが表示されます。
プライベートエンドポイント接続の状態を判断するには、次のステータスを参照してください。
Atlas Endpoint Service Status
ステータス | 説明 |
|---|---|
プライベートリンクの作成 | Atlas はロード バランサーと VNet リソースを作成しています。 |
失敗 | システム障害が発生しました。 |
利用可能 | Atlas はロード バランサーと Azure Private Link Service を作成しました。 Azure Private Link Service は接続リクエストを受け入れる準備ができています。 |
削除 | Atlas は Azure Private Link Service を削除しています。 |
Endpoint Status
ステータス | 説明 |
|---|---|
未構成 | Atlas はロード バランサーと Azure Private Link Service を作成しましたが、プライベートエンドポイントはまだ作成していません。 Editをクリックし、ウィザードを完了してプライベートエンドポイントを作成します。 |
開始 | Atlas はまだプライベートエンドポイントへの接続を受け入れていません。 |
失敗 | Azureは Atlas VNet リソースと VNet 内のプライベートエンドポイント間の接続を確立できませんでした。 Editをクリックし、提供した情報が正しいことを確認し、プライベートエンドポイントを再度作成します。 |
利用可能 | Atlas VNet リソースは、VNet 内のプライベートエンドポイントに接続されます。 Azure Private Link を使用して、このリージョンの Atlas クラスターに接続できます。 |
削除 | Atlas は、Azure Private Link Service からプライベートエンドポイント接続を削除しています。 |
DNS ルックアップによるプライベート IP の取得
VNet 内のクライアントは、これらのプライベートエンドポイントを認識する接続文字列を使用して Atlas クラスターに接続する際、プライベートエンドポイントのネットワーク インターフェイス経由で Atlas VNet 内の Private Link Service への接続を確立しようとします。Private Link Service では、Azure Standard Load Balancer から、該当リージョンに配置した Atlas クラスター ノードへトラフィックが送信されます。クライアントで使用される DNS 解決メカニズムでは、ホスト名はネットワーク インターフェイスのプライベート IP アドレスに変換されます。ドライバーは接続文字列形式のホスト名のみを認識し、クラスターのレプリカセット内の各ノードにつき 1 つのポートでリッスンします。
DNS シードリストのプライベートエンドポイント対応接続文字列の SRV レコード
次の例では、Azure Private Link が有効化されている単一リージョン クラスターの SRV レコードで、pl-0-eastus2.uzgh6.mongodb.net に 3 つの一意なポートが定義されています。
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1024 pl-0-eastus2.uzgh6.mongodb.net. _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1025 pl-0-eastus2.uzgh6.mongodb.net. _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1026 pl-0-eastus2.uzgh6.mongodb.net.
前の例では、次のようになります。
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.netは、接続文字列が参照する SRV レコードです。pl-0-eastus2.uzgh6.mongodb.netは、 Azure Private Link を構成済みのあるリージョンに属する 1 つの Atlas クラスター内の各ノードのホスト名です。1024、1025、1026は、 Azure Private Link を有効化したリージョンに属する各 Atlasレプリカセットのノードのロードバランサーに Atlas が割り当てる一意のポートです。 Atlasレプリカセット内のどのノードにも同じホスト名でアクセスでき、個々のノードはロードバランサーによって固有のポート別に解決されます。
プライベートエンドポイント対応接続文字列と SRV レコードでのホスト名 DNS 解決
SRVレコードと標準接続文字列のホスト名は DNSA レコードであり、プライベートエンドポイントのネットワーク インターフェースのプライベートIPアドレスに変換されます。
以下に例示されているのは、SRV レコードと標準接続文字列のホスト名向けの DNS ルックアップです。
nslookup pl-0-eastus2.uzgh6.mongodb.net Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: pl-0-eastus2.uzgh6.mongodb.net Address: 10.0.0.4
マルチリージョン プライベートエンドポイント
プライベートエンドポイントは、クラスターがまたがる各リージョン内にプライベートエンドポイントが設定されているノードがある場合にのみ、 マルチリージョンクラスター で 使用できます 。 マルチリージョンプライベートエンドポイントの構成の詳細については、「 マルチリージョンのシャーディングされたクラスターのリージョン別プライベートエンドポイント 」を参照してください。
マルチリージョンクラスターの接続文字列のインデックス作成
新しいリージョンのプライベートエンドポイントを構成し、そのリージョンにクラスター ノードを配置した後、プライベートエンドポイントを使用してクラスターに接続すると、次のエラーが表示される場合があります。
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
このエラーは、接続文字列のインデックスが自動的に変更され、その後クライアントが再起動された場合に発生し、SRV DNS ルックアップが発生します。 マルチリージョンクラスターのプライベートエンドポイント接続文字列は 0 のインデックスを使用します。 接続文字列で別のインデックスが使用されている場合、 MongoDB は接続文字列を自動的に更新し、 0インデックスを使用します。
例、リージョンに 2 つのプライベートエンドポイントを構成できます。最初のプライベートエンドポイントを削除すると、接続文字列は1 のインデックスを使用し、次のようになります。
mongodb+srv://abc-pl-1.xxxxx.mongodb.net/
次に、クラスター内の新しいリージョンにプライベートエンドポイントを構成し、その後そのリージョンにクラスター ノードを追加するとします。クラスターに複数のリージョンが含まれ、接続文字列が0 のインデックスを使用するように更新されます。
mongodb+srv://abc-pl-0.xxxxx.mongodb.net/
クライアントの次回の再起動後に接続の問題が発生しないようにするには、 0 からインデックス作成された プライベートエンドポイント接続文字列を使用してクラスターに接続していることを確認してください。 クラスターの変更が完了すると、Atlas UIまたはAPIから更新されたプライベートエンドポイント接続文字列にアクセスできます。
配置したアプリケーションからの接続をテストする
ツール nslookup と telnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。
Atlas クラスターの接続の詳細を取得します。
-type=SRV フラグを指定して nslookup を実行し、クラスター内の各ノードに関連付けられているポート番号を取得します。
nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net. _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
各プライベートエンドポイントのステータスを表示するには:
AtlasGoDatabase & Network AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
[ データベースとネットワーク アクセス ] ページが表示されます。
プライベートエンドポイント接続の状態を判断するには、次のステータスを参照してください。
Atlas Endpoint Service Status
ステータス | 説明 |
|---|---|
プライベートリンクの作成 | Atlas はネットワーク ロード バランサーとVPCリソースを作成しています。 |
失敗 | システム障害が発生しました。 |
利用可能 | Atlas はネットワーク ロード バランサーとVPCエンドポイント サービスを作成しました。 プライベートエンドポイント サービスは接続リクエストを受信する準備ができています。 |
削除 | Atlas はプライベートエンドポイント サービスを削除しています。 |
Endpoint Status
ステータス | 説明 |
|---|---|
開始 | Atlas はまだプライベートエンドポイントに接続されておらず、エンドポイントをまだ受け入れていません。 |
ユーザーの待機 | Atlas 上のVPCリソースを使用する準備が整いました。 shell スクリプトを実行して、 VPC内でエンドポイントを設定する必要があります。 |
確認済み | Atlas はVPC内のエンドポイントを確認しましたが、 Google Cloud Platform VPCのプライベートエンドポイントはまだ受け入れていません。Endpoint Status が |
利用可能 | Atlas VPCリソースは、 Google Cloud Platform VPCのプライベートエンドポイントに接続されます。 Atlas はエンドポイントを受け入れました。 GCP Private Service Connect を使用して、このリージョンの Atlas クラスターに接続できます。 |
アクティブ | Atlas はVPCリソースを使用する準備ができています。 Atlas はエンドポイントを受け入れました。 VM はプライベート サービス接続に割り当てられます。 |
失敗 | Google Cloud Platformで、 Atlas VPCリソースとGoogle Cloud Platform VPCのプライベートエンドポイントの間の接続を確立できませんでした。 Editをクリックし、提供した情報が正しいことを確認し、プライベートエンドポイントを再度作成します。 |
削除 | Atlas のリージョンからプライベートエンドポイントを手動で削除しました。 リソースを削除するには、 Google Cloud Platformのプライベートエンドポイントも削除する必要があります。 リージョン グループの保留中の削除。 |
マルチリージョン プライベートエンドポイント
プライベートエンドポイントは、クラスターがまたがる各リージョン内にプライベートエンドポイントが設定されているノードがある場合にのみ、 マルチリージョンクラスター で 使用できます 。 マルチリージョンプライベートエンドポイントの構成の詳細については、「 マルチリージョンのシャーディングされたクラスターのリージョン別プライベートエンドポイント 」を参照してください。
マルチリージョンクラスターの接続文字列のインデックス作成
新しいリージョンのプライベートエンドポイントを構成し、そのリージョンにクラスター ノードを配置した後、プライベートエンドポイントを使用してクラスターに接続すると、次のエラーが表示される場合があります。
DNSHostNotFound: Failed to look up service "<MongoDB service name>"
このエラーは、接続文字列のインデックスが自動的に変更され、その後クライアントが再起動された場合に発生し、SRV DNS ルックアップが発生します。 マルチリージョンクラスターのプライベートエンドポイント接続文字列は 0 のインデックスを使用します。 接続文字列で別のインデックスが使用されている場合、 MongoDB は接続文字列を自動的に更新し、 0インデックスを使用します。
例、リージョンに 2 つのプライベートエンドポイントを構成できます。最初のプライベートエンドポイントを削除すると、接続文字列は1 のインデックスを使用し、次のようになります。
mongodb+srv://abc-pl-1.xxxxx.mongodb.net/
次に、クラスター内の新しいリージョンにプライベートエンドポイントを構成し、その後そのリージョンにクラスター ノードを追加するとします。クラスターに複数のリージョンが含まれ、接続文字列が0 のインデックスを使用するように更新されます。
mongodb+srv://abc-pl-0.xxxxx.mongodb.net/
クライアントの次回の再起動後に接続の問題が発生しないようにするには、 0 からインデックス作成された プライベートエンドポイント接続文字列を使用してクラスターに接続していることを確認してください。 クラスターの変更が完了すると、Atlas UIまたはAPIから更新されたプライベートエンドポイント接続文字列にアクセスできます。
配置したアプリケーションからの接続をテストする
ツール nslookup と telnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。
Atlas クラスターの接続の詳細を取得します。
-type=SRV フラグを指定して nslookup を実行し、クラスター内の各ノードに関連付けられているポート番号を取得します。
nslookup -debug -type=SRV _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net
Server: 8.8.8.8 Address: 8.8.8.8#53 ------------ QUESTIONS: _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net, type = SRV, class = IN ANSWERS: -> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-000-us-central1-gcp.test.mongodb.net. ttl = 60 -> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-001-us-central1-gcp.test.mongodb.net. ttl = 60 -> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-002-us-central1-gcp.test.mongodb.net. ttl = 60 AUTHORITY RECORDS: ADDITIONAL RECORDS: ------------ Non-authoritative answer: _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-000-us-central1-gcp.test.mongodb.net. _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-001-us-central1-gcp.test.mongodb.net. _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-002-us-central1-gcp.test.mongodb.net.