この記事では、Azure Cache for Redis インスタンスから Azure Managed Redis インスタンスに移行する方法について説明します。
[前提条件]
- Azure サブスクリプション - 無料アカウントを作成する
- 任意の Azure Cache for Redis のインスタンス
Azure Cache for Redis と Azure Managed Redis の機能の比較
機能の説明 | ベーシック | スタンダード | プレミアム | バランスが取れている | メモリ最適化 | コンピューティング最適化 |
---|---|---|---|---|---|---|
可用性 | なし | 99.9% | 99.9% | なし | なし | なし |
転送中のデータの暗号化 | イエス | イエス | イエス | イエス | イエス | イエス |
ネットワークの分離 | イエス | イエス | イエス | イエス | イエス | イエス |
スケールアップ/スケールアウト | イエス | イエス | イエス | イエス | イエス | イエス |
スケールダウン/スケールイン | イエス | イエス | イエス | いいえ | いいえ | いいえ |
OSS クラスタリング | いいえ | いいえ | イエス | イエス | イエス | イエス |
データの永続化 | いいえ | いいえ | イエス | イエス | イエス | イエス |
ゾーン冗長性 | いいえ | はい (プレビュー) | イエス | イエス | イエス | イエス |
ジオレプリケーション | いいえ | いいえ | はい (パッシブ) | はい (アクティブ) | はい (アクティブ) | はい (アクティブ) |
接続監査ログ | いいえ | いいえ | イエス | 可 (イベントベース) | 可 (イベントベース) | 可 (イベントベース) |
Redis モジュール | いいえ | いいえ | いいえ | イエス | イエス | イエス |
インポート/エクスポート | いいえ | いいえ | イエス | イエス | イエス | イエス |
再起動 | イエス | イエス | イエス | いいえ | いいえ | いいえ |
スケジュールされた更新 | イエス | イエス | イエス | いいえ | いいえ | いいえ |
Microsoft Entra ID 認証 | イエス | イエス | イエス | イエス | イエス | イエス |
Microsoft Entra ID RBAC | イエス | イエス | イエス | いいえ | いいえ | いいえ |
キースペース通知 | イエス | イエス | イエス | いいえ | いいえ | いいえ |
非高可用性 | なし | いいえ | いいえ | イエス | イエス | イエス |
前のマッピングで説明されていないその他の違いを次に示します。 次のクライアント アプリケーションの変更を検討してください。
機能の説明 | Azure Cache for Redis (アジュール・キャッシュ・フォー・レディス) | Azure Managed Redis |
---|---|---|
DNS サフィックス (PROD クラウドの場合のみ) | .redis.cache.windows.net |
<region>.redis.azure.net |
TLS ポート | 6380 | 1万 |
非 TLS ポート | 6379 | サポートされていません |
個々のノードの TLS ポート | 130XX | 85xx |
個々のノードの非 TLS ポート | 150XX | サポートされていません |
クラスター化のサポート | OSS クラスタリング モード | OSS および Enterprise クラスター モード |
サポートされていないコマンド | サポートされていないコマンド | マルチキー コマンド |
リージョン別の提供状況 | すべての Azure リージョン | * このセクションの後のリージョンの一覧を参照してください。 |
Redis のバージョン | 6 | 7.4 |
サポートされている TLS バージョン | 1.2 および 1.3 | 1.2 および 1.3 |
Azure Managed Redis のリージョン別の提供状況
Azure Managed Redis は現在、次のリージョンでサポートされています。 この一覧は頻繁に更新されます。 最終的に、Azure Managed Redis は Azure のすべてのリージョンでサポートされます。 サポートが必要なリージョンで要求を行うには、販売担当者と連携してください。
アメリカ
- ブラジル南部
- ブラジル南東部
- カナダ中部
- カナダ東部
- 米国中部
- 米国東部
- 米国東部 2
- メキシコ中部
- 米国中北部
- 米国中南部
- 米国中西部
- 米国西部
- 米国西部 2
- 米国西部 3
ヨーロッパ
- フランス南部
- ドイツ北部
- ドイツ中西部
- イタリア北部
- ノルウェー東部
- ノルウェー西部
- スペイン中部
- スウェーデン中部
- スウェーデン南部
- スイス北部
- スイス西部
- 英国南部
- 英国西部
- 西ヨーロッパ
中東
- イスラエル中部
- UAEセントラル
- アラブ首長国連邦の北部地域
アフリカ
- 南アフリカ北部
- 南アフリカ西部
アジア太平洋
- オーストラリア中部
- オーストラリア中部 2
- オーストラリア東部
- オーストラリア南東部
- インド中部
- 東アジア
- インドネシア中部
- 東日本
- 西日本
- JIO インド中部
- Jio インド西部
- 韓国中部
- 韓国南部
- 東南アジア
- インド南部
- 台湾北部
- 台湾北西部
Azure Cache for Redis インスタンスを Azure Managed Redis に移行する
注
キャッシュを使用するために、必要に応じて、アプリケーションの残りの部分と関連する Azure リソースを必ず更新してください。
Azure portal から移行するキャッシュを選択する
非クラスター化 Azure Cache for Redis Basic/Standard/Premium
注
Basic SKU の移行に Azure Managed Redis の非高可用性オプションを使用する
Azure Cache for Redis (アジュール・キャッシュ・フォー・レディス) | Azure Managed Redis | 追加メモリ (%) |
---|---|---|
ベーシック/スタンダード - C0 | バランス - B0 | 50 |
Basic/Standard - C1 | バランス - B1 | 0 |
Basic/Standard - C2 | バランス - B3 | 十七 |
ベーシック/スタンダード - C3 | バランス - B5 | 0 |
ベーシック/スタンダード - C4 | メモリ最適化 – M10* | -8 |
Basic/Standard – C4 | メモリ最適化 – M20** | 46 |
Basic/Standard - C5 | メモリ最適化 – M20* | -8 |
ベーシック/スタンダード – C5 | メモリ最適化 – M50** | 五十七 |
基本/標準 - C6 | メモリ最適化 - M50 | 12 |
Premium - P1 | バランス - B5 | 0 |
Premium - P2 | バランス - B10* | -8 |
Premium - P2 | バランス - B20** | 46 |
プレミアム - P3 | バランス - B20* | -8 |
プレミアム - P3 | バランス - B50** | 五十七 |
プレミアム - P4 | バランス - B50 | 12 |
Premium - P5 | バランス - B100 | 0 |
- *このオプションは、コスト効率に適しています。 このオプションを選択するには、過去 1 か月間に使用されたメモリの合計のピークが、推奨される Azure Managed Redis メモリよりも小さいことを確認してください。
- ** このオプションは、豊富なメモリ消費に適しています。
クラスター化 Azure Cache for Redis Premium
- シャード クラスターの場合は、同等の合計メモリを持つメモリ最適化レベルを選びます。
- 複数の読み取りレプリカを持つクラスターの場合は、同等の合計メモリを持つコンピューティング最適化レベルをプライマリ レプリカとして選びます。
移行オプション
クライアント アプリケーションは、さまざまなクラスタリング モードとエンドポイントを持つ Azure Managed Redis インスタンスを使用できる必要があります。 Azure Cache for Redis と Azure Managed Redis は互換性があるため、ほとんどのシナリオで接続構成以外のアプリケーション コードの変更は必要ありません。
詳細については、以下をご覧ください。
Azure Cache for Redis を Azure Managed Redis に移行するためのオプション
選択肢 | 利点 | 欠点 |
---|---|---|
新しいキャッシュを作成する | 実装が非常に簡単です。 | 新しいキャッシュにデータを再入力する必要があります。多くのアプリケーションで動作しない可能性があります。 |
RDB ファイルを使用してデータをエクスポートおよびインポートする | 一般に、Redis キャッシュとの互換性があります。 | RDB ファイルの生成後に既存のキャッシュに書き込まれると、一部のデータが失われる可能性があります。 |
2 つのキャッシュにデータを二重に書き込む | データの損失やダウンタイムはありません 既存のキャッシュが中断されない操作です。 新しいキャッシュのテストが簡単になります。 | 長期間にわたって 2 つのキャッシュが必要です。 |
プログラムでデータを移行する | データの移動方法を完全に制御できます。 | カスタム コードが必要です。 |
新しい Azure Cache for Redis を作成する
このアプローチは、技術的には移行ではありません。 データの損失が気にならない場合、Azure Managed Redis レベルに移行する最も簡単な方法は、新しいキャッシュ インスタンスを作成し、それにアプリケーションを接続することです。 たとえば、Redis をデータベース レコードのルックアサイド キャッシュとして使用すると、キャッシュをゼロから簡単に再構築できます。 このオプションを実装する一般的な手順は、次のとおりです。
- 新しい Azure Managed Redis インスタンスを作成します。
- 新しいインスタンスが使用されるようにアプリケーションを更新します。
- 古い Azure Cache for Redis インスタンスを削除します。
データを RDB ファイルにエクスポートし、Azure Managed Redis にインポートする
このオプションは、Premium レベルのキャッシュにのみ適用されます。 オープンソースの Redis は、キャッシュのメモリ内データセットのスナップショットを取得してファイルに保存するための標準的なメカニズムが定義されます。 別の Redis Cache が、エクスポートされた RDB ファイルを読み取ることができます。 Azure Cache for Redis Premium レベルは、キャッシュ インスタンスからデータへの RDB ファイル経由でのエクスポートをサポートします。 RDB ファイルを使用して、既存の Azure Cache for Redis インスタンスから Azure Managed Redis インスタンスにデータを転送できます。
このオプションを実装する一般的な手順は、次のとおりです。
- 既存の Azure Cache for Redis インスタンスと同じ (またはより大きい) サイズの新しい Azure Managed Redis インスタンスを作成します。
- 次のエクスポート手順または PowerShell の Export コマンドレットを使用して、既存の Azure Cache for Redis インスタンスから RDB ファイルをエクスポートします
- 次のインポート手順または PowerShell インポート コマンドレットを使用して、RDB ファイルを新しい Azure Managed Redis インスタンスにインポートします
- 新しい Azure Managed Redis インスタンスの接続文字列を使用するようにアプリケーションを更新します。
データのエクスポート:
az redis export --resource-group <ResourceGroupName> --name <Azure Cache for Redis instance name> --prefix <BlobPrefix> --container <ContainerName> --file-format <FileFormat>
データのインポート:
az redis import --resource-group <ResourceGroupName> --name <Azure Managed Redis instance name> --files <BlobUris>
ResourceGroupName、CacheName、BlobPrefix、ContainerName、および FileFormat を具体的な値に置き換えます。 ファイル形式には、RDB と AOF のいずれかを指定できます。
移行期間内に 2 つの Redis キャッシュに同時に書き込む
キャッシュ間で直接データを移動するのではなく、アプリケーションを使用して、既存のキャッシュと設定中の新しいものの両方にデータを書き込むことができます。 アプリケーションは最初は、引き続き既存のキャッシュからデータを読み取ります。 新しいキャッシュに必要なデータがある場合は、そのキャッシュにアプリケーションを切り替え、古いキャッシュを削除します。 たとえば、Redis をセッション ストアとして使用し、アプリケーション セッションが 7 日間有効であるとします。 1 週間で 2 つのキャッシュに書き込まれた後は、期限切れではないセッション情報がすべて新しいキャッシュに含まれていると確信できるようになります。 その時点以降は、データが失われることを心配せずに安全に利用できます。
このオプションを実装する一般的な手順は、次のとおりです。
- 既存の Azure Cache for Redis インスタンスと同じ (またはより大きい) サイズの新しい Azure Managed Redis インスタンスを作成します。
- 新しいインスタンスと元のインスタンスの両方に書き込まれるようにアプリケーション コードを変更します。
- 新しいインスタンスに十分なデータが入力されるまで、元のインスタンスからのデータの読み取りを続行します。
- 新しいインスタンスからの読み取りと書き込みのみが行われるようにアプリケーション コードを更新します。
- 元のインスタンスを削除します。
プログラムで移行する
プログラムで既存の Azure Cache for Redis インスタンスからデータを読み込み、Azure Managed Redis インスタンスに書き込むことで、カスタム移行プロセスを作成します。 試すことができるオープン ソース ツールには次の 2 つがあります。
-
Redis-copy
- このオープンソース ツールを使用すると、別の Azure Cache for Redis インスタンスにデータをコピーできます。 このツールは、さまざまな Azure Cache for Redis リージョンのキャッシュ インスタンス間でデータを移動する場合に役立ちます。 コンパイル済みのバージョンも入手できます。 独自の移行ツールの作成に役立つガイドになるソース コードも見つけることができます。
-
暴動
- RIOT は、Redis コミュニティによってテストされたもう 1 つの人気がある移行ツールです。 これは、Redis 内外からデータを取得するのに役立つコマンド ライン ユーティリティです。
注
このツールは、正式には Microsoft でサポートされていません。
このオプションを実装する一般的な手順は、次のとおりです。
- 既存のキャッシュが配置されているリージョンで VM を作成します。 データセットが大きい場合は、コピー時間が削減されるように、比較的強力な VM を選択してください。
- 新しい Azure Managed Redis インスタンスを作成します。
- 新しいキャッシュからデータをフラッシュして、空になったことを確認します。 このステップは、コピー ツール自体ではターゲット キャッシュの既存のキーが上書きされないため必須です。 重要: ソース キャッシュからのフラッシュは "しないで" ください。
- 前述のオープンソース ツールなどのアプリケーションを使用して、ソース キャッシュからターゲットへのデータのコピーを自動化します。 データセットのサイズによっては、コピー処理が完了するまでに時間がかかる場合があることに注意してください。