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 レプリケーション グループを作成または参加する
新しい Azure Cache for Redis リソースを作成するときは、[詳細設定] タブを選択します。クラスタリング ポリシーを含むフォームの最初の部分に入力します。 クラスタリング ポリシーの選択について詳しくは、「クラスタリング」をご覧ください。
[構成] を選択して [アクティブ geo レプリケーション] を設定します。
最初のキャッシュ インスタンスに対して新しいレプリケーション グループを作成します。 または、リストから既存のものを選択します。
[構成] を選択して完了します。
最初のキャッシュが正常に作成されるまで待ちます。 完了すると、アクティブ geo レプリケーションに対して [構成済み] が設定されたことが表示されます。 Geo レプリケーション グループ内のキャッシュ インスタンスごとに、上記の手順を繰り返します。
アクティブ geo レプリケーション グループから削除する
アクティブ geo レプリケーション グループからキャッシュ インスタンスを削除するには、そのインスタンスを削除します。 その後、残りのインスタンスは自動的に再構成されます。
リージョンが停止した場合に強制的にリンク解除する
リージョンの停止によってレプリケーション グループ内のキャッシュの 1 つが使用できない場合、使用できないキャッシュをレプリケーション グループから強制的に削除できます。 キャッシュに [強制的にリンクを解除する] を適用すると、強制的なリンク解除後にそのキャッシュに書き込まれたデータをレプリケーション グループに同期することはできなくなります。
使用できないキャッシュに共有されていないメタデータの格納を、レプリケーション グループ内の残りのキャッシュが開始するため、使用できないキャッシュは削除する必要があります。 これが起こると、レプリケーション グループ内の使用可能なキャッシュでメモリ不足になる可能性があります。
Azure portal に移動し、引き続き使用可能なレプリケーション グループ内のいずれかのキャッシュを選択します。
設定は、左側の [リソース] メニューの [アクティブ geo レプリケーション] を選択すると作業ウィンドウに表示されます。
チェック ボックスをオンにして、強制的にリンク解除する必要があるキャッシュを選択します。
[強制的にリンク解除] を選択し、[OK] を選択して確定します。
影響を受けるリージョンの可用性が復元されたら、影響を受けているキャッシュを削除し、再作成してレプリケーション グループに戻す必要があります。
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
パラメーターを使用して Cache1 と Cache2 の両方を一覧表示する必要があります。
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 レプリケーション グループにキャッシュを追加します。 コマンドを実行すると、Cache1 と Cache2 という 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
パラメーターを使用して Cache1 と Cache2 の両方を一覧表示する必要があります。
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 レプリケーション] 作業ウィンドウの上部にある [キャッシュのフラッシュ] ボタンを使用します。
Azure CLI または PowerShell を使用してキャッシュをフラッシュする
Azure CLI と PowerShell を使用して、フラッシュ操作をトリガーすることもできます。 Azure CLI の使用の詳細については、「az redisenterprise database flush」を参照してください。 PowerShell の使用の詳細については、「Invoke-AzRedisEnterpriseCacheDatabaseFlush」を参照してください。
重要
[キャッシュのフラッシュ] 機能を使用する場合は注意してください。 ボタンを選択すると、現在のキャッシュと geo レプリケーション グループ内のすべてのリンクされたキャッシュからすべてのデータが削除されます。
Azure ロールベースのアクセス制御を使用して、この機能へのアクセスを管理してください。 許可されているユーザーのみに、すべてのキャッシュをフラッシュする権限を付与する必要があります。
次のステップ
Azure Cache for Redis の機能について