Atlas には複数の接続文字列が用意されています。これらの文字列により、パブリックとプライベートの両方のコンテキストからクラスターに接続できます。Atlas は常にクラスターにユニークな接続文字列を割り当てるため、2 つのクラスターがAtlasとの間でホスト名や接続文字列を共有することはありません。
アプリケーションが使用する接続文字列を識別するにはどうすればよいですか?
接続文字列の URI の構造は、文字列のタイプを示します。ピアリング接続またはプライベートエンドポイントを作成した場合、Atlas にはこれらのオプションが複数表示されます。
クラスターに複数の接続文字列があるのはなぜですか?
Atlas に接続するには、アプリケーションをクラスターと通信するための URI に向けます。Atlas は、複数のノードまたはホストを持つクラスターを作成します。各ノードは IP アドレスに解決される、独自のホスト名を持ちます。Atlas が接続する接続文字列と呼ばれる URI には、複数のホスト名が含まれる場合があります。許可された IP アドレスからクラスター ホストへの接続を受け入れるように、Atlas を設定します。
Atlas は、認証とTLS を通じてパブリック IP アドレスからの接続を保護します。プライベート IP アドレスに接続する場合は、以下を使用できます。
これらの機能はすべて、安全なネットワーク内の内部IPアドレスを介した通信を管理します。
Atlas は、安全なネットワークを使用する場合に複数の接続ストリングを提供します。各ネットワークは、異なる IP に解決される文字列を提供します。
すべてのクラスターには 標準の接続文字列があります。これは、クラスターの以下に解決されます。
インターネット接続用のパブリック IP アドレスと
AWS クラスターに対する VPC プライベート IP アドレスがピアリングされた VPC によって解決される場合。
この文字列は、インターネット経由で接続するアプリケーション、または AWS 内のピアリングされたクラスターに接続するアプリケーションに使用します。
ピアリングされたネットワークのあるクラスターには、 ピアリング接続文字列のプライベートIPがあります。この文字列は、次で利用可能なIPアドレスに解決されます。
Azure または Google Cloud のピアリングされたネットワーク
AWS のピアリングされたクラスターでカスタム DNS サービスを使用する。
この接続文字列は、右記に接続するアプリケーションで使用します。
Azure または Google Cloud のピアリングされたネットワーク内
AWS でカスタム DNS サービスを使用する場合の AWS クラスターへの接続。
プライベートエンドポイントが設定されているリージョンの AWS または Azure クラスターには、1 つ以上の接続文字列があります。各文字列は、Atlas VPC または VNet 内のロード バランサーに直接接続する VPC または VNet 内の、ネットワーク インターフェイスのプライベート IP アドレスに解決されます。これらの接続文字列は、プライベートエンドポイントに接続するアプリケーションで使用します。
プライベートリンクを持つマルチリージョンクラスターに単一のMongoDB SRV接続文字列を使用できますか
はい、MongoDB AtlasのPrivate Linkを使用してマルチリージョンクラスターに単一のSRV接続文字列を使用できます。SRV接続文字列は、リージョン全体の適切なノードに自動的に解決されます。ただし、ネットワーク設定がプライベートエンドポイントを介したクロスリージョン接続が許可されていることを確認します。 AWSとAzureの場合、リージョン間でVPC/VNet ピアリングを設定することが含まれます。Google Cloud Platform の場合は、Private Service Connect の グローバル アクセス を構成する必要があります。
詳細については、プライベートエンドポイントのドキュメントを参照してください。
これは、ピアリング専用モードの Google Cloud またはAzureクラスターにとってどのよう平均がありますか?
2020 年 3 月 31 日より前は、ピアネットワーク化された Azure または Google Cloud クラスター上のデータベースに接続するには、ピアリング専用モードを有効にする必要がありました。このモード:
影響を受けるグローバルDNS 解決と
ピアリングされたネットワーク外のデータベース接続を制限します。
複数ホライズンではこれらの制限を解除し、次の追加機能のロックを解除します。
複数ホライゾンを活用するには、以下のタスクを実行します。
アプリケーションの既存の接続ストリングをアップデートして、 ピアリング接続ストリングにプライベートIPを使用します 。
注意
現時点では、既存のピアリング対応接続文字列を使用してクラスターに接続し続けることが可能です。ピアリング専用モードでは、複数ホライズンで改善された機能と緩和された制限を利用できなくなります。新機能を使用してレガシー制限を取り除くには、MongoDB では新しい接続文字列を使用する必要があります。
VNet でピアリングされたAzureクラスターは複数のリージョンにまたがることができますか。
はい。
ピアリング接続文字列用のプライベートIPを使用して接続するようにアプリケーションを変更します。この変更により、アプリケーションはUIまたはAPIを使用してピアリングされたネットワークから接続できるようになります。
より多くのリージョンに拡張するには、まず既存の Azure クラスターでピアリング専用モードを無効にします。
ピアリング専用モードを無効にするにはどうすればよいですか。
ピアリング専用モードを無効にするには、以下を使用します。
Atlas で、プロジェクトの [Clusters] ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
ピアリング接続文字列にプライベート IP を使用するようにすべてのアプリケーションを更新する。
Atlas クラスターを使用するアプリケーション内のすべてのURLを変更して、 ピアリング接続文字列用のプライベートIPを使用します。
Atlas で、Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 アイコンを Project Overview の横にあるをクリックします。
[ Project Settings ]ページが表示されます。
プロジェクト内のすべてのクラスターがMongoDB 7.0 以降を使用していることを確認します。
すべてのクラスターとそれらの MongoDB バージョンを返すには、get all API エンドポイントを呼び出します。
注意
この curl コマンドは、サービス アカウント アクセス トークン(OAuth 2.0)を使用して認証します。詳細については、Atlas 管理APIの使い始める を参照してください。
例
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters?pretty=true"
成功した場合、応答には以下の内容が含まれます。
{ "results": [{ ... "mongoDBMajorVersion": "6.0", "mongoDBVersion": "6.0.14", ... },{ ... "mongoDBMajorVersion": "6.0", "mongoDBVersion": "6.0.12", ... } ] }
ピアリング接続文字列にプライベート IP を使用するようにすべてのアプリケーションを更新する。
Atlas クラスターを使用するアプリケーション内のすべてのURLを変更して、 ピアリング接続文字列用のプライベートIPを使用します。
クラスターでプライベート IP モードを無効にします。
プライベート IP モードを無効にする には、API エンドポイントを呼び出します。
例
curl を使うと、このコマンドを実行することになります。
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/privateIpMode?pretty=true" \ --data ' { "enabled" : false }'
{GROUP-ID}を、該当するプロジェクトのプロジェクト ID に変更します。
成功した場合、応答には次のように表示されます。
1 { 2 "enabled" : false 3 }
カスタム DNS を使用する場合、 AWS VPCピアリングにはどのような影響がありますか。
2020 年 3 月 31 日より前は、カスタム DNS サービスと Atlas とピアリングされた VPC を使用して AWS 内に配置されたアプリケーションは、プライベート IP アドレスで接続することはできませんでした。
カスタム DNS はパブリック IP アドレスに解決されました。
AWS の内部 DNS がプライベート IP アドレスに解決されました。
カスタム DNS サービスを使用してAWSに配置されたアプリケーションは、ピアリング接続文字列にプライベートIPを使用する必要があります。
これらの文字列を表示するには、
Atlas で、Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 アイコンを Project Overview の横にあるをクリックします。
[ Project Settings ]ページが表示されます。
標準接続文字列
標準の接続文字列は、次の形式に従います。
mongodb://xyz456-shard-00-00.ab123.mongodb.net:27017 mongodb+srv://xyz456.ab123.mongodb.net
ab123 の前のドットは重要です。この形式を使用する URI は、VPC ピアリングが設定された AWS 内から接続する場合を除き、パブリック IP アドレスに解決されます。
プライベート接続文字列
プライベート接続文字列は次の形式に従います。
mongodb://xyx456-shard-00-00-pri.ab123.mongodb.net:27017 mongodb+srv://xyx456-pri.ab123.mongodb.net
ab123 の前の -pri は重要です。この形式を使用する URI は、ピアリングされたネットワーク内でアクセス可能なプライベート IP アドレスに解決されます。クラスターにネットワークピアリングを設定する場合、ピアリングを利用するには、クラスターに接続する際に新しいホスト名を使用する必要があります。
重要
新しいクラスターの場合、レプリカセットとシャードの名前がクラスターの名前から派生することはありません。新しい名前には、6 文字の英数字 ID が使用されます。
注意
AWS環境では、ネットワークピアリングが有効になっている場合でも、-pri接続文字列は任意です。AWS は、プライベート接続文字列を使用するか、標準接続文字列を使用するかにかかわらず、クラスターのプライベートIPアドレスを解決します。
AWS Privatelink 接続文字列
AWS PrivateLink 接続文字列は次の形式に従います。
mongodb://pl-0-us-east-1a.ab123.mongodb.net:1024 mongodb+srv://pl-0-us-east-1a.ab123.mongodb.net
プライベートエンドポイントのリージョン化設定を有効にすると、AWS PrivateLink 接続文字列は次の形式に従います。
mongodb://pl-0-us-west-1.ab123.mongodb.net:1024 mongodb+srv://cluster0-pl-0-us-west-1.ab123.mongodb.net
この形式を使用するURIは、PrivateLink が設定された AWS VPC 経由でアクセスできますが、ピアリングされた他の VPC からもアクセスが順次可能となります。
Azure Privatelink 接続文字列
Azure Private Link 接続文字列は次の形式に従います。
mongodb://pl-0-eastus2.ab123.mongodb.net:1024 mongodb+srv://pl-0-eastus2.ab123.mongodb.net
プライベートエンドポイントのリージョン化設定を有効にすると、Azure Private Link 接続文字列は次の形式に従います。
mongodb://pl-0-eastus2.ab123.mongodb.net:1024 mongodb+srv://cluster0-pl-0-eastus2.ab123.mongodb.net
この形式を使用するURIは、Private Link が設定された Azure VNet 経由でアクセスできますが、ピアリングされた他の VNet からもアクセスが順次可能となります。
レガシー接続文字列
2020 年 3 月 31 日より前は、Atlas の接続文字列は次のように記述されていました。
AWS (Amazon Web Services) | | ||
Azure (Microsoft Azure) | | ||
Google Cloud | |
プライベート専用モードを有効にした場合、これらのホスト名はピアリングされたネットワーク IP アドレスに解決されます。このモードを無効にすると、ホスト名はパブリック IP アドレスに解決されます。
アプリケーションがピアリング専用モードでレガシー接続文字列を使用している場合、 ピアリング接続文字列用のプライベートIPに切り替えます 。
プライベートエンドポイントを使用してシャーディングされたクラスターの接続パフォーマンスを最適化するにはどうすればよいですか?
Atlas は、プライベートエンドポイント サービスのロード バランサーを使用して、シャーディングされたクラスター用に最適化された SRV 接続文字列を生成できます。最適化された接続文字列を使用する場合、Atlas はアプリケーションとシャーディングされたクラスター間の各 mongos の接続数を制限します。mongos ごとに接続数を制限することで、接続数が急増した際のパフォーマンスが向上します。
最適化された接続文字列を使用するには、次のすべての条件を満たす必要があります。
シャーディングされたクラスターが AWS で実行されていることを確認します。
シャーディングされたクラスターが MongoDB バージョン 5.0 以降で実行されていることを確認します。現在 MongoDB の以前のバージョンがクラスターにより実行されている場合に、最適化された SRV接続文字列を使用するには、クラスターの MongoDB バージョンを 5.0 以上にアップグレードしてください。
クラスターのプライベートエンドポイントを設定します。
次のいずれかを使用します:
単一リージョン クラスター、または
リージョン化されたプライベートエンドポイントが有効なマルチリージョンクラスター。最適化された SRV 接続文字列をサポートするのは、マルチリージョンクラスター内の AWS リージョンだけです。
Atlas は、単一の SRV レコードを使用したマルチリージョンクラスターへの最適化された接続をサポートしていません。
注意
クラスターが最適化された SRV 文字列の基準を満たしている場合、Atlas は Optimized SRV Connection 文字列を生成します。クラスターにレガシー接続文字列が使用されていた場合、Atlas はそれらの 文字列を無期限に保持し、Private Endpoint 接続タイプを選択する際に Legacy SRV Connection 文字列を含めます。最適なパフォーマンスを得るためには、Optimized SRV Connection に切り替え、使用する場所で接続文字列を更新することを検討してください。
Atlas がこの機能をリリースした後にクラスターを作成し、プライベート エンドポイントを有効にした場合、Private Endpoint 接続型を選択すると、Atlas はデフォルトで最適化された接続文字列を表示します。次の例に示すように、接続文字列に lb を追加することで、最適化された接続文字列を識別できます。
mongodb+SRV://User1:P@ssword@cluster0-pl-0-lb.oq123.mongodb-dev.net/
Legacy SRV Connectionオプションがないクラスターの最適化された接続文字列を無効にするには、サポートまでお問い合わせください。
警告
マルチリージョンクラスターへの移行
シャーディングされたクラスターのリージョンを単一からマルチリージョンに変換する場合、リージョン化されたプライベートエンドポイントを有効にしていないと、最適な接続文字列を引き続き使用できなくなります。クラスターを変換する前に、接続文字列を上記「注意」で説明されている Legacy SRV Connection 文字列に更新してください。
ドライバーで最適化された接続文字列を使用する
ドライバーと最適化された接続文字列を使用した接続方法について詳しくは、「アプリケーションの接続手順」で [Private Endpoint Connection] タブを選択します。
Compass で最適化された接続文字列を使用する
Compass と最適化された接続文字列を使用して接続する方法については、クラスターへの接続手順の Private Endpoint Connection タブを選択してください。
最適化された接続文字列を使用する mongosh
mongosh と最適化された接続文字列を使用して接続する方法については、クラスターへの接続手順で Private Endpoint Connection タブを選択してください。
無料クラスターまたは Flex クラスターでクラウドプロバイダーを変更する場合、接続文字列を更新する必要がありますか?
レガシー接続文字列が存在しており、クラウドプロバイダーを変更する場合は、接続文字列に.gcp または .azure を含める必要があります。次のいずれかを実行します。
Google Cloud または Azure に移行する
Google Cloud または Azure から移行する
注意
どちらの操作でも、接続文字列を変更する場合があります。Atlas UI で、アップグレード完了後にクラスターのConnectをクリックし、アップデートされた接続文字列を表示します。
専有クラスターでクラウドプロバイダーを変更する場合、接続文字列を更新する必要がありますか。
下記の条件によって異なります。
現在のクラスターが使用しているクラウドプロバイダー
クラスターを作成したとき
2020 年 11 月 3 日より前に作成された GCP または Azure クラスター
2020 年 11 月 3 日にマルチクラウド クラスターが導入される前にクラスターを作成し、かつ、そのクラスターが Google Cloud または Azure で実行されている場合。
Atlas で、プロジェクトの [Clusters] ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
クラスタービルダを開きます。
クラスターを編集します。
ターゲットのクラウドプロバイダーから読み取り専用ノードを追加します。
注意
レガシーバックアップを使用している場合は、現在のクラウドプロバイダーに 1 つのノードを残し、残りをターゲットのクラウドプロバイダーに移動させます。
変更内容を確認して送信します。
生成されたカンマ区切りの URI 接続文字列をコピーします。
アプリケーション内の接続文字列をこの新しい 標準接続文字列に置き換えます。
これにより、アプリケーションは複数のクラウドプロバイダーのノードに接続できるようになります。
アプリケーションを再起動します。
アプリケーションが Atlas に接続できることを確認します。
最初の変更が完了したら、クラスターを再構成します。
元のクラウドプロバイダーを使用して、選挙可能なノードをすべて削除します。
ターゲットのクラウドプロバイダーの読み取り専用ノードを削除します。
ターゲットのクラウドプロバイダーを使用して、同じ数の選挙可能なノードを追加します。
注意
レガシーバックアップを使用している場合は、新しいバックアップが作成されるまで待ってから、残りのノードを対象のクラウドプロバイダーに移動します。
変更内容を確認して送信します。
生成されたカンマ区切りの URI 接続文字列をコピーします。
アプリケーション内の URI 接続文字列を、この新しい URI 接続文字列に置き換えます。
アプリケーションを再起動します。
アプリケーションが Atlas に接続できることを確認します。
2020 年 11 月 2 日以降に作成された AWS とクラスター
次のいずれかに当てはまる場合は、接続文字列は変更されず、クラスターのダウンタイムは発生しません。
クラスターはAmazon Web Servicesで実行されます。
クラスターは任意のクラウドプロバイダーで実行されますが、作成されたのは 11 月 112 日、2020 以降です。
クラスターのクラウドプロバイダーを変更するには、以下の手順を行います。
Atlas で、プロジェクトの [Clusters] ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
クラスタービルダを開きます。
クラスターを編集します。
クラウドプロバイダーを変更します。
変更内容を確認して送信します。