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

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

最終更新日:Jul 18, 2026

ApsaraDB for MongoDB のシャードクラスターインスタンスは、Mongos、Shard、ConfigServer 各コンポーネント向けに個別のエンドポイントを提供します。また、高可用性を実現する ConnectionStringURI および ConnectionStringURI SRV アドレスも利用可能です。

エンドポイントの取得

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

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

エンドポイントの詳細

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

ネットワークタイプ

説明

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

  • VPC:VPC は分離されたネットワークで、セキュリティとパフォーマンスが強化されています。デフォルトでは、ApsaraDB for MongoDB インスタンスは VPC エンドポイントを提供します。

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

パブリックネットワーク

パブリックネットワーク経由でのインスタンス接続にはセキュリティリスクがあります。デフォルトでは、ApsaraDB for MongoDB インスタンスはパブリックエンドポイントを提供しません。パブリックネットワーク経由で接続する必要がある場合は、手動でパブリックエンドポイントを申請できます。

エンドポイントタイプ

エンドポイントタイプ

説明

ConnectionStringURI SRV アドレス(推奨)

SRV レコードは DNS レコードタイプの一種で、接続文字列を簡素化し、クラスターメンバーの自動検出を可能にします。

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

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

  • SRV アドレスはクラウドディスク搭載のインスタンスでのみサポートされます。

  • VPC 内のプライベート SRV アドレスは、最大 20 個の Mongos ノードに関連付けられます。 VPC 内の DNS 解決プロトコルの制限により、Mongos ノード数が 20 個を超える場合、追加ノードへの負荷分散は行われません。この制限はパブリック SRV アドレスには適用されません。

  • 本番環境のアプリケーションでは、ConnectionStringURI SRV アドレスを使用してデータベースに接続することを推奨します。これにより、クライアントはインスタンスの複数ノード間でリクエストを自動的に分散(負荷分散)します。ノード障害が発生した場合、クライアントは自動的にフェールオーバーを行い、正常なノードにリクエストを送信します。

  • 古いバージョンのドライバーでは、SRV アドレスやノードの自動検出がサポートされていない場合があります。例:

    • pymongo 3.9.0 より前のバージョン

    • mongo-java-driver 3.10.0 より前のバージョン

    • mongodb-go-driver 1.1.0 より前のバージョン

    • MongoDB Node.js ドライバー 3.3.0 より前のバージョン

    • mongo-cxx-driver 3.8 より前のバージョン

ConnectionStringURI アドレス

ApsaraDB for MongoDB は、Mongos コンポーネントおよび Shard コンポーネント向けに ConnectionStringURI アドレスを提供します。

本番環境では、シングルノード接続文字列ではなく ConnectionStringURI アドレスを使用してください。これにより、クライアントは複数の Mongos ノード間でリクエストを自動的に分散(負荷分散)し、いずれかのノードが利用不可になった場合には、正常な Mongos ノードに自動的にフェールオーバーします。

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

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

  • シャードクラスターインスタンスに Mongos ノードを追加または削除した後は、これらの変更を反映するために接続文字列を更新する必要があります。

Mongos アドレス

Mongos コンポーネントのエンドポイント(プライマリノードのエンドポイントを含む)です。

説明

日常的なテストでは、単一の Mongos ノードに接続するだけで十分です。

Shard アドレス

Shard コンポーネントのエンドポイント(プライマリノード、セカンダリノード、読み取り専用ノードのエンドポイントを含む)です。

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

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

ConfigServer アドレス

ConfigServer コンポーネントのエンドポイント(プライマリノードおよびセカンダリノードのエンドポイントを含む)です。

説明
  • デフォルトでは、コンソールに表示されるのは Mongos のエンドポイントのみです。Shard および 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 オプションがデフォルトで有効になります。SSL 暗号化を使用しない場合は、接続文字列に ssl=false パラメーターを追加します。省略可能なパラメーターの詳細については、MongoDB 公式ドキュメントをご参照ください。

使用例:

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

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

ConnectionStringURI アドレス

ConnectionStringURI アドレスは、Mongos コンポーネントおよび Shard コンポーネントの両方で利用可能です。

Mongos

フォーマット:

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

パラメーター

説明

<username>

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

<password>

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

<host>

Mongos ノードのDomain Informationです。

<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

Shard

Shard コンポーネントの ConnectionStringURI アドレスには、レプリカセット内のすべてのノードのエンドポイントが含まれており、高可用性を実現します。本番環境ではこのアドレスを使用してください。

重要

本番環境では、常に ConnectionStringURI アドレスを使用して接続してください。これにより、クライアントは常に現在のプライマリノードを検出して接続でき、フェールオーバー後に読み書きの問題が発生することを防ぎます。

フォーマット:

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

パラメーター:

パラメーター

説明

<username>

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

<password>

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

<host>

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

<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:読み取り専用ノードからの読み取りを優先します。

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 ノードのDomain Informationです。

<port>

Mongos ノードの ポート

使用例:

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

Shard アドレス

フォーマット:

<host>:<port>

パラメーター:

パラメーター

説明

<host>

Shard ノードのDomain Informationです。

<port>

Shard ノードのポートです。

使用例:

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

ConfigServer アドレス

フォーマット:

<host>:<port>

パラメーター:

パラメーター

説明

<host>

ConfigServer ノードのDomain Informationです。

<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 にもリクエストを送信し、そのステータスをモニターします。