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 ファイルを使用したデータのエクスポートとインポート、またはプログラムによる移行

パッシブ geo レプリケーション (Premium)

前提条件

2 つのキャッシュの間に geo レプリケーションを構成するには、次の前提条件を満たす必要があります。

  • 両方のキャッシュが Premium レベルのキャッシュである。
  • 両方のキャッシュが同じ Azure サブスクリプションに存在する。
  • セカンダリ リンク キャッシュがプライマリ リンク キャッシュと同じキャッシュ サイズであるか、またはそれより大きいキャッシュ サイズである。
  • 両方のキャッシュが既に存在し、実行中である。

準備

キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目の Premium キャッシュ インスタンスを作成する必要があります。 両方のキャッシュが実行されたら、2 つのキャッシュ インスタンス間に geo レプリケーションを設定できます。

Note

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

geo レプリケーションでは一部の機能がサポートされていません。

  • ゾーン冗長は geo レプリケーションではサポートされていません。
  • 永続化は geo レプリケーションではサポートされていません。

geo レプリケーションのサポート条件:

geo レプリケーションを構成した後、次の制限が、リンク キャッシュ ペアに適用されます。

  • セカンダリ リンク キャッシュは読み取り専用です。 そこから読み取ることはできますが、データを書き込むことはできません。
    • geo セカンダリ インスタンスからの読み取りを選択した場合は、geo プライマリと geo セカンダリの間で完全データ同期 (geo プライマリまたは geo セカンダリのどちらかが更新されたときや、一部の再起動シナリオなど) が実行されているときは、geo プライマリと geo セカンダリの間の完全データ同期が完了するまで、geo セカンダリ インスタンスはそれに対する Redis 操作でエラーをスローします。
    • geo セカンダリから読み取るアプリケーションは、geo セカンダリがこのようなエラーをスローするたびに geo プライマリにフォールバックするように構築する必要があります。
  • リンクが追加される前にセカンダリ リンク キャッシュにあったデータはすべて削除されます。 ただし、geo レプリケーションが後で削除された場合、レプリケートされたデータはセカンダリ リンク キャッシュに残ります。
  • キャッシュがリンクされている間は、どちらのキャッシュもスケーリングできません。
  • キャッシュでクラスタリングが有効になっている場合は、シャードの数を変更できません。
  • どちらのキャッシュでも永続化を有効にすることはできません。
  • どちらのキャッシュからもエクスポートできます。
  • セカンダリ リンク キャッシュにはインポートできません。
  • キャッシュをリンク解除するまでは、リンクされたキャッシュ、またはそれらを含むリソース グループのどちらも削除できません。 詳しくは、「リンクされたキャッシュを削除しようとすると、操作が失敗するのはどうしてですか」をご覧ください。
  • キャッシュが異なるリージョンに存在する場合、ネットワーク送信コストはリージョン間で移動されたデータに適用されます。 詳しくは、「Azure リージョン間でデータをレプリケートするコストはどれくらいですか」をご覧ください。
  • フェールオーバーは自動ではありません。 プライマリ からセカンダリ インク キャッシュへのフェールオーバーを開始する必要があります。 クライアント アプリケーションをフェールオーバーする方法の詳細については、geo プライマリから geo セカンダリへのフェールオーバーの開始に関する記事を参照してください。

詳細ビュー

  1. geo レプリケーションのために 2 つのキャッシュをリンクするには、まずプライマリ リンク キャッシュにするキャッシュのリソース メニューの [geo レプリケーション] を選択します。 次に、左側の [geo レプリケーション][キャッシュ レプリケーション リンクの追加] をクリックします。

    Screenshot showing the cache's Geo-replication menu.

  2. [互換性のあるキャッシュ] の一覧で目的のセカンダリ キャッシュの名前を選択します。 そのセカンダリ キャッシュが一覧に表示されていない場合は、セカンダリ キャッシュの geo レプリケーションの前提条件が満たされていることを確認します。 キャッシュをリージョンでフィルター処理するには、マップ内のリージョンを選択して、 [互換性のあるキャッシュ] の一覧にあるキャッシュのみを表示します。

    Screenshot showing compatible caches for linking with geo-replication.

    また、コンテキスト メニューを使用してリンク プロセスを開始したり、セカンダリ キャッシュに関する詳細を表示したりすることもできます。

    Screenshot showing the Geo-replication context menu.

  3. [リンク] を選択して、2 つのキャッシュをリンクし、レプリケーション プロセスを開始します。

    Screenshot showing how to link caches for geo-replication.

確認

  1. 左側の [geo レプリケーション] を使用して、レプリケーション プロセスの進行状況を表示できます。

    Screenshot showing the current Linking status.

    プライマリ キャッシュとセカンダリ キャッシュの両方の [概要] を使用して、左側にリンクの状態を表示することもできます。

    Screenshot that highlights how to view the linking status for the primary and secondary caches.

    レプリケーション プロセスが完了すると、 [リンクの状態] が「成功」に変わります。

    Screenshot showing cache linking status as Succeeded.

    プライマリ リンク キャッシュは、リンク プロセス中も引き続き使用できます。 セカンダリ リンク キャッシュは、リンク プロセスが完了するまで使用できません。

ソース リソースをクリーンアップする

ターゲット リージョン内の新しいキャッシュに必要なすべてのデータが設定された後、2 つのキャッシュ間のリンクを削除し、元のインスタンスを削除します。

  1. 2 つのキャッシュ間のリンクを削除し、geo レプリケーションを停止するには、左側の [geo レプリケーション][キャッシュのリンク解除] を選択します。

    Screenshot showing how to unlink caches.

    リンク解除プロセスが完了すると、セカンダリ キャッシュが読み取りと書き込みの両方に対して使用可能になります。

Note

geo レプリケーション リンクが削除された場合も、プライマリ リンク キャッシュからレプリケートされたデータはセカンダリ キャッシュに残ります。

  1. 元のインスタンスを削除します。

新しいキャッシュを作成する (すべてのレベル)

前提条件

準備

移動中にデータを維持する必要がない場合、リージョンを移動する最も簡単な方法は、ターゲット リージョンに新しいキャッシュ インスタンスを作成し、アプリケーションを接続することです。 たとえば、Redis をデータベース レコードのルックアサイド キャッシュとして使用すると、キャッシュをゼロから簡単に再構築できます。

詳細ビュー

  1. キャッシュを作成するには、Azure portal にサインインし、 [リソースの作成] を選択します。

    Create a resource is highlighted in the left navigation pane.

  2. [新規] ページで、 [データベース] を選択し、 [Azure Cache for Redis] を選択します。

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. [新規 Redis Cache] ページで、新しいキャッシュの設定を構成します。

    設定 値を選択する 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この新しい Azure Cache for Redis インスタンスが作成されるサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    DNS 名 一意の名前を入力します。 キャッシュ名は 1 から 63 文字の文字列で、数字、英字、ハイフンのみを使用する必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は、<DNS name>.redis.cache.windows.net です。
    場所 ドロップ ダウンで場所を選択します。 キャッシュを使用する他のサービスの近くのリージョンを選択します。
    キャッシュの種類 ドロップ ダウンでレベルを選択します。 レベルによって、キャッシュに使用できるのサイズ、パフォーマンス、および機能が決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
  4. [ネットワーク] タブを選択するか、ページの下部にある [ネットワーク] ボタンを選択します。

  5. [ネットワーク] タブで、接続方法を選択します。

  6. [次へ: 詳細] タブを選択するか、ページの下部にある [次へ: 詳細] ボタンを選択して、[詳細] タブを表示します。

    Screenshot showing the Advanced tab in the working pane and the available option to select.

    • Basic または Standard キャッシュを利用する場合は、非 TLS ポートの選択をオンにします。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
  7. ページの下部にある [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンを選択します。

  8. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。

  9. [Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。

  10. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

キャッシュが作成されるまで、しばらく時間がかかります。 Azure Cache for Redis の [概要] ページで進行状況を監視できます。 [状態] に "実行中" と表示されている場合は、キャッシュを使用する準備ができています。

最後に、新しいインスタンスが使用されるようにアプリケーションを更新します。

ソース リソースをクリーンアップする

ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。

RDB ファイルを使用したデータのエクスポートとインポート (Premium、Enterprise、Enterprise Flash)

オープンソースの 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 キャッシュ インスタンスを作成する必要があります。

詳細ビュー

  1. Azure Cache for Redis でデータをインポートまたはエクスポートする方法の詳細については、 「Azure Cache for Redis でデータをインポートまたはエクスポートする」を参照してください。

  2. 新しいキャッシュ インスタンスが使用されるようにアプリケーションを更新します。

確認

インポート操作の進行状況を監視するには、Azure Portal からの通知を確認するか、監査ログのイベントを確認します。

ソース リソースをクリーンアップする

ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。

2 つのキャッシュへのデュアル書き込み (Basic、Standard、Premium)

キャッシュ間で直接データを移動するのではなく、アプリケーションを使用して、既存のキャッシュと設定中の新しいものの両方にデータを書き込むことができます。 最初に、アプリケーションによって既存のキャッシュからデータが読み取られます。 新しいキャッシュに必要なデータがある場合は、そのキャッシュにアプリケーションを切り替え、古いキャッシュを削除します。 たとえば、Redis をセッション ストアとして使用し、アプリケーション セッションが 7 日間有効であるとします。 1 週間で 2 つのキャッシュに書き込むと、新しいキャッシュに期限切れではないセッション情報がすべて含まれていることがわかります。 その時点以降は、データが失われることを心配せずに安全に利用できます。

前提条件

  • 2 番目のキャッシュは、元のキャッシュと同じキャッシュ サイズまたはそれよりも大きいキャッシュ サイズのどちらかです。

準備

キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目のキャッシュ インスタンスを作成する必要があります。

詳細ビュー

このオプションを実装する一般的な手順は、次のとおりです。

  1. 新しいインスタンスと元のインスタンスの両方に書き込まれるようにアプリケーション コードを変更します。

  2. 新しいインスタンスに十分なデータが入力されるまで、元のインスタンスからのデータの読み取りを続行します。

  3. 新しいインスタンスからの読み取りと書き込みのみが行われるようにアプリケーション コードを更新します。

ソース リソースをクリーンアップする

ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。

プログラムで移行する (すべての層)

プログラムで既存のキャッシュからデータを読み込み、Azure Cache for Redis に書き込むことで、カスタム移行プロセスを作成できます。 このオープンソース ツールを使用すると、1 つの Azure Cache for Redis インスタンスから別の Azure Cache リージョン内にある別のインスタンスにデータをコピーできます。 コンパイル済みのバージョンも入手できます。 また、独自の移行ツールを作成する際に役立つガイドとなるソース コードが見つかることもあります。

Note

このツールは、正式には Microsoft でサポートされていません。

前提条件

  • 2 番目のキャッシュは、元のキャッシュと同じキャッシュ サイズまたはそれよりも大きいキャッシュ サイズのどちらかです。

準備

  • 既存のキャッシュが配置されているリージョンで VM を作成します。 データセットが大きい場合は、コピー時間が削減されるように、比較的強力な VM を選択してください。
  • キャッシュ インスタンスを別のリージョンに移動するには、目的のリージョンに 2 番目のキャッシュ インスタンスを作成する必要があります。

詳細ビュー

既存のキャッシュがあるリージョンに VM を作成し、目的のリージョンに新しいキャッシュを作成した後、このオプションを実装する一般的な手順は次のとおりです。

  1. 新しいキャッシュからデータをフラッシュして、空になったことを確認します。 このステップは、コピー ツール自体ではターゲット キャッシュの既存のキーが上書きされないため必須です。

    重要

    絶対にソース キャッシュからフラッシュしないでください。

  2. 上記のオープンソース ツールなどのアプリケーションを使用して、ソース キャッシュからターゲットへのデータのコピーを自動化します。 データセットのサイズによっては、コピー処理が完了するまでに時間がかかる場合があることに注意してください。

ソース リソースをクリーンアップする

ターゲット リージョンで新しいキャッシュが実行されたら、元のインスタンスを削除します。

次のステップ

Azure Cache for Redis の機能について