Premium Azure Redis Cache の Redis クラスタリングの構成方法

Azure Redis Cache には、クラスタリング、永続性、仮想ネットワークのサポートといった Premium レベルの機能など、キャッシュのサイズと機能を柔軟に選択できるさまざまなキャッシュ サービスがあります。 この記事では、Premium Azure Redis Cache インスタンスでクラスタリングを構成する方法について説明します。

Premium キャッシュのその他の機能の詳細については、「 Azure Redis Cache Premium レベルの概要」を参照してください。

Redis クラスターとは

Azure Redis Cache では、 Redis での実装と同じように Redis クラスターが提供されます。 Redis クラスターには、次の利点があります。

  • データセットを複数のノードに自動的に分割する機能。
  • ノードのサブセットで障害が発生したとき、またはクラスターの他の部分と通信できないときに、操作を続行する機能。
  • より多くのスループット: シャードの数を増やすと、スループットは比例して増加します。
  • より多くのメモリ サイズ: シャードの数を増やすと比例的に増加します。

Premium キャッシュのサイズ、スループット、帯域幅の詳細については、「Redis Cache のサービス内容と適切なサイズの選択」を参照してください。

Azure では、Redis クラスターは、各シャードがプライマリ/レプリカ ペアを持つプライマリ/レプリカ モデルとして提供され、レプリケーションは Azure Redis Cache Service によって管理されます。

クラスタリング

クラスタリングは、キャッシュの作成中に [Redis Cache の新規作成] ブレードで有効化されます。

Premium キャッシュを作成するには、Azure Portal にサインインし、[新規] > [データベース] > [Redis Cache] の順にクリックします。

キャッシュの作成

注意

キャッシュは、Azure ポータルだけでなく、Resource Manager テンプレート、PowerShell、または Azure CLI を使用して作成することもできます。 Azure Redis Cache の作成について詳しくは、キャッシュの作成に関するページをご覧ください。

Premium 機能を構成するには、まず [料金レベル] ドロップダウン リストで Premium 価格レベルのいずれかを選択します。 各価格レベルの詳細については、[価格の詳細を表示] をクリックし、[価格レベルの選択] ブレードから価格レベルを選択します。

[料金レベルの選択]

クラスタリングは [Redis クラスター] ブレードで構成します。

クラスタリング

クラスター内に最大 10 個のシャードを作成できます。 [有効] をクリックし、クスライダーを操作するか 1 ~ 10 の値を入力して [シャード数] を設定し、[OK] をクリックします。

各シャードは Azure によって管理されるプライマリ/レプリカ キャッシュ ペアであり、キャッシュの合計サイズはシャードの数に価格レベルで選択したキャッシュ サイズを掛けることによって計算されます。

クラスタリング

キャッシュを作成した後は、クラスター化されていないキャッシュと同じようにアクセスして使用できます。また、Redis はキャッシュのシャード全体にデータを分配します。 診断が有効になっている場合は、シャードごとにメトリックが個別にキャプチャされ、Redis Cache ブレードに表示できます。

注意

クラスタリングが構成されているときは、クライアント アプリケーションに対していくつか小さな変更が必要です。 詳細については、「 クラスタリングを使用するためにクライアント アプリケーションを変更する必要がありますか

StackExchange.Redis クライアントを使用したクラスタリングの操作でのサンプル コードについては、Hello World サンプルの clustering.cs 部分を参照してください。

実行中の Premium キャッシュのクラスター サイズを変更する

クラスタリングが有効になっている実行中の Premium キャッシュのクラスター サイズを変更するには、[リソース] メニュー[Redis クラスターのサイズ] をクリックします。

注意

Azure Redis Cache の Premium レベルは一般公開されていますが、Redis クラスター サイズ機能は現在プレビュー段階にあります。

Redis クラスター サイズ

クラスター サイズを変更するには、スライダーを使用するか、[シャード数] ボックスに 1 ~ 10 の範囲の数値を入力し、[OK] をクリックして保存します。

注意

クラスターのスケーリングでは、MIGRATE コマンドが実行されます。このコマンドはコストを要するコマンドであるため、影響を最小限にするために、この操作をオフ ピーク時に実行することを検討してください。 移行プロセス中には、サーバーの負荷が急増します。 クラスターのスケーリングは時間を要する処理であり、必要な時間は、キーの数とこれらのキーに関連付けられている値のサイズによって異なります。

クラスタリングの FAQ

次の一覧は、Azure Redis Cache のクラスタリングに関するよく寄せられる質問への回答です。

クラスタリングを使用するためにクライアント アプリケーションを変更する必要がありますか

クラスターにはキーはどのように配布されるのですか

Redis の キー配布モデル に関するドキュメントによると、キー スペースは 16384 スロットに分割されます。 各キーはハッシュされ、クラスターのノード全体に配布される、これらのスロットのいずれかに割り当てられます。 ハッシュ タグを使用して同じシャードに複数のキーが配置されていることを確認するために、キーのどの部分をハッシュするかを構成することができます。

  • ハッシュ タグのあるキー - キーの任意の部分を {} で囲むと、キーのその部分のみが、キーのハッシュ スロットを決定するためにハッシュされます。 たとえば、{key}1{key}2{key}3 という 3 つのキーは、名前の key 部分のみがハッシュされるため、同じシャードに配置されます。 キーのハッシュ タグ仕様に関する完全なリストについては、「 キーのハッシュ タグ」を参照してください。
  • ハッシュ タグのないキー - キー名全体がハッシュに使用されます。 そのため、キャッシュのシャード全体で統計的に均等に配布されます。

最高のパフォーマンスとスループットを得るために、キーを均等に配布することをお勧めします。 ハッシュ タグのあるキーを使用する場合、キーが均等に配布されていることを確認するのはアプリケーションの責任です。

詳細については、「Keys distribution model (キー配布モデル)」、「Redis Cluster data sharding (Redis クラスターのデータ シャーディング)」、および「Keys hash tags (キーのハッシュ タグ)」を参照してください。

StackExchange.Redis クライアントを使用した同じシャードでのクラスタリングおよびキーの検索の操作におけるサンプル コードについては、Hello World サンプルの clustering.cs 部分を参照してください。

作成できる最大キャッシュ サイズはどれくらいですか

Premium の最大キャッシュ サイズは、53 GB です。 最大 10 個のシャードを作成できるので、最大サイズは 530 GB です。 さらに大きいサイズが必要な場合は、 追加を要求できます。 詳細については、「 Azure Redis Cache の価格」を参照してください。

すべての Redis クライアントがクラスタリングをサポートしますか

現時点では、すべてのクライアントが Redis クラスタリングをサポートしているわけではありません。 StackExchange.Redis はサポートしているものの 1 つです。 他のクライアントの詳細については、「Redis cluster tutorial (Redis クラスター チュートリアル)」の「Playing with the cluster (クラスターの使用)」を参照してください。

注意

StackExchange.Redis をクライアントとして使用する場合は、クラスタリングが正常に動作するように、 StackExchange.Redis 1.0.481 以降の最新バージョンを使用してください。 move 例外について問題がある場合は、 move 例外 の詳細をご覧ください。

クラスタリングが有効になっているとき、キャッシュに接続するにはどうすればよいですか

クラスタリングが有効になっていないキャッシュに接続するときに使うものと同じエンドポイントポートキーを使って、キャッシュに接続できます。 Redis がバックエンドのクラスタリングを管理するので、クライアントから管理する必要はありません。

キャッシュの個々のシャードに直接接続できますか

これは公式にはサポートされていません。 つまり、各シャードは、キャッシュ インスタンスと総称される、プライマリ/レプリカ キャッシュ ペアで構成されています。 GitHub で Redis リポジトリの 不安定な ブランチにある redis-cli ユーティリティを使用して、これらのキャッシュ インスタンスに接続できます。 このバージョンは、 -c スイッチ付きで起動した場合、基本的なサポートを実装しています。 詳細については、http://redis.io の「Redis cluster tutorial (Redis クラスター チュートリアル)」で「Playing with the cluster (クラスターの使用)」を参照してください。

SSL 以外の場合は、次のコマンドを使用します。

Redis-cli.exe –h <<cachename>> -p 13000 (to connect to instance 0)
Redis-cli.exe –h <<cachename>> -p 13001 (to connect to instance 1)
Redis-cli.exe –h <<cachename>> -p 13002 (to connect to instance 2)
...
Redis-cli.exe –h <<cachename>> -p 1300N (to connect to instance N)

SSL の場合は、1300N1500N に置き換えます。

以前に作成したキャッシュのクラスタリングを構成できますか。

現在、クラスタリングを有効にできるのは、キャッシュを作成するときだけです。 キャッシュの作成後は、クラスター サイズを変更することはできますが、Premium キャッシュに対するクラスタリングの追加または削除は実行できません。 クラスタリングが有効になっている Premium キャッシュと、クラスタリングがない同じサイズの Premium キャッシュでシャードが 1 つだけ異なるものが可能です。

Basic または Standard キャッシュのクラスタリングを構成できますか。

クラスタリングは、Premium キャッシュでのみ使用できます。

Redis ASP.NET セッション状態および出力キャッシュ プロバイダーでクラスタリングを使用できますか

  • Redis 出力キャッシュ プロバイダー - 変更する必要はありません。
  • Redis セッション状態プロバイダー - クラスタリングを使用するには、RedisSessionStateProvider 2.0.1 以降を使用する必要があります。そうしないと、例外がスローされます。 これは重大な変更です。詳細については、「v2.0.0 Breaking Change Details (v2.0.0 の重大な変更の詳細)」を参照してください。

StackExchange.Redis とクラスタリングを使用すると、MOVE 例外が発生します。どうすればよいですか。

クラスタリングを使用しているときに StackExchange.Redis を使うと、MOVE 例外が発生することがあります。この場合は、StackExchange.Redis 1.1.603 以降を使用しているかどうかを確認してください。 StackExchange.Redis を使用するための .NET アプリケーションの構成手順については、「キャッシュ クライアントの構成」を参照してください。

次のステップ

Premium キャッシュ機能をさらに使用する方法を学習します。