Docs Menu
Docs Home
/ /

プライベートエンドポイント接続の問題のトラブルシューティング

このページでは、一般的なプライベートエンドポイント接続の問題と考えられる解決策について説明します。

1

各プライベートエンドポイントのステータスを表示するには:

  1. Atlasで、プロジェクトのGo Database & Network Access{0 ページに します。

    1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

    2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

    3. サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。

      [ データベースとネットワーク アクセス] ページが表示されます。

  2. [Private Endpoint] タブをクリックします。

  3. ステータスを確認します。

    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 をクリックし、提供した情報が正しいことを確認し、プライベートエンドポイントを再度作成します。

重要:インターフェイスエンドポイントが失敗すると、次のメッセージが表示される場合があります。

No dns entries found for endpoint vpce-<guid>,
your endpoint must be provisioned in at least one subnet.
Click "Edit" to fix the problem.

このメッセージは、AWS PrivateLink 接続を作成したときにサブネットを指定しなかったことを示しています。 このエラーを解決するには、以下の手順を行います。

  1. [Edit] をクリックします。

  2. [Back] をクリックします。

  3. 少なくとも 1 つのサブネットを指定します。

  4. 残りの手順に従って、AWS PrivateLink 接続を作成します。

利用可能

Atlas VPCリソースはVPC内のインターフェイスエンドポイントに接続されます。AWS PrivateLink を使用して、このリージョンの Atlas クラスターに接続できます。

削除

Atlas は、プライベートエンドポイント サービスからインターフェイスエンドポイントを削除しています。

2
  1. AWS PrivateLink を使用して Atlas クラスターに接続する必要があるリソースごとに、リソースのセキュリティグループは、すべてのポートで インターフェイスエンドポイントの プライベートIPアドレスへのアウトバウンド トラフィックを許可する必要があります(1024 -65535 )。

    詳細については、「 セキュリティ グループへのルールの追加 」を参照してください。

  2. インターフェイスエンドポイントのセキュリティグループは、 AWS PrivateLink を使用して Atlas クラスターに接続する必要がある各リソースからのすべてのポートでインバウンド トラフィックを許可する必要があります。

    インスタンスの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 クラスター内の各ノードのホスト名です。

  • 102410251026 は、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}}

注意

この機能は徐々に廃止されています。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から更新されたプライベートエンドポイント接続文字列にアクセスできます。

ツール nslookuptelnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。

1

-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.
2

アプリケーション内のポートの 1 つ(例、上記の例例では 、10261024、または 1025)を使用して、次の telnet コマンドを実行して接続をテストします。

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

各プライベートエンドポイントのステータスを表示するには:

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。

[ データベースとネットワーク アクセス ] ページが表示されます。

2
3

Atlas Endpoint Service StatusフィールドとEndpoint Statusフィールドには、各プライベートエンドポイントのステータスが表示されます。

プライベートエンドポイント接続の状態を判断するには、次のステータスを参照してください。

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 からプライベートエンドポイント接続を削除しています。

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 クラスター内の各ノードのホスト名です。

  • 102410251026 は、 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から更新されたプライベートエンドポイント接続文字列にアクセスできます。

ツール nslookuptelnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。

1

-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.
2

アプリケーション内のポートの 1 つ(例、上記の例例では 、10261024、または 1025)を使用して、次の telnet コマンドを実行して接続をテストします。

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

各プライベートエンドポイントのステータスを表示するには:

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。

[ データベースとネットワーク アクセス ] ページが表示されます。

2
3

Atlas Endpoint Service StatusフィールドとEndpoint Statusフィールドには、各プライベートエンドポイントのステータスが表示されます。

プライベートエンドポイント接続の状態を判断するには、次のステータスを参照してください。

Atlas Endpoint Service Status

ステータス
説明

プライベートリンクの作成

Atlas はネットワーク ロード バランサーとVPCリソースを作成しています。

失敗

システム障害が発生しました。

利用可能

Atlas はネットワーク ロード バランサーとVPCエンドポイント サービスを作成しました。 プライベートエンドポイント サービスは接続リクエストを受信する準備ができています。

削除

Atlas はプライベートエンドポイント サービスを削除しています。

Endpoint Status

ステータス
説明

開始

Atlas はまだプライベートエンドポイントに接続されておらず、エンドポイントをまだ受け入れていません。

ユーザーの待機

Atlas 上のVPCリソースを使用する準備が整いました。 shell スクリプトを実行して、 VPC内でエンドポイントを設定する必要があります。

確認済み

Atlas はVPC内のエンドポイントを確認しましたが、 Google Cloud Platform VPCのプライベートエンドポイントはまだ受け入れていません。Endpoint StatusAvailable になるまでに数分かかる場合があります。

利用可能

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から更新されたプライベートエンドポイント接続文字列にアクセスできます。

ツール nslookuptelnet を使用して、アプリケーションから Atlas のプライベートエンドポイントへの接続をテストできます。

1

-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.
2

アプリケーション環境から、リストされているポートの 1 つ(上記の例例では 、27017)を使用して、次の telnet コマンドを実行して接続をテストします。

telnet pl-0-<xyz>.mongodb.net 27017

戻る

管理と接続

項目一覧