Azure Cache for Redis インスタンスを別のリージョンに移動する
この記事では、Azure Cache for Redis インスタンスを別の Azure リージョンに移動する方法について説明します。 さまざまな理由により、リソースを別のリージョンに移動する場合があります。
- 新しい Azure リージョンを利用するため。
- 特定のリージョンでのみ使用できる機能やサービスをデプロイするため。
- 内部ポリシーとガバナンスの要件を満たすため。
- キャパシティ プランニングの要件に対応するため。
オンプレミス、クラウドベースの VM、または別のホスティング サービスから Azure Cache for Redis に移行する場合は、「Azure Cache for Redis への移行」を参照することをお勧めします。
使用する Azure Cache for Redis のレベルによって、最適なオプションが決まります。
キャッシュ レベル | オプション |
---|---|
Premium | geo レプリケーション、新しいキャッシュの作成、2 つのキャッシュへのデュアル書き込み、RDB ファイルを使用したデータのエクスポートとインポート、またはプログラムによる移行 |
Basic または Standard | 新しいキャッシュの作成、2 つのキャッシュへのデュアル書き込み、またはプログラムによる移行 |
Enterprise または Enterprise Flash | 新しいキャッシュの作成、RDB ファイルを使用したデータのエクスポートとインポート、またはプログラムによる移行 |
2 つのキャッシュの間に geo レプリケーションを構成するには、次の前提条件を満たす必要があります。
- 両方のキャッシュが Premium レベルのキャッシュである。
- 両方のキャッシュが同じ Azure サブスクリプションに存在する。
- セカンダリ リンク キャッシュがプライマリ リンク キャッシュと同じキャッシュ サイズであるか、またはそれより大きいキャッシュ サイズである。
- 両方のキャッシュが既に存在し、実行中である。
キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目の Premium キャッシュ インスタンスを作成する必要があります。 両方のキャッシュが実行されたら、2 つのキャッシュ インスタンス間に geo レプリケーションを設定できます。
注意
Azure リージョン間のデータ転送は、標準の帯域幅レートで課金されます。
geo レプリケーションでは一部の機能がサポートされていません。
- ゾーン冗長は geo レプリケーションではサポートされていません。
- 永続化は geo レプリケーションではサポートされていません。
geo レプリケーションのサポート条件:
- クラスタリングは、両方のキャッシュでクラスタリングが有効になっており、かつ同じ数のシャードが存在する場合にサポートされます。
- 異なる VNet 内のキャッシュは、注意事項付きでサポートされています。 詳細については、「VNet 内の自分のキャッシュで geo レプリケーションを使用することはできますか」を参照してください。
geo レプリケーションを構成した後、次の制限が、リンク キャッシュ ペアに適用されます。
- セカンダリ リンク キャッシュは読み取り専用です。 そこから読み取ることはできますが、データを書き込むことはできません。
- geo セカンダリ インスタンスからの読み取りを選択した場合は、geo プライマリと geo セカンダリの間で完全データ同期 (geo プライマリまたは geo セカンダリのどちらかが更新されたときや、一部の再起動シナリオなど) が実行されているときは、geo プライマリと geo セカンダリの間の完全データ同期が完了するまで、geo セカンダリ インスタンスはそれに対する Redis 操作でエラーをスローします。
- geo セカンダリから読み取るアプリケーションは、geo セカンダリがこのようなエラーをスローするたびに geo プライマリにフォールバックするように構築する必要があります。
- リンクが追加される前にセカンダリ リンク キャッシュにあったデータはすべて削除されます。 ただし、geo レプリケーションが後で削除された場合、レプリケートされたデータはセカンダリ リンク キャッシュに残ります。
- キャッシュがリンクされている間は、どちらのキャッシュもスケーリングできません。
- キャッシュでクラスタリングが有効になっている場合は、シャードの数を変更できません。
- どちらのキャッシュでも永続化を有効にすることはできません。
- どちらのキャッシュからもエクスポートできます。
- セカンダリ リンク キャッシュにはインポートできません。
- キャッシュをリンク解除するまでは、リンクされたキャッシュ、またはそれらを含むリソース グループのどちらも削除できません。 詳しくは、「リンクされたキャッシュを削除しようとすると、操作が失敗するのはどうしてですか」をご覧ください。
- キャッシュが異なるリージョンに存在する場合、ネットワーク送信コストはリージョン間で移動されたデータに適用されます。 詳しくは、「Azure リージョン間でデータをレプリケートするコストはどれくらいですか」をご覧ください。
- フェールオーバーは自動ではありません。 プライマリ からセカンダリ インク キャッシュへのフェールオーバーを開始する必要があります。 クライアント アプリケーションをフェールオーバーする方法の詳細については、geo プライマリから geo セカンダリへのフェールオーバーの開始に関する記事を参照してください。
geo レプリケーションのために 2 つのキャッシュをリンクするには、まずプライマリ リンク キャッシュにするキャッシュのリソース メニューの [geo レプリケーション] を選択します。 次に、左側の [geo レプリケーション] で [キャッシュ レプリケーション リンクの追加] をクリックします。
[互換性のあるキャッシュ] の一覧で目的のセカンダリ キャッシュの名前を選択します。 そのセカンダリ キャッシュが一覧に表示されていない場合は、セカンダリ キャッシュの geo レプリケーションの前提条件が満たされていることを確認します。 キャッシュをリージョンでフィルター処理するには、マップ内のリージョンを選択して、 [互換性のあるキャッシュ] の一覧にあるキャッシュのみを表示します。
また、コンテキスト メニューを使用してリンク プロセスを開始したり、セカンダリ キャッシュに関する詳細を表示したりすることもできます。
[リンク] を選択して、2 つのキャッシュをリンクし、レプリケーション プロセスを開始します。
左側の [geo レプリケーション] を使用して、レプリケーション プロセスの進行状況を表示できます。
プライマリ キャッシュとセカンダリ キャッシュの両方の [概要] を使用して、左側にリンクの状態を表示することもできます。
レプリケーション プロセスが完了すると、 [リンクの状態] が「成功」に変わります。
プライマリ リンク キャッシュは、リンク プロセス中も引き続き使用できます。 セカンダリ リンク キャッシュは、リンク プロセスが完了するまで使用できません。
ターゲット リージョン内の新しいキャッシュに必要なすべてのデータが設定された後、2 つのキャッシュ間のリンクを削除し、元のインスタンスを削除します。
2 つのキャッシュ間のリンクを削除し、geo レプリケーションを停止するには、左側の [geo レプリケーション] で [キャッシュのリンク解除] を選択します。
リンク解除プロセスが完了すると、セカンダリ キャッシュが読み取りと書き込みの両方に対して使用可能になります。
注意
geo レプリケーション リンクが削除された場合も、プライマリ リンク キャッシュからレプリケートされたデータはセカンダリ キャッシュに残ります。
- 元のインスタンスを削除します。
- Azure サブスクリプション - 無料アカウントを作成する
移動中にデータを維持する必要がない場合、リージョンを移動する最も簡単な方法は、ターゲット リージョンに新しいキャッシュ インスタンスを作成し、アプリケーションを接続することです。 たとえば、Redis をデータベース レコードのルックアサイド キャッシュとして使用すると、キャッシュをゼロから簡単に再構築できます。
キャッシュを作成するには、Azure portal にサインインします。 ポータルのメニューで、[リソースの作成] を選びます。
[作業の開始] ペインの検索バーに「Azure Cache for Redis」と入力します。 検索結果で Azure Cache for Redis を見つけて、[作成] を選びます。
[新しい Redis Cache] ペインの [基本] タブで、以下のキャッシュの設定を構成します。
設定 アクション 説明 サブスクリプション Azure サブスクリプションを選択します。 Azure Cache for Redis の新しいインスタンスの作成に使うサブスクリプション。 リソース グループ リソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 キャッシュや他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。 DNS 名 一意の名前を入力します。 キャッシュ名は、数字、英字、ハイフンのみを含む 1 から 63 文字の文字列とする必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は \<DNS name>.redis.cache.windows.net
です。場所 場所を選択します。 キャッシュを使う他のサービスに近い Azure リージョン。 キャッシュ SKU SKU を選びます。 SKU によって、キャッシュに利用できるサイズ、パフォーマンス、機能のパラメーターが決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。 キャッシュ サイズ キャッシュ サイズを選びます。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。 [ネットワーク] タブを選ぶか、[次へ: ネットワーク] を選びます。
[ネットワーク] タブで、キャッシュに使う接続方法を選びます。
[詳細] タブを選ぶか、[次へ: 詳細] を選びます。
[詳細] ペインで、以下の情報に基づいて認証方法を確認または選択します。
- 既定では、新しい Basic、Standard、または Premium キャッシュでは、Microsoft Entra 認証が有効になり、アクセス キー認証が無効になります。
- Basic または Standard キャッシュの場合は、非 TLS ポートを選択できます。
- Standard および Premium キャッシュの場合は、可用性ゾーンを有効にすることを選択できます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。
- Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。
重要
最適なセキュリティのため、可能であれば、キャッシュに対する要求を認可するのに Microsoft Entra ID とマネージド ID を使うことをお勧めします。 Microsoft Entra ID とマネージド ID を使う認可は、共有アクセス キーの認可より、セキュリティと使いやすさの点で優れています。 キャッシュでのマネージド ID の使用について詳しくは、キャッシュ認証への Microsoft Entra ID の使用に関する記事をご覧ください。
(省略可能) [タグ] タブを選ぶか、[次へ: タグ] を選びます。
(省略可能) キャッシュ リソースを分類する場合は、[タグ] タブでタグの名前と値を入力します。
[確認および作成] ボタンを選択します。
[確認と作成] タブでは、Azure によって構成が自動的に検証されます。
緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。
新しいキャッシュのデプロイは数分で完了します。 デプロイの進行状況は、Azure Cache for Redis の [概要] ペインで監視できます。 [状態] に [実行中] と表示されると、キャッシュの使用の準備が完了しています。
最後に、新しいインスタンスが使用されるようにアプリケーションを更新します。
ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。
オープンソースの Redis は、キャッシュのメモリ内データセットのスナップショットを取得してファイルに保存するための標準的なメカニズムが定義されます。 この (RDB と呼ばれる) ファイルは、別の Redis キャッシュで読み取ることもできます。 Azure Cache for Redis の Premium と Enterprise では、RDB ファイルを使用したキャッシュ インスタンスへのデータのインポートがサポートされています。 RDB ファイルを使用すると、既存のキャッシュから Azure Cache for Redis にデータを転送できます。
重要
RDB ファイルの形式は、Redis のバージョン間で変更されることがあるため、下位互換性が確保されない場合があります。 エクスポートするキャッシュの Redis のバージョンは、新しいキャッシュ インスタンスのバージョンと同じかそれより前である必要があります。
- 両方のキャッシュが Premium レベルまたは Enterprise レベルのキャッシュである。
- 2 番目のキャッシュは、元のキャッシュと同じキャッシュ サイズまたはそれよりも大きいキャッシュ サイズのどちらかです。
- エクスポートするキャッシュの Redis のバージョンは、新しいキャッシュ インスタンスのバージョンと同じかそれより前である必要があります。
キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目の Premium キャッシュ インスタンスまたは 2 番目の Enterprise キャッシュ インスタンスを作成する必要があります。
Azure Cache for Redis でデータをインポートまたはエクスポートする方法の詳細については、 「Azure Cache for Redis でデータをインポートまたはエクスポートする」を参照してください。
新しいキャッシュ インスタンスが使用されるようにアプリケーションを更新します。
インポート操作の進行状況を監視するには、Azure Portal からの通知を確認するか、監査ログのイベントを確認します。
ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。
キャッシュ間で直接データを移動するのではなく、アプリケーションを使用して、既存のキャッシュと設定中の新しいものの両方にデータを書き込むことができます。 最初に、アプリケーションによって既存のキャッシュからデータが読み取られます。 新しいキャッシュに必要なデータがある場合は、そのキャッシュにアプリケーションを切り替え、古いキャッシュを削除します。 たとえば、Redis をセッション ストアとして使用し、アプリケーション セッションが 7 日間有効であるとします。 1 週間で 2 つのキャッシュに書き込むと、新しいキャッシュに期限切れではないセッション情報がすべて含まれていることがわかります。 その時点以降は、データが失われることを心配せずに安全に利用できます。
- 2 番目のキャッシュは、元のキャッシュと同じキャッシュ サイズまたはそれよりも大きいキャッシュ サイズのどちらかです。
キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目のキャッシュ インスタンスを作成する必要があります。
このオプションを実装する一般的な手順は、次のとおりです。
新しいインスタンスと元のインスタンスの両方に書き込まれるようにアプリケーション コードを変更します。
新しいインスタンスに十分なデータが入力されるまで、元のインスタンスからのデータの読み取りを続行します。
新しいインスタンスからの読み取りと書き込みのみが行われるようにアプリケーション コードを更新します。
ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。
プログラムで既存のキャッシュからデータを読み込み、Azure Cache for Redis に書き込むことで、カスタム移行プロセスを作成できます。 このオープンソース ツールを使用すると、1 つの Azure Cache for Redis インスタンスから別の Azure Cache リージョン内にある別のインスタンスにデータをコピーできます。 コンパイル済みのバージョンも入手できます。 また、独自の移行ツールを作成する際に役立つガイドとなるソース コードが見つかることもあります。
注意
このツールは、正式には Microsoft でサポートされていません。
- 2 番目のキャッシュは、元のキャッシュと同じキャッシュ サイズまたはそれよりも大きいキャッシュ サイズのどちらかです。
- 既存のキャッシュが配置されているリージョンで VM を作成します。 データセットが大きい場合は、コピー時間が削減されるように、比較的強力な VM を選択してください。
- キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目のキャッシュ インスタンスを作成する必要があります。
既存のキャッシュがあるリージョンに VM を作成し、目的のリージョンに新しいキャッシュを作成した後、このオプションを実装する一般的な手順は次のとおりです。
新しいキャッシュからデータをフラッシュして、空になったことを確認します。 このステップは、コピー ツール自体ではターゲット キャッシュの既存のキーが上書きされないため必須です。
重要
絶対にソース キャッシュからフラッシュしないでください。
上記のオープンソース ツールなどのアプリケーションを使用して、ソース キャッシュからターゲットへのデータのコピーを自動化します。 データセットのサイズによっては、コピー処理が完了するまでに時間がかかる場合があることに注意してください。
ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。
Azure Cache for Redis の機能について