すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:シャードクラスターインスタンスへの接続

最終更新日:Nov 09, 2025

ApsaraDB for MongoDB のシャードクラスターインスタンスは、Mongos、シャード、および ConfigServer コンポーネントに個別のエンドポイントを提供します。また、アプリケーション接続用に高可用性の ConnectionStringURI および ConnectionStringURI SRV アドレスも提供します。このトピックでは、これらのエンドポイントの取得方法と接続手順について説明します。

データベースエンドポイントの取得

  1. ApsaraDB for MongoDB シャードクラスターインスタンス ページに移動します。上部のナビゲーションバーで、リソースグループとリージョンを選択します。次に、ターゲットインスタンスの ID をクリックします。

  2. インスタンス詳細ページの左側のナビゲーションウィンドウで、データベース接続 をクリックします。次に、ターゲットノードのエンドポイントを取得します。

エンドポイントの説明

エンドポイントのネットワークタイプ

ネットワークタイプ

説明

プライベートネットワーク

  • Virtual Private Cloud (VPC): VPC は、より高いセキュリティとパフォーマンスを提供する分離されたネットワークです。ApsaraDB for MongoDB インスタンスは、デフォルトで VPC エンドポイントを提供します。

  • クラシックネットワーク: 保護を Alibaba Cloud サービスのセキュリティグループまたはホワイトリストポリシーのみに依存する、非分離型のネットワークです。新しいインスタンスはクラシックネットワークをサポートしなくなりました。詳細については、「[注意] 新しい ApsaraDB for MongoDB インスタンスはクラシックネットワークをサポートしなくなりました」をご参照ください。

パブリックネットワーク

インターネット経由でのインスタンスへの接続は特定のセキュリティリスクをもたらすため、ApsaraDB for MongoDB インスタンスはデフォルトではパブリックエンドポイントを提供しません。インターネット経由で接続するには、手動でパブリックエンドポイントを申請できます。

エンドポイントタイプ

エンドポイントタイプ

説明

ConnectionStringURI SRV アドレス (推奨)

MongoDB では、SRV は MongoDB の接続文字列を簡素化し、クラスターメンバーの自動検出をサポートする DNS レコードの一種です。

シャードクラスターインスタンスで Mongos ノードを追加または削除する場合、SRV アドレスを使用すると、インスタンスとシームレスに対話できます。これにより、アプリケーションの設計とメンテナンスが簡素化されます。

重要
  • デフォルトでは、コンソールに SRV アドレスは表示されません。使用するには、[データベース接続] ページで [プライベート SRV アドレスの申請] または [パブリック SRV アドレスの申請] をクリックします。

  • パブリック SRV アドレスを申請する前に、Mongos ノードのパブリックエンドポイントを有効にする必要があります。パブリック SRV アドレスを使用して MongoDB インスタンスに接続すると、クライアントはパブリックエンドポイントが有効になっている Mongos ノードにリクエストを自動的に送信します。

  • SRV アドレスは、クラウドディスクを使用するインスタンスでのみサポートされます。

  • VPC 内のプライベート SRV アドレスは、最大 20 個の Mongos ノードに関連付けることができます。VPC 内の DNS 解析プロトコルの制限により、Mongos ノードが 20 個を超えると、超過したノードはリクエスト負荷を共有できません。パブリック SRV アドレスにはこの制限はありません。

  • 本番環境では、ConnectionStringURI SRV アドレスを使用してデータベースに接続します。クライアントは、インスタンスの複数のノードにリクエストを自動的に送信して、負荷分散を実現します。ノードに障害が発生した場合、クライアントは自動的にフェールオーバーを実行し、正常なノードにリクエストを送信します。ノードを追加または削除する場合、クラスターとシームレスに対話できます。これにより、アプリケーションの設計とメンテナンスが簡素化されます。

  • 古いバージョンのドライバーは、SRV アドレスや自動ノード検出をサポートしていません。例は次のとおりです。

    • 3.9.0 より前の pymongo。

    • 3.10.0 より前の mongo-java-driver。

    • 1.1.0 より前の mongodb-go-driver。

    • 3.3.0 より前の mongodb node.js。

    • 3.8 より前の mongo-cxx-driver。

ConnectionStringURI アドレス

ApsaraDB for MongoDB は、Mongos およびシャードコンポーネント用の ConnectionStringURI アドレスを提供します。

単一ノードの接続文字列と比較して、本番環境のアプリケーションを ConnectionStringURI を使用してデータベースに接続する方が優れています。クライアントは、負荷分散のために複数の Mongos ノードにリクエストを自動的に送信します。Mongos ノードに障害が発生した場合、クライアントは自動的にフェールオーバーを実行し、正常な Mongos ノードにリクエストを送信します。

説明
  • デフォルトでは、コンソールには Mongos の ConnectionStringURI アドレスのみが表示されます。シャードの ConnectionStringURI アドレスを取得するには、対応するノードのエンドポイントを申請する必要があります。

  • readPreference および readPreferenceTags パラメーターが設定されていない場合、読み取りリクエストはプライマリノードに送信されます。

  • シャードクラスターインスタンスで Mongos ノードを追加または削除する場合、対応するノードの接続情報を追加または削除するために、この接続文字列を変更する必要があります。

Mongos アドレス

プライマリノードのエンドポイントを含む、Mongos コンポーネントのエンドpoint。

説明

日常のテストでは、Mongos コンポーネントのいずれかのノードに接続するだけで済みます。

シャードアドレス

プライマリ、セカンダリ、および読み取り専用ノードのエンドポイントを含む、シャードコンポーネントのエンドポイント。

説明
  • デフォルトでは、コンソールには Mongos のエンドポイントのみが表示されます。シャードおよび ConfigServer のエンドポイントを取得するには、対応するノードのエンドポイントを申請する必要があります。

  • シャードコンポーネントに読み取り専用ノードが含まれている場合にのみ、シャードコンポーネントの読み取り専用ノードのエンドポイントを表示できます。

ConfigServer アドレス

プライマリノードとセカンダリノードのエンドポイントを含む、ConfigServer コンポーネントのエンドポイント。

説明
  • デフォルトでは、コンソールには Mongos のエンドポイントのみが表示されます。シャードおよび ConfigServer のエンドポイントを取得するには、対応するノードのエンドポイントを申請する必要があります。

  • ConfigServer エンドポイントは、ローカルディスクを使用するシャードクラスターインスタンスに対してのみ申請できます。

各エンドポイントタイプのフォーマット、パラメーター、および例は次のとおりです。

ConnectionStringURI SRV アドレス

フォーマット:

mongodb+srv://<username>:<password>@<srv-host>/<database>?[authSource=<authenticationDatabase>]<other_options>

パラメーター:

パラメーター

説明

mongodb+srv://

接続文字列のプレフィックスです。サービス検出に DNS SRV レコードが使用されることを示します。

<username>

データベースアカウントの名前です。デフォルト値は root です。

<password>

データベースアカウントのパスワードです。

<srv-host>

ホスト名です。

<database>

アクセスするデータベースの名前です。デフォルト値は admin です。

authSource=<authenticationDatabase> (オプション)

このパラメーターは、データベースアカウントが属するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。

説明

ApsaraDB for MongoDB の SRV 接続文字列の TXT レコードは authSource=admin を指定しており、これは <database> の認証プロパティを上書きします。したがって、認証データベースを変更するには、<database> パラメーターを変更するのではなく、手動で authSource=<authenticationDatabase> を指定する必要があります。詳細については、「MongoDB の公式ドキュメント」をご参照ください。

<other_options>

その他のオプションパラメーターです。

説明

SRV 接続の SSL オプションは、デフォルトで true です。SSL 暗号化接続を使用する必要がない場合は、接続文字列に ssl=false パラメーターを追加します。オプションパラメーターの詳細については、「MongoDB の公式ドキュメント」をご参照ください。

例:

データベースアカウントは test で、admin データベースにあります。

mongodb+srv://test:****@dds-2zef4c23****-srv.mongodb.pre.nosql.aliyuncs.com/admin?ssl=false

ConnectionStringURI アドレス

次のセクションでは、Mongos およびシャードコンポーネントの ConnectionStringURI アドレスについて説明します。

Mongos

重要

本番環境では、ConnectionStringURI を使用してアプリケーションをデータベースに接続します。クライアントは、負荷分散のために複数の Mongos ノードにリクエストを自動的に送信します。Mongos ノードに障害が発生した場合、クライアントは自動的にフェールオーバーを実行し、正常な Mongos ノードにリクエストを送信します。

フォーマット:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>[?&authSource=<authenticationDatabase>]

パラメーター

説明

<username>

データベースアカウントの名前です。デフォルト値は root です。

<password>

データベースアカウントのパスワードです。

<host>

Mongos コンポーネント内のノードの [ドメイン名] です。

<port>

Mongos コンポーネント内のノードの [ポート] です。

<database>

アクセスするデータベースの名前です。デフォルト値は admin です。

authSource=<authenticationDatabase> (オプション)

このパラメーターは、データベースアカウントが属するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。このパラメーターを設定しない場合、<database> が認証データベースとして使用されます。

例:

データベースアカウント test は admin データベースに属します。

mongodb://test:****@s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717,s-bp1773180e38****.mongodb.rds.aliyuncs.com:3717/admin

シャード

シャードコンポーネントの ConnectionStringURI アドレスは、負荷分散を提供し、シャード内のすべてのノードのアドレスを含む高可用性エンドポイントです。このエンドポイントに接続して、データベースに対する読み取りおよび書き込み操作を実行できます。本番環境では、このアドレスを使用してアプリケーションをインスタンスに接続することをお勧めします。

重要

本番環境では、ConnectionStringURI アドレスを使用してアプリケーションをインスタンスに接続します。これにより、クライアントは常にプライマリノードを見つけることができ、プライマリ/セカンダリのフェールオーバーがアプリケーションの読み取りおよび書き込み操作に影響を与えないことが保証されます。

フォーマット:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>[?&authSource=<authenticationDatabase>]

パラメーター:

パラメーター

説明

<username>

データベースアカウントの名前です。デフォルト値は root です。

<password>

データベースアカウントのパスワードです。

<host>

プライマリ、セカンダリ、および読み取り専用ノードの [ドメイン名] です。

<port>

プライマリ、セカンダリ、および読み取り専用ノードの [ポート] です。

<database>

アクセスするデータベースの名前です。デフォルト値は admin です。

authSource=<authenticationDatabase> (オプション)

このパラメーターは、データベースアカウントが属するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。このパラメーターを設定しない場合、<database> が認証データベースとして使用されます。

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (オプション)

このパラメーターは、読み書き分離と負荷分散を実装します。書き込みリクエストをプライマリノードに送信し、読み取りリクエストをパラメーターで指定されたノードに送信します。有効な値:

  • readPreference=primary: 読み取りリクエストはプライマリノードにのみ送信されます。

  • readPreference=primaryPreferred: 読み取りリクエストは優先的にプライマリノードに送信されます。プライマリノードに障害が発生した場合、読み取りリクエストはセカンダリノードと読み取り専用ノードに送信されます。

  • readPreference=secondary: 読み取りリクエストはセカンダリノードと読み取り専用ノードにのみ送信されます。セカンダリノードと読み取り専用ノードの両方に障害が発生した場合、読み取りリクエストは失敗し、プライマリノードには送信されません。

  • readPreference=secondaryPreferred: 読み取りリクエストは優先的にセカンダリノードと読み取り専用ノードに送信されます。セカンダリノードと読み取り専用ノードの両方に障害が発生した場合、このパラメーターは読み取りリクエストをプライマリノードに送信します。

説明

読み取りリクエストがセカンダリノードと読み取り専用ノードに送信される場合、負荷が不均等になることがあります。ノードをさらに指定するには、readPreferenceTags パラメーターを設定します。

readPreferenceTags=<readonly_Tags> (オプション)

このパラメーターは、指定されたタグに対応するノードに優先的に読み取りリクエストを送信します。通常、readPreference パラメーターと共に使用され、primary モードとは互換性がありません。<readonly_Tags> は、読み取り専用ノードのタグのキーと値のペアのリストです。次のタイプがサポートされています:

  • readPreferenceTags=role:electable: セカンダリノードからの読み取りを優先します。

    説明

    このオプションは、クラウドディスクを使用するインスタンスに対してのみ有効です。

  • readPreferenceTags=role:readonly: 読み取り専用ノードからの読み取りを優先します。

MongoDB インスタンスに readPreference および readPreferenceTags パラメーターを使用できます。さまざまなタグを組み合わせることで、さまざまなシナリオの要件を満たすことができます:

読み取りリクエストに対するプライマリノードの応答ポリシー

読み取りリクエストの送信先ノード

パラメーターの組み合わせ

読み取りリクエストが失敗した場合、プライマリノードに送信される

プライマリノードからの読み取りを優先

readPreference=primaryPreferred

セカンダリノードと読み取り専用ノードからの読み取りを優先

readPreference=secondaryPreferred

セカンダリノードからの読み取りを優先

説明

セカンダリノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。

readPreference=secondaryPreferred&readPreferenceTags=role:electable

読み取り専用ノードからの読み取りを優先

説明

読み取り専用ノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

読み取りリクエストが失敗した場合、プライマリノードに送信されない

セカンダリノードと読み取り専用ノードからのみ読み取る

readPreference=secondary

セカンダリノードからのみ読み取る

説明

セカンダリノードに障害が発生した場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:electable

読み取り専用ノードからのみ読み取る

説明

読み取り専用ノードに障害が発生した場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:readonly

例:

mongodb://test:****@d-bp1586cb62bf53b****.mongodb.rds.aliyuncs.com:3717,d-bp1586cb62bf53b****.mongodb.rds.aliyuncs.com:3717/admin

Mongos アドレス

フォーマット:

<host>:<port>

パラメーター:

パラメーター

説明

<host>

Mongos コンポーネント内のノードの [ドメイン名] です。

<port>

Mongos コンポーネント内のノードの [ポート] です。

例:

s-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717

シャードアドレス

フォーマット:

<host>:<port>

パラメーター:

パラメーター

説明

<host>

シャードコンポーネント内のノードの [ドメイン名] です。

<port>

シャードコンポーネント内のノードの [ポート] です。

例:

d-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717

ConfigServer アドレス

フォーマット:

<host>:<port>

パラメーター:

パラメーター

説明

<host>

ConfigServer コンポーネント内のノードの [ドメイン名] です。

<port>

ConfigServer コンポーネント内のノードの [ポート] です。

例:

cs-bp1c010266f6****.mongodb.rds.aliyuncs.com:3717

MongoDB データベースにログオンする

  1. 次の情報を取得します。

  2. 次のいずれかのメソッドを使用してデータベースにログオンします。

一般的な接続シナリオ

よくある質問

クライアントが接続文字列にないノードにリクエストを送信するのはなぜですか?

この動作は正常であり、サービスディスカバリと呼ばれる MongoDB クライアントのコア機能です。これは高可用性を確保するように設計されています。サービスディスカバリにより、クライアントは、プライマリノードがダウンした場合など、クラスターのトポロジーの変更に自動的に適応して、サービスの継続性を確保できます。単一のエンドポイントにのみリクエストを送信するには、接続文字列に directConnection=true を追加します。詳細については、「directConnection」をご参照ください。

例:

5 ノードのインスタンスが接続文字列 mongodb://root:xxx@dds-xxxxx1-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx2-pub.mongodb.rds.aliyuncs.com:3717/admin を使用する場合、クライアントは他の 2 つのノード dds-xxxxx3-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx4-pub.mongodb.rds.aliyuncs.com:3717 にもリクエストを送信し、それらのステータスをモニターします。