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 アドレスに解決されます。これらの接続文字列は、プライベートエンドポイントに接続するアプリケーションで使用します。
これは、ピアリング専用モードの Google Cloud または Azure クラスターにとって何を意味しますか。
2020 年 3 月 31 日より前は、ピアネットワーク化された Azure または Google Cloud クラスター上のデータベースに接続するには、ピアリング専用モードを有効にする必要がありました。このモード:
影響を受けるグローバルDNS 解決と
ピアリングされたネットワーク外のデータベース接続を制限します。
複数ホライズンではこれらの制限を解除し、次の追加機能のロックを解除します。
複数ホライゾンを活用するには、以下のタスクを実行します。
アプリケーションの既存の接続文字列を更新して、 ピアリング接続文字列にプライベート IP を使用します。
「クラスターに複数の接続文字列があるのはなぜですか」で説明されている文字列を使用して接続します。
注意
現時点では、既存のピアリング対応接続文字列を使用してクラスターに接続し続けることが可能です。ピアリング専用モードでは、複数ホライズンで改善された機能と緩和された制限を利用できなくなります。新機能を使用してレガシー制限を取り除くには、MongoDB では新しい接続文字列を使用する必要があります。
VNet ピアリングされた Azure クラスターは複数のリージョンにまたがることができますか。
はい。
ピアリング接続文字列用のプライベート IPを使用して接続するようにアプリケーションを変更します。この変更により、アプリケーションは UI または API を使用してピアリングされたネットワークから接続できるようになります。
より多くのリージョンに拡張するには、まず既存の Azure クラスターでピアリング専用モードを無効にします。
ピアリング専用モードを無効にするにはどうすればよいですか。
ピアリング専用モードを無効にするには、以下を使用します。
Atlas Atlasで、プロジェクトの {0 ページにGoします。GoClusters
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
ピアリング接続文字列にプライベート IP を使用するようにすべてのアプリケーションを更新する。
Atlas クラスターを使用するアプリケーション内のすべての URL を変更して、ピアリング接続文字列用のプライベート IP を使用します。
Atlas で、Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、Project Settings をクリックします。
[ Project Settings ]ページが表示されます。
プロジェクト内のすべてのクラスターがMongoDB 7.0 以降を使用していることを確認します。
すべてのクラスターとそれらの MongoDB バージョンを返すには、get all API エンドポイントを呼び出します。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --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 --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --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 アドレスに解決されました。
AWS にカスタム DNS サービスを使用して展開されたアプリケーションでは、ピアリング接続文字列にプライベート IP を使用する必要があります。
これらの文字列を表示するには、
Atlas で、Project Settings ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、Project Settings をクリックします。
[ Project Settings ]ページが表示されます。
標準接続文字列
標準の接続文字列は、次の形式に従います。
mongodb://xyz456-shard-00-00.ab123.mongodb.net:27017 mongodb+srv://xyz456.ab123.mongodb.net
ab123
の前のドットは重要です。この形式を使用する URI は、VPC ピアリングが設定された AWS 内から接続する場合を除き、パブリック IP アドレスに解決されます。
重要
この形式では、レガシー接続文字列から 1 文字が変更されます。クラスター名の後のハイフン ( -
) がピリオド ( .
) になります。
たとえば、このレガシー接続文字列は次のようになります。
mongodb+srv://xyx456-ab123.mongodb.net
はこの標準接続文字列として記述されます。
mongodb+srv://xyx456.ab123.mongodb.net
新しいクラスターの場合、レプリカセットとシャードの名前がクラスターの名前から派生することはありません。新しい名前には、6 文字の英数字 ID が使用されます。
プライベート接続文字列
プライベート接続文字列は次の形式に従います。
mongodb://xyx456-shard-00-00-pri.ab123.mongodb.net:27017 mongodb+srv://xyx456-pri.ab123.mongodb.net
ab123
の前の -pri
は重要です。この形式を使用する URI は、ピアリングされたネットワーク内でアクセス可能なプライベート IP アドレスに解決されます。クラスターにネットワークピアリングを設定する場合、ピアリングを利用するには、クラスターに接続する際に新しいホスト名を使用する必要があります。
重要
新しいクラスターの場合、レプリカセットとシャードの名前がクラスターの名前から派生することはありません。新しい名前には、6 文字の英数字 ID が使用されます。
Amazon Web Services 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 Private Link 接続文字列
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 の接続文字列は次のように記述されていました。
Amazon Web Services |
| ||
Azure |
| ||
Google Cloud |
|
プライベート専用モードを有効にした場合、これらのホスト名はピアリングされたネットワーク IP アドレスに解決されます。このモードを無効にすると、ホスト名はパブリック IP アドレスに解決されます。
アプリケーションがピアリング専用モードでレガシー接続文字列を使用している場合、ピアリング接続文字列用のプライベート IP に切り替えます。
プライベートエンドポイントを使用してシャーディングされたクラスターの接続パフォーマンスを最適化するにはどうすればよいですか?
Atlas は、プライベートエンドポイント サービスのロード バランサーを使用して、シャーディングされたクラスター用に最適化された SRV 接続文字列を生成できます。最適化された接続文字列を使用する場合、Atlas はアプリケーションとシャーディングされたクラスター間の接続数を mongos
ごとに制限します。mongos
ごとの接続数を制限すると、接続数が急増したときのパフォーマンスが向上します。
最適化された接続文字列を使用するには、次のすべての条件を満たす必要があります。
シャーディングされたクラスターが AWS で実行されていることを確認します。
シャーディングされたクラスターが MongoDB バージョン 5.0 以降であることを確認します。クラスターが現在以前のバージョンの MongoDB を実行している場合は、最適化された SRV 接続文字列を使用するために、クラスターの MongoDB バージョンをバージョン 5.0 以降にアップグレードしてください。
クラスターのプライベートエンドポイントを設定します。
次のいずれかを使用します:
単一リージョン クラスター、または
リージョン化されたプライベートエンドポイントが有効になっているマルチリージョンクラスター。マルチリージョンクラスター内の AWS リージョンのみが、最適化された SRV 接続文字列をサポートします。
Atlas は、単一の SRV レコードを使用したマルチリージョン クラスターへの最適化された接続をサポートしていません。
次のいずれかの方法で接続します。
注意
クラスターが最適化された SRV Optimized SRV ConnectionLegacy SRV ConnectionPrivate EndpointOptimized SRV Connectionstring の基準を満たしている場合、Atlas は string を生成します。クラスターにレガシー接続文字列が使用されていた場合、Atlas はそれらの string を無期限に保持し、 接続タイプを選択すると string を含めます。最適なパフォーマンスを得るために に切り替えることを検討し、使用する場合は接続文字列を更新してください。
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 (クラスター) ] ページが表示されます。
クラスタービルダを開きます。
クラスターを編集します。
クラウドプロバイダーを変更します。
変更内容を確認して送信します。