Azure In-Role Cache の高可用性

重要

Microsoft では、すべての新しい開発で Azure Redis Cache を使用することをお勧めします。 Azure Cache オファリングの選択に関する最新のドキュメントとガイダンスについては、自分に適した Azure Cache オファリングを参照してください。

In-Role キャッシュを使用すると、キャッシュされたオブジェクトの高可用性を維持できます。 この機能を必要とする各キャッシュの高可用性を有効にするには、Azure ロールのプロパティを使用します。 コードの変更は必要ありません。負荷に対して必要なメモリ容量を再計算するだけで済みます。 これを行うには、容量計画スプレッドシートで高可用性設定を有効にします。 詳細については、「 Azure In-Role Cache の容量計画に関する考慮事項」を参照してください。

高可用性により、キャッシュされたオブジェクトはハードウェア障害に対する耐久性を高めるために、同じクラウド サービス環境内でレプリケートされます。 また、可用性を高めるため、セカンダリ コピーが異なる障害ドメインおよびアップグレード ドメインに配置されます。 なんらかの理由で、キャッシュ クラスターの 1 つの仮想マシンがダウンした場合、キャッシュ クラスターはセカンダリ コピーを使用してデータ損失を防ぐことができます。

アーキテクチャ

高可用性には、関連付けされたロールの複数のインスタンスが必要です。 別の障害ドメインおよびアップグレード ドメインに属する別のインスタンスで、キャッシュされた項目のセカンダリ コピーが維持されます。 こうすることで、1 つのインスタンスがダウンした場合、バックアップ コピーが別のインスタンスに存在するようになります。 このシナリオでは、セカンダリ コピーがプライマリ コピーに昇格します。 次に、新しいセカンダリ コピーが残りのいずれかのインスタンスで作成され、高可用性が維持されます。

高可用性を実装するために、すべてのキャッシュ書き込みがプライマリ コピーとセカンダリ コピーの両方に行われます。

注意

高可用性を無効にした場合でも、キャッシュ クラスターは、再起動など、計画されたシャットダウン中にデータを保持しようとします。 このシナリオでは、キャッシュ クラスターはキャッシュされた項目をシャットダウン前に他のサーバーに転送しようとします。 ただし、データ転送の量によっては、この正常なシャットダウンが完了する保証はありません。 また、高可用性とは異なり、予期しないシャットダウン中はデータは保持されません。

考慮事項

In-Role Cache をホストするロールは、少なくとも 4 つのインスタンスで実行するように構成する必要があります。 実行中の 2 つまたは 3 つのインスタンスに対して構成されたロールで高可用性を有効にすることはできますが、次の 2 つの理由により、推奨されません。

  • Azure では、定期的なメンテナンスのために仮想マシンが再起動されることがあります。 アプリケーションのインプレース更新でも仮想マシンがオフラインになります。 どちらのシナリオでも、少なくとも 3 台のサーバーをキャッシュ クラスターに配置することをお勧めします。 こうすることで、サーバーの 1 台がダウンしたときでも、キャッシュされたオブジェクトのプライマリ コピーおよびセカンダリ コピーを作成するために、3 台のサーバーがまだキャッシュ クラスターに存在します。 稼働しているサーバーが 1 台だけの場合、キャッシュにアクセスできますが、高可用性は維持できません。

  • 3 台のサーバーでも前記の要件を満たしますが、4 台のサーバーをお勧めします。 これにより、障害ドメイン間でより均等にプライマリ コピーを分散できます。 また、キャッシュ クラスター間のデータの分散が向上し、その結果、ネットワーク トラフィック パターンやパフォーマンスも向上します。

インスタンスが使用できなくなった場合、セカンダリ コピーがプライマリ コピーに昇格され、ルーティング情報が更新されるまでに、少し時間がかかります。 その間、クライアントは、ErrorCode of RetryLaterDataCacheException 例外を受け取ります。 In-Roleキャッシュ アプリケーションでは、通常のエラー処理と再試行ロジックを使用して、この状態に正しく対応する必要があります。

すべての書き込みはプライマリ コピーとセカンダリ コピーの両方に行われるので、高可用性は遅延を増やし、スループットを減らします。 高可用性によって得られるキャッシュの利点を考慮すれば、これは妥当な代償と考えることができます。

重要

その名が示すとおり、高可用性を使用すると、各キャッシュ項目に必要なメモリの量が 2 倍に増えます。 容量計画を行うときは、このメモリの影響を考慮に入れてください。 詳細については、「 Azure In-Role Cache の容量計画に関する考慮事項」を参照してください。

高可用性を有効にするには

  1. In-Roleキャッシュが有効になっているロールをダブルクリックします。

  2. [構成] タブで、[インスタンス数] が 4 以上になっていることを確認します。

  3. [キャッシュ] タブで、高可用性を必要とするキャッシュの [高可用性] チェック ボックスをオンにします。 次のスクリーンショットでは、3 つのキャッシュのうち 2 つに対して [高可用性] が有効になっています。

    Caching Backup Copies

参照

概念

Azure Cache の In-Role Cache の機能