Azure Cosmos DB の MongoDB 用 API を使用してグローバル分散型データベースを設定する

適用対象: MongoDB

この記事では、Azure portal を使用してグローバル分散型データベースを設定し、Azure Cosmos DB の MongoDB 用 API を使用してそれに接続する方法を説明します。

この記事に含まれるタスクは次のとおりです。

Azure Portal を使用したグローバル データベース リージョンの追加

Azure Cosmos DB は世界中のすべての Azure リージョンで利用できます。 データベース アカウントの既定の一貫性レベルを選択すると、選択した既定の一貫性レベルとグローバル配信の必要性に応じて、1 つまたは複数のリージョンを関連付けることができます。

  1. Azure Portal で、左側のバーの [Azure Cosmos DB] をクリックします。

  2. [Azure Cosmos DB] ページで、変更するデータベース アカウントを選びます。

  3. アカウントのページで、メニューから [データをグローバルにレプリケートする] をクリックします。

  4. [データをグローバルにレプリケートする] ページで、マップ内のリージョンをクリックして、追加または削除するリージョンを選択し、[保存] をクリックします。 リージョンを追加するには費用が必要になります。詳細については、価格に関するページまたは「Azure Cosmos DB を使用したデータのグローバル分散」の記事を参照してください。

    地図でリージョンをクリックして、リージョンを追加又は削除する

2 番目のリージョンを追加すると、ポータルの [データをグローバルにレプリケートする] ページで [手動フェールオーバー] オプションが有効になります。 このオプションは、フェールオーバー プロセスをテストしたり、プライマリ書き込みリージョンを変更したりするために使用できます。 3 番目のリージョンを追加すると、同じページの [フェールオーバーの優先度] オプションが有効になります。これで、読み取りのフェールオーバーの順序を変更できるようになります。

グローバル データベース リージョンの選択

複数のリージョンを構成する場合、2 つの一般的なシナリオがあります。

  1. エンドユーザーが世界中のどこにいても関係なく、データへの待ち時間の短いアクセスを実現する
  2. ビジネス継続性とディザスター リカバリー (BCDR) のためにリージョンの回復性を追加する

エンド ユーザーの短い待ち時間の実現のため、アプリケーションのユーザーが存在する場所に対応するリージョンに、アプリケーションと Azure Cosmos DB の両方をデプロイすることをお勧めします。

BCDR のため、「Azure のリージョン間レプリケーション: ビジネス継続性とディザスター リカバリー」に記載されているリージョン ペアに基づいてリージョンを追加することをお勧めします。

リージョン設定を確認する

Azure Cosmos DB の MongoDB 用 API を使用してグローバル構成を確認する簡単な方法として、Mongo シェルから isMaster() コマンドを実行する方法があります。

Mongo シェルから次のコマンドを実行します。

   db.isMaster()

結果の例:

   {
      "_t": "IsMasterResponse",
      "ok": 1,
      "ismaster": true,
      "maxMessageSizeBytes": 4194304,
      "maxWriteBatchSize": 1000,
      "minWireVersion": 0,
      "maxWireVersion": 2,
      "tags": {
         "region": "South India"
      },
      "hosts": [
         "vishi-api-for-mongodb-southcentralus.documents.azure.com:10255",
         "vishi-api-for-mongodb-westeurope.documents.azure.com:10255",
         "vishi-api-for-mongodb-southindia.documents.azure.com:10255"
      ],
      "setName": "globaldb",
      "setVersion": 1,
      "primary": "vishi-api-for-mongodb-southindia.documents.azure.com:10255",
      "me": "vishi-api-for-mongodb-southindia.documents.azure.com:10255"
   }

優先リージョンに接続する

Azure Cosmos DB の MongoDB 用 API を使用すると、グローバル分散型データベースのコレクションの読み取り設定を指定することができます。 待機時間の短い読み取りとグローバルな高可用性の両方を得るために、コレクションの読み取り設定には Nearest を設定することをお勧めします。 Nearest 読み取り設定は、最寄りのリージョンから読み取るように構成します。

var collection = database.GetCollection<BsonDocument>(collectionName);
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.Nearest));

プライマリ読み取り/書き込みリージョンとディザスター リカバリー (DR) 用のセカンダリ リージョンを使用するアプリケーションでは、コレクションの読み取り設定を primary preferred に設定することをお勧めします。 primary preferred 読み取り設定は、プライマリ リージョンが利用できない場合、セカンダリ リージョンから読み取るように構成します。

var collection = database.GetCollection<BsonDocument>(collectionName);
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.SecondaryPreferred));

最後に、読み取りリージョンを手動で指定する場合について説明します。 リージョン タグは、読み取り設定で設定できます。

var collection = database.GetCollection<BsonDocument>(collectionName);
var tag = new Tag("region", "Southeast Asia");
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.Secondary, new[] { new TagSet(new[] { tag }) }));

このチュートリアルはこれで終わりです。 Azure Cosmos DB の一貫性レベルに関する記事を読んで、グローバルにレプリケートされたアカウントの整合性を管理する方法について確認できます。 また、Azure Cosmos DB におけるグローバル データベース レプリケーションの動作の詳細については、Azure Cosmos DB を使用したデータのグローバル分散に関する記事を参照してください。

次のステップ

このチュートリアルでは、次の手順を行いました。

  • Azure Portal を使用してグローバル分散を構成する
  • Azure Cosmos DB の MongoDB 用 API を使用してグローバル分散を構成する

これで次のチュートリアルに進むことができます。Azure Cosmos DB ローカル エミュレーターを使用してローカルで開発する方法について学びます。

Azure Cosmos DB への移行のための容量計画を実行しようとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。