次の方法で共有


Enterprise Azure Cache for Redis インスタンスのアクティブ geo レプリケーションを構成する

この記事では、Azure portal を使用し、アクティブ geo レプリケートされたキャッシュを構成する方法について説明します。

アクティブ geo レプリケーションは、最大 5 つの Enterprise Azure Cache for Redis のインスタンスをグループ化して、複数の Azure リージョンにまたがる 1 つのキャッシュにします。 インスタンスはすべて、ローカルのプライマリ キャッシュとして機能します。 アプリケーションでは、読み取りおよび書き込み要求に使用するインスタンスを決定します。

Note

Azure リージョン間のデータ転送は、標準の帯域幅レートで課金されます。

可用性のスコープ

レベル Basic、Standard Premium Enterprise、Enterprise Flash
使用可能 いいえ 番号 はい

Azure Cache for Redis の Premium レベルには、"パッシブ geo レプリケーション" と呼ばれるバージョンの geo レプリケーションが用意されています。 パッシブ geo レプリケーションでは、アクティブ/パッシブ構成が提供されます。

アクティブ geo レプリケーションの前提条件

アクティブ geo レプリケーションを使用する場合は、いくつかの制限があります。

  • RediSearch モジュールと RedisJSON モジュールのみがサポートされています。
  • Enterprise Flash レベルでは、"削除なし" の削除ポリシーのみを使用できます。 Enterprise レベルではすべての削除ポリシーがサポートされています。
  • アクティブ geo レプリケーションでは優れたエクスペリエンスが提供されているため、データ永続化はサポートされていません。
  • geo レプリケーション グループに既存の (つまり実行中の) キャッシュを追加することはできません。 geo レプリケーション グループにキャッシュを追加できるのは、キャッシュの作成時のみです。
  • geo レプリケーション グループ内のすべてのキャッシュは、同じ構成である必要があります。 たとえば、すべてのキャッシュに同じ SKU、容量、削除ポリシー、クラスタリング ポリシー、モジュール、TLS 設定が必要です。
  • アクティブ geo レプリケーションを使用する場合、FLUSHALL および FLUSHDB Redis コマンドを使用することはできません。 コマンドを禁止することで、意図しないデータの削除が防止されます。 代わりに、ポータルからフラッシュ操作を使用します。
  • E1 SKU ではアクティブ geo レプリケーションはサポートされていません。

アクティブ geo レプリケーション グループを作成または参加する

  1. 新しい Azure Cache for Redis リソースを作成するときは、[詳細設定] タブを選択します。クラスタリング ポリシーを含むフォームの最初の部分に入力します。 クラスタリング ポリシーの選択について詳しくは、「クラスタリング」をご覧ください。

  2. [構成] を選択して [アクティブ geo レプリケーション] を設定します。

    [新しい Redis キャッシュの作成] ページの [詳細] タブのスクリーンショット。

  3. 最初のキャッシュ インスタンスに対して新しいレプリケーション グループを作成します。 または、リストから既存のものを選択します。

    レプリケーション グループを示すスクリーンショット。

  4. [構成] を選択して完了します。

  5. 最初のキャッシュが正常に作成されるまで待ちます。 完了すると、アクティブ geo レプリケーションに対して [構成済み] が設定されたことが表示されます。 Geo レプリケーション グループ内のキャッシュ インスタンスごとに、上記の手順を繰り返します。

    アクティブ geo レプリケーションが構成されていることを示すスクリーンショット。

アクティブ geo レプリケーション グループから削除する

アクティブ geo レプリケーション グループからキャッシュ インスタンスを削除するには、そのインスタンスを削除します。 その後、残りのインスタンスは自動的に再構成されます。

リージョンの停止によってレプリケーション グループ内のキャッシュの 1 つが使用できない場合、使用できないキャッシュをレプリケーション グループから強制的に削除できます。 キャッシュに [強制的にリンクを解除する] を適用すると、強制的なリンク解除後にそのキャッシュに書き込まれたデータをレプリケーション グループに同期することはできなくなります。

使用できないキャッシュに共有されていないメタデータの格納を、レプリケーション グループ内の残りのキャッシュが開始するため、使用できないキャッシュは削除する必要があります。 これが起こると、レプリケーション グループ内の使用可能なキャッシュでメモリ不足になる可能性があります。

  1. Azure portal に移動し、引き続き使用可能なレプリケーション グループ内のいずれかのキャッシュを選択します。

  2. 設定は、左側の [リソース] メニューの [アクティブ geo レプリケーション] を選択すると作業ウィンドウに表示されます。

    アクティブ geo レプリケーション グループのスクリーンショット。

  3. チェック ボックスをオンにして、強制的にリンク解除する必要があるキャッシュを選択します。

  4. [強制的にリンク解除] を選択し、[OK] を選択して確定します。

    アクティブ geo レプリケーションでのリンク解除のスクリーンショット。

  5. 影響を受けるリージョンの可用性が復元されたら、影響を受けているキャッシュを削除し、再作成してレプリケーション グループに戻す必要があります。

Azure CLI または PowerShell を使用してアクティブ geo レプリケーションを設定する

Azure CLI

Azure CLI を使用して新しいキャッシュおよび geo レプリケーション グループを作成するか、既存の geo レプリケーション グループに新しいキャッシュを追加します。 詳細については、「az redisenterprise create」をご覧ください。

Azure CLI を使用して新しい geo レプリケーション グループに新しいエンタープライズ インスタンスを作成する

この例では、米国東部リージョンに Cache1 という名前の新しい Azure Cache for Redis Enterprise E10 キャッシュ インスタンスを作成します。 次に、キャッシュが replicationGroup という名前の新しいアクティブ geo レプリケーション グループに追加されます。

az redisenterprise create --location "East US" --cluster-name "Cache1" --sku "Enterprise_E10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"

アクティブ geo レプリケーションを適切に構成するには、作成するキャッシュ インスタンスの ID を、--linked-databases パラメーターを使用して追加する必要があります。 ID の形式は次のとおりです。

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

Azure CLI を使用して既存の geo レプリケーション グループに新しいエンタープライズ インスタンスを作成する

この例では、米国西部リージョンに Cache2 という名前の新しい Enterprise E10 キャッシュ インスタンスを作成します。 次に、前の手順で作成した replicationGroup アクティブ geo レプリケーション グループにキャッシュを追加します。 このようにして、それは Cache1 を使用したアクティブ/アクティブ構成にリンクされます。

az redisenterprise create --location "West US" --cluster-name "Cache2" --sku "Enterprise_E10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"

前と同様に、--linked-databases パラメーターを使用して Cache1Cache2 の両方を一覧表示する必要があります。

Azure PowerShell

Azure PowerShell を使用して、新しいキャッシュと geo レプリケーション グループを作成するか、既存の geo レプリケーション グループに新しいキャッシュを追加します。 詳細については、「New-AzRedisEnterpriseCache」をご覧ください。

PowerShell を使用して新しい geo レプリケーション グループに新しいエンタープライズ インスタンスを作成する

この例では、米国東部リージョンに Cache1 という名前の新しい Azure Cache for Redis Enterprise E10 キャッシュ インスタンスを作成します。 次に、キャッシュが replicationGroup という名前の新しいアクティブ geo レプリケーション グループに追加されます。

New-AzRedisEnterpriseCache -Name "Cache1" -ResourceGroupName "myResourceGroup" -Location "East US" -Sku "Enterprise_E10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}'

アクティブ geo レプリケーションを適切に構成するには、作成するキャッシュ インスタンスの ID を、-LinkedDatabase パラメーターを使用して追加する必要があります。 ID の形式は次のとおりです。

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

PowerShell を使用して既存の geo レプリケーション グループに新しいエンタープライズ インスタンスを作成する

この例では、米国西部リージョンに Cache2 という名前の新しい Enterprise E10 キャッシュ インスタンスを作成します。 次に、前の手順で作成した replicationGroup アクティブ geo レプリケーション グループにキャッシュを追加します。 コマンドを実行すると、Cache1Cache2 という 2 つのキャッシュがアクティブ/アクティブ構成でリンクされます。

New-AzRedisEnterpriseCache -Name "Cache2" -ResourceGroupName "myResourceGroup" -Location "West US" -Sku "Enterprise_E10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'

前と同様に、-LinkedDatabase パラメーターを使用して Cache1Cache2 の両方を一覧表示する必要があります。

geo レプリケーション グループ内のインスタンスのスケーリング

アクティブ geo レプリケーションを使用するように構成されたインスタンスをスケーリングできます。 ただし、異なるキャッシュ サイズが混在する geo レプリケーション グループでは問題が発生する可能性があります。 これらの問題の発生を防ぐには、geo レプリケーション グループ内のすべてのキャッシュのサイズと容量が同じである必要があります。

geo レプリケーション グループ内のすべてのインスタンスを同時にスケーリングすることは難しいため、Azure Cache for Redis にはロック メカニズムが備わっています。 geo レプリケーション グループ内の 1 つのインスタンスをスケーリングすると、基になる VM がスケーリングされますが、他のインスタンスも同様にスケールアップされるまで、使用できるメモリは元のサイズに制限されます。 残りのインスタンスに対するその他のスケーリング操作は、スケーリングされる最初のキャッシュと同じ構成に一致するまでロックされます。

スケーリングの例

たとえば、geo レプリケーション グループに 3 つのインスタンスがあり、すべて Enterprise E10 インスタンスであるとします。

インスタンス名 Redis00 Redis01 Redis02
Type Enterprise E10 Enterprise E10 Enterprise E10

この geo レプリケーション グループ内の各インスタンスを Enterprise E20 インスタンスにスケールアップするとします。 まず、キャッシュの 1 つを E20 にスケールアップします。

インスタンス名 Redis00 Redis01 Redis02
Type Enterprise E20 Enterprise E10 Enterprise E10

現時点では、Redis01 インスタンスと Redis02 インスタンスは Enterprise E20 インスタンスにのみスケールアップできます。 他のすべてのスケーリング操作はブロックされます。

Note

この時点では、Redis00 インスタンスのさらなるスケーリングはブロックされていません。 ただし、Redis01 または Redis02 が Enterprise E20 にスケーリングされるとブロックされます。

各インスタンスが同じレベルとサイズにスケーリングされると、すべてのスケーリング ロックが削除されます。

インスタンス名 Redis00 Redis01 Redis02
Type Enterprise E20 Enterprise E20 Enterprise E20

フラッシュ操作

不注意によるデータ損失の可能性があるため、geo レプリケーション グループに存在するキャッシュ インスタンスで FLUSHALL および FLUSHDB Redis コマンドを使用することはできません。 代わりに、[アクティブ geo レプリケーション] 作業ウィンドウの上部にある [キャッシュのフラッシュ] ボタンを使用します。

[リソース] メニューで [アクティブ geo レプリケーション] が選択され、[キャッシュのフラッシュ] 機能の周囲に赤いボックスが表示されているスクリーンショット。

Azure CLI または PowerShell を使用してキャッシュをフラッシュする

Azure CLI と PowerShell を使用して、フラッシュ操作をトリガーすることもできます。 Azure CLI の使用の詳細については、「az redisenterprise database flush」を参照してください。 PowerShell の使用の詳細については、「Invoke-AzRedisEnterpriseCacheDatabaseFlush」を参照してください。

重要

[キャッシュのフラッシュ] 機能を使用する場合は注意してください。 ボタンを選択すると、現在のキャッシュと geo レプリケーション グループ内のすべてのリンクされたキャッシュからすべてのデータが削除されます。

Azure ロールベースのアクセス制御を使用して、この機能へのアクセスを管理してください。 許可されているユーザーのみに、すべてのキャッシュをフラッシュする権限を付与する必要があります。

次のステップ

Azure Cache for Redis の機能について