Azure Cosmos DB for MongoDB 仮想コアでのリージョン間レプリケーション
適用対象: MongoDB 仮想コア
この記事では、Azure Cosmos DB for MongoDB 仮想コアのリージョン間ディザスター リカバリー (DR) について説明します。 また、読み取り操作のスケーラビリティのために、他のリージョン内のクラスター レプリカを読み取る機能についても説明します。
リージョン間レプリケーション機能を使うと、クラスターから別の Azure リージョン内の読み取り専用クラスターに、データをレプリケートできます。 レプリカは非同期レプリケーション テクノロジを使って更新されます。 プライマリ Azure Cosmos DB for MongoDB 仮想コア クラスターに対し、任意の別のリージョンに 1 つのクラスター レプリカを作成できます。 まれに、リージョンが停止した場合は、別のリージョンのクラスター レプリカを昇格させて新しい読み取り/書き込みクラスターにして、MongoDB データベースの動作を継続できます。 別のリージョンのクラスター レプリカが新しいプライマリ クラスターに昇格された後も、アプリケーションでは同じ接続文字列が引き続き使われる場合があります。
レプリカとは、通常のクラスターと同様に管理する新しいクラスターです。 読み取りレプリカごとに、プロビジョニング済みのコンピューティング (仮想コア単位) とストレージ (GiB/月) に対して課金されます。 レプリカ クラスターのコンピューティングとストレージのコストは、通常のクラスターおよびそれらが作成される Azure リージョンの価格と同じ体系になります。
クラスター読み取りレプリカを使用するディザスター リカバリー
リージョン間レプリケーションは、Azure の事業継続とディザスター リカバリー (BCDR) 戦略のいくつかの重要な柱のうちの 1 つです。 リージョン間レプリケーションにより、ディザスター リカバリー保護のために、他の Azure リージョンとの間で同じアプリケーションとデータが非同期にレプリケートされます。 すべての Azure サービスがデータを自動的にレプリケートするわけではありません。また、すべての Azure サービスが、障害が発生したリージョンから自動的にフォールバックし、別の有効なリージョンにクロス レプリケートするわけではありません。 Azure Cosmos DB for MongoDB 仮想コアには、別のリージョンにクラスター レプリカを作成し、プライマリ クラスターに書き込まれたデータをそのレプリカに自動的にレプリケートするオプションがあります。 プライマリ リージョンで障害が発生した場合のクラスター レプリカへのフォールバックは、手動で開始する必要があります。
Azure Cosmos DB for MongoDB 仮想コア クラスターでリージョン間レプリケーションが有効になっていると、各シャードが継続的に別のリージョンにレプリケートされます。 このレプリケーションによって、選ばれたリージョンでデータのレプリカが保持されます。 このようなレプリカは、まれにプライマリ リージョンが停止した場合に、ディザスター リカバリー計画の一部として使用できる状態になっています。 レプリケーションは非同期です。 プライマリ クラスターのシャードに対する書き込み操作は、対応するレプリカのシャードへのレプリケーションが完了するのを待たずに、書き込み成功の確認を送信します。 非同期レプリケーションは、プライマリ クラスターでの書き込み操作の待ち時間の増加を回避するのに役立ちます。
継続的な書き込み、クラスター レプリカでの読み取り操作、および接続文字列
Azure Cosmos DB for MongoDB のグローバル読み取り/書き込み接続文字列は、アクティブな書き込み許可クラスターへの書き込みを常に指示します。 レプリカ クラスターの昇格を開始すると、リージョン B のレプリカ クラスターは書き込みモードに切り替わり、リージョン A の元のプライマリ クラスターは読み取り専用に移行します。 昇格の前に、グローバル読み取り/書き込み接続文字列はリージョン A のプライマリ クラスターを対象とし、書き込み責任を引き受けるのでリージョン B を指すように更新します。 グローバル読み取り/書き込み接続文字列を使用するアプリケーションの場合、書き込み操作は昇格プロセス全体でシームレスに続行され、中断のないデータ フローが維持されます。
レプリカ クラスターは読み取りにも使用できます。 これは、負荷の大きい読み取り操作をプライマリ クラスターからオフロードしたり、レプリケーション リージョンに近い場所にあるクライアントの読み取り操作の待ち時間を短縮したりするのに役立ちます。 リージョン間レプリケーションが有効になっていると、アプリケーションはレプリカ クラスターの自己接続文字列を使ってクラスター レプリカからの読み取りを実行できます。 プライマリ クラスターは、専用の自己接続文字列を使うことで、読み取りおよび書き込み操作に利用できます。
リージョン間レプリケーションを有効にしてレプリカを作成しても、プライマリ クラスターのファイアウォール規則などのネットワーク設定は継承されません。 これらの設定は、レプリカに対して個別に設定する必要があります。 レプリカは、プライマリ クラスターから管理者アカウントを継承します。 ユーザー アカウントは、プライマリ クラスターで管理する必要があります。 プライマリ クラスターとそのレプリカ クラスターに、同じユーザー アカウントを使って接続できます。
レプリカ クラスターの昇格
リージョンで障害が発生した場合は、別のリージョンのクラスター レプリカを昇格させて書き込みに使用できるようにして、ディザスター リカバリー操作を実行できます。 レプリカの昇格操作の間に、次の手順が実行されます。
- リージョン B のレプリカで、読み取りに加えて書き込みが有効になります。 以前のレプリカが、新しい読み取り/書き込みクラスターになります。
- リージョン B の昇格されたレプリカ クラスターは、接続文字列とグローバル読み取り/書き込み接続文字列を使用して書き込みを受け入れます。
- リージョン A のクラスターは読み取り専用に設定され、従来の接続文字列を保持します。
重要
レプリケーションは非同期であるため、リージョン B のクラスター レプリカが昇格されるとき、一部のデータがリージョン A のクラスターからリージョン B にレプリケートされない可能性があります。 その場合、昇格の結果として、レプリケートされなかったデータがどちらのクラスターにも存在しなくなります。