Premium Azure Redis Cache の Redis クラスタリングの構成方法How to configure Redis clustering for a Premium Azure Cache for Redis

Azure Cache for Redis には、クラスタリング、永続性、仮想ネットワークのサポートといった Premium レベルの機能を含め、キャッシュのサイズと機能を柔軟に選択できるさまざまなキャッシュ サービスがあります。Azure Cache for Redis has different cache offerings, which provide flexibility in the choice of cache size and features, including Premium tier features such as clustering, persistence, and virtual network support. この記事では、Premium Azure Cache for Redis インスタンスでクラスタリングを構成する方法について説明します。This article describes how to configure clustering in a premium Azure Cache for Redis instance.

Redis クラスターとはWhat is Redis Cluster?

Azure Cache for Redis では、 Redis での実装と同じように Redis クラスターが提供されます。Azure Cache for Redis offers Redis cluster as implemented in Redis. Redis クラスターには、次の利点があります。With Redis Cluster, you get the following benefits:

  • データセットを複数のノードに自動的に分割する機能。The ability to automatically split your dataset among multiple nodes.
  • ノードのサブセットで障害が発生したとき、またはクラスターの他の部分と通信できないときに、操作を続行する機能。The ability to continue operations when a subset of the nodes is experiencing failures or are unable to communicate with the rest of the cluster.
  • より多くのスループット: シャードの数を増やすと、スループットは比例して増加します。More throughput: Throughput increases linearly as you increase the number of shards.
  • より多くのメモリ サイズ: シャードの数を増やすと比例的に増加します。More memory size: Increases linearly as you increase the number of shards.

クラスタリングでは、クラスター化されたキャッシュで使用できる接続の数は増加しません。Clustering does not increase the number of connections available for a clustered cache. Premium キャッシュのサイズ、スループット、帯域幅の詳細については、「適切なレベルの選択」を参照してください。For more information about size, throughput, and bandwidth with premium caches, see Choosing the right tier

Azure では、Redis クラスターは、各シャードがプライマリ/レプリカ ペアを持つプライマリ/レプリカ モデルとして提供され、レプリケーションは Azure Cache for Redis によって管理されます。In Azure, Redis cluster is offered as a primary/replica model where each shard has a primary/replica pair with replication where the replication is managed by Azure Cache for Redis service.

クラスタリングClustering

クラスタリングは、キャッシュの作成中に [Azure Cache for Redis の新規作成] ブレードで有効化されます。Clustering is enabled on the New Azure Cache for Redis blade during cache creation.

  1. Premium キャッシュを作成するには、Azure portal にサインインし、 [リソースの作成] を選択します。To create a premium cache, sign in to the Azure portal and select Create a resource. キャッシュは、Azure ポータルだけでなく、Resource Manager テンプレート、PowerShell、または Azure CLI を使用して作成することもできます。In addition to creating caches in the Azure portal, you can also create them using Resource Manager templates, PowerShell, or Azure CLI. Azure Cache for Redis の作成について詳しくは、キャッシュの作成に関するページを参照してください。For more information about creating an Azure Cache for Redis, see Create a cache.

    リソースを作成します。

  2. [新規] ページで、 [データベース] を選択し、 [Azure Cache for Redis] を選択します。On the New page, select Databases and then select Azure Cache for Redis.

    リソースを作成します。

  3. [新規 Redis Cache] ページで、新しい Premium キャッシュの設定を構成します。On the New Redis Cache page, configure the settings for your new premium cache.

    設定Setting 推奨値Suggested value 説明Description
    DNS 名DNS name グローバルに一意の名前を入力します。Enter a globally unique name. キャッシュ名は 1 から 63 文字の文字列で、数字、英字、ハイフンのみを使用する必要があります。The cache name must be a string between 1 and 63 characters that contains only numbers, letters, or hyphens. 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。The name must start and end with a number or letter, and can't contain consecutive hyphens. キャッシュ インスタンスの "ホスト名" は、 <DNS name>.redis.cache.windows.net になります。Your cache instance's host name will be <DNS name>.redis.cache.windows.net.
    サブスクリプションSubscription ドロップダウンで、ご自身のサブスクリプションを選択します。Drop-down and select your subscription. この新しい Azure Cache for Redis インスタンスが作成されるサブスクリプション。The subscription under which to create this new Azure Cache for Redis instance.
    リソース グループResource group ドロップダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。Drop-down and select a resource group, or select Create new and enter a new resource group name. その中にキャッシュやその他のリソースを作成するリソース グループの名前。Name for the resource group in which to create your cache and other resources. すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。By putting all your app resources in one resource group, you can easily manage or delete them together.
    場所Location ドロップダウンで場所を選択します。Drop-down and select a location. キャッシュを使用する他のサービスの近くのリージョンを選択します。Select a region near other services that will use your cache.
    キャッシュの種類Cache type ドロップダウンで、Premium キャッシュを選択し、Premium 機能を構成します。Drop-down and select a premium cache to configure premium features. 詳細については、「Azure Cache for Redis の価格」を参照してください。For details, see Azure Cache for Redis pricing. 価格レベルによって、キャッシュに使用できるのサイズ、パフォーマンス、および機能が決まります。The pricing tier determines the size, performance, and features that are available for the cache. 詳細については、Azure Cache for Redis の概要に関するページを参照してください。For more information, see Azure Cache for Redis Overview.
  4. [ネットワーク] タブを選択するか、ページの下部にある [ネットワーク] ボタンをクリックします。Select the Networking tab or click the Networking button at the bottom of the page.

  5. [ネットワーク] タブで、接続方法を選択します。In the Networking tab, select your connectivity method. Premium キャッシュ インスタンスの場合、パブリック IP アドレスまたはサービス エンドポイント経由で公的に接続することも、プライベート エンドポイントを使用してプライベートに接続することもできます。For premium cache instances, you can connect either publicly, via Public IP addresses or service endpoints, or privately, using a private endpoint.

  6. [次へ: 詳細] タブを選択するか、ページの下部にある [次へ: 詳細] ボタンをクリックします。Select the Next: Advanced tab or click the Next: Advanced button on the bottom of the page.

  7. Premium キャッシュ インスタンスの [詳細] タブで、非 TLS ポート、クラスタリング、データ永続化の設定を構成します。In the Advanced tab for a premium cache instance, configure the settings for non-TLS port, clustering, and data persistence. クラスタリングを有効にするには、 [有効] をクリックします。To enable clustering, click Enable.

    リソースを作成します。

    クラスター内に最大 10 個のシャードを作成できます。You can have up to 10 shards in the cluster. [有効] をクリックした後に、スライダーを操作するか 1 から 10 の値を入力して [シャード数] を設定し、 [OK] をクリックします。After clicking Enable, slide the slider or type a number between 1 and 10 for Shard count and click OK.

    各シャードは Azure によって管理されるプライマリ/レプリカ キャッシュ ペアであり、キャッシュの合計サイズはシャードの数に価格レベルで選択したキャッシュ サイズを掛けることによって計算されます。Each shard is a primary/replica cache pair managed by Azure, and the total size of the cache is calculated by multiplying the number of shards by the cache size selected in the pricing tier.

    リソースを作成します。

    キャッシュを作成した後は、クラスター化されていないキャッシュと同じようにアクセスして使用できます。また、Redis はキャッシュのシャード全体にデータを分配します。Once the cache is created you connect to it and use it just like a non-clustered cache, and Redis distributes the data throughout the Cache shards. 診断が有効になっている場合は、シャードごとにメトリックが個別にキャプチャされ、Azure Cache for Redis ブレードに表示できます。If diagnostics is enabled, metrics are captured separately for each shard and can be viewed in the Azure Cache for Redis blade.

  8. [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンをクリックします。Select the Next: Tags tab or click the Next: Tags button at the bottom of the page.

  9. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。Optionally, in the Tags tab, enter the name and value if you wish to categorize the resource.

  10.  [確認および作成] を選択します。Select Review + create. [確認および作成] タブが表示され、Azure によって構成が検証されます。You're taken to the Review + create tab where Azure validates your configuration.

  11. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。After the green Validation passed message appears, select Create.

キャッシュが作成されるまで、しばらく時間がかかります。It takes a while for the cache to create. Azure Cache for Redis の [概要]  ページで進行状況を監視できます。You can monitor progress on the Azure Cache for Redis Overview page.  [状態]  に [実行中] と表示されている場合は、キャッシュを使用する準備ができています。When Status shows as Running, the cache is ready to use.

注意

クラスタリングが構成されているときは、クライアント アプリケーションに対していくつか小さな変更が必要です。There are some minor differences required in your client application when clustering is configured. 詳細については、「 クラスタリングを使用するためにクライアント アプリケーションを変更する必要がありますかFor more information, see Do I need to make any changes to my client application to use clustering?

StackExchange.Redis クライアントを使用したクラスタリングの操作でのサンプル コードについては、Hello World サンプルの clustering.cs 部分を参照してください。For sample code on working with clustering with the StackExchange.Redis client, see the clustering.cs portion of the Hello World sample.

実行中の Premium キャッシュのクラスター サイズを変更するChange the cluster size on a running premium cache

クラスタリングが有効になっている実行中の Premium キャッシュのクラスター サイズを変更するには、 [リソース] メニュー[Cluster Size](クラスターのサイズ) をクリックします。To change the cluster size on a running premium cache with clustering enabled, click Cluster Size from the Resource menu.

Redis クラスター サイズ

クラスター サイズを変更するには、スライダーを使用するか、 [シャード数] ボックスに 1 ~ 10 の範囲の数値を入力し、 [OK] をクリックして保存します。To change the cluster size, use the slider or type a number between 1 and 10 in the Shard count text box and click OK to save.

クラスター サイズを増やすと、スループットとキャッシュの最大サイズが増えます。Increasing the cluster size increases max throughput and cache size. クラスター サイズを増やして、クライアントが利用できる最大接続数が増えることはありません。Increasing the cluster size doesn't increase the max. connections available to clients.

注意

クラスターのスケーリングでは、MIGRATE コマンドが実行されます。このコマンドはコストを要するコマンドであるため、影響を最小限にするために、この操作をオフ ピーク時に実行することを検討してください。Scaling a cluster runs the MIGRATE command, which is an expensive command, so for minimal impact, consider running this operation during non-peak hours. 移行プロセス中には、サーバーの負荷が急増します。During the migration process, you will see a spike in server load. クラスターのスケーリングは時間を要する処理であり、必要な時間は、キーの数とこれらのキーに関連付けられている値のサイズによって異なります。Scaling a cluster is a long running process and the amount of time taken depends on the number of keys and size of the values associated with those keys.

クラスタリングの FAQClustering FAQ

次の一覧は、Azure Redis Cache のクラスタリングに関するよく寄せられる質問への回答です。The following list contains answers to commonly asked questions about Azure Cache for Redis clustering.

クラスタリングを使用するためにクライアント アプリケーションを変更する必要がありますかDo I need to make any changes to my client application to use clustering?

クラスターにはキーはどのように配布されるのですかHow are keys distributed in a cluster?

Redis の キー配布モデル に関するドキュメントによると、キー スペースは 16384 スロットに分割されます。Per the Redis Keys distribution model documentation: The key space is split into 16384 slots. 各キーはハッシュされ、クラスターのノード全体に配布される、これらのスロットのいずれかに割り当てられます。Each key is hashed and assigned to one of these slots, which are distributed across the nodes of the cluster. ハッシュ タグを使用して同じシャードに複数のキーが配置されていることを確認するために、キーのどの部分をハッシュするかを構成することができます。You can configure which part of the key is hashed to ensure that multiple keys are located in the same shard using hash tags.

  • ハッシュ タグのあるキー - キーの任意の部分を {} で囲むと、キーのその部分のみが、キーのハッシュ スロットを決定するためにハッシュされます。Keys with a hash tag - if any part of the key is enclosed in { and }, only that part of the key is hashed for the purposes of determining the hash slot of a key. たとえば、{key}1{key}2{key}3 という 3 つのキーは、名前の key 部分のみがハッシュされるため、同じシャードに配置されます。For example, the following 3 keys would be located in the same shard: {key}1, {key}2, and {key}3 since only the key part of the name is hashed. キーのハッシュ タグ仕様に関する完全なリストについては、「 キーのハッシュ タグ」を参照してください。For a complete list of keys hash tag specifications, see Keys hash tags.
  • ハッシュ タグのないキー - キー名全体がハッシュに使用されます。Keys without a hash tag - the entire key name is used for hashing. そのため、キャッシュのシャード全体で統計的に均等に配布されます。This results in a statistically even distribution across the shards of the cache.

最高のパフォーマンスとスループットを得るために、キーを均等に配布することをお勧めします。For best performance and throughput, we recommend distributing the keys evenly. ハッシュ タグのあるキーを使用する場合、キーが均等に配布されていることを確認するのはアプリケーションの責任です。If you are using keys with a hash tag it is the application's responsibility to ensure the keys are distributed evenly.

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

StackExchange.Redis クライアントを使用した同じシャードでのクラスタリングおよびキーの検索の操作におけるサンプル コードについては、Hello World サンプルの clustering.cs 部分を参照してください。For sample code on working with clustering and locating keys in the same shard with the StackExchange.Redis client, see the clustering.cs portion of the Hello World sample.

作成できる最大キャッシュ サイズはどれくらいですかWhat is the largest cache size I can create?

Premium の最大キャッシュ サイズは、120 GB です。The largest premium cache size is 120 GB. 最大 10 個のシャードを作成できるので、最大サイズは 1.2 TB です。You can create up to 10 shards giving you a maximum size of 1.2TB GB. さらに大きいサイズが必要な場合は、 追加を要求できます。If you need a larger size you can request more. 詳細については、Azure Cache for Redis の価格に関するページを参照してください。For more information, see Azure Cache for Redis Pricing.

すべての Redis クライアントがクラスタリングをサポートしますかDo all Redis clients support clustering?

すべてのクライアントが Redis クラスタリングをサポートしているわけではありません。Not all clients support Redis clustering! 使用しているライブラリのドキュメントをチェックして、クラスタリングをサポートするライブラリとバージョンを使用していることを確認してください。Please check the documentation for the library you are using, to verify you are using a library and version which support clustering. StackExchange.Redis は、その新しいバージョンでクラスタリングをサポートする 1 つのライブラリです。StackExchange.Redis is one library that does support clustering, in its newer versions. 他のクライアントの詳細については、「Redis cluster tutorial (Redis クラスター チュートリアル)」の「Playing with the cluster (クラスターの使用)」を参照してください。For more information on other clients, see the Playing with the cluster section of the Redis cluster tutorial.

Redis クラスタリング プロトコルでは、各クライアントがクラスタリング モードで各シャードに直接接続する必要があり、'MOVED' や 'CROSSSLOTS' などの新しいエラー応答も定義されます。The Redis clustering protocol requires each client to connect to each shard directly in clustering mode, and also defines new error responses such as 'MOVED' na 'CROSSSLOTS'. クロススロット マルチキー要求を行っている場合は、クラスター モードのキャッシュでクラスタリングをサポートしないクライアントを使用しようとすると、多数の MOVED リダイレクト例外が発生するか、または単にアプリケーションが中断される場合があります。Attempting to use a client that doesn't support clustering with a cluster mode cache can result in a lot of MOVED redirection exceptions, or just break your application, if you are doing cross-slot multi-key requests.

注意

StackExchange.Redis をクライアントとして使用する場合は、クラスタリングが正常に動作するように、 StackExchange.Redis 1.0.481 以降の最新バージョンを使用してください。If you are using StackExchange.Redis as your client, ensure you are using the latest version of StackExchange.Redis 1.0.481 or later for clustering to work correctly. move 例外について問題がある場合は、 move 例外 の詳細をご覧ください。If you have any issues with move exceptions, see move exceptions for more information.

クラスタリングが有効になっているとき、キャッシュに接続するにはどうすればよいですかHow do I connect to my cache when clustering is enabled?

クラスタリングが有効になっていないキャッシュに接続するときに使うものと同じエンドポイントポートキーを使って、キャッシュに接続できます。You can connect to your cache using the same endpoints, ports, and keys that you use when connecting to a cache that does not have clustering enabled. Redis がバックエンドのクラスタリングを管理するので、クライアントから管理する必要はありません。Redis manages the clustering on the backend so you don't have to manage it from your client.

キャッシュの個々のシャードに直接接続できますかCan I directly connect to the individual shards of my cache?

クラスタリング プロトコルでは、クライアントが正しいシャード接続を実行する必要があります。The clustering protocol requires that the client make the correct shard connections. したがって、クライアントが自動的に、これを正しく実行する必要があります。So the client should do this correctly for you. つまり、各シャードは、キャッシュ インスタンスと総称される、プライマリ/レプリカ キャッシュ ペアで構成されています。With that said, each shard consists of a primary/replica cache pair, collectively known as a cache instance. GitHub で Redis リポジトリの 不安定な ブランチにある redis-cli ユーティリティを使用して、これらのキャッシュ インスタンスに接続できます。You can connect to these cache instances using the redis-cli utility in the unstable branch of the Redis repository at GitHub. このバージョンは、 -c スイッチ付きで起動した場合、基本的なサポートを実装しています。This version implements basic support when started with the -c switch. 詳細については、https://redis.io の「Redis cluster tutorial」 (Redis クラスター チュートリアル) にある「Playing with the cluster」 (クラスターの使用) をご覧ください。For more information, see Playing with the cluster on https://redis.io in the Redis cluster tutorial.

TLS 以外の場合は、次のコマンドを使用します。For non-TLS, use the following commands.

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)

TLS の場合は、1300N1500N に置き換えます。For TLS, replace 1300N with 1500N.

以前に作成したキャッシュのクラスタリングを構成できますか。Can I configure clustering for a previously created cache?

はい。Yes. まず、キャッシュが Premium でない場合は、スケーリングしてキャッシュを確実に Premium にしてください。First ensure that your cache is premium, by scaling if is not. 次に、クラスター構成オプション (クラスターを有効にするオプションを含む) が表示されるようになります。Next, you should be able to see the cluster configuration options, including an option to enable cluster. キャッシュが作成されるか、または初めてクラスタリングを有効にした後、クラスター サイズを変更できます。You can change the cluster size after the cache is created, or after you have enabled clustering for the first time.

重要

クラスタリングを有効すると元には戻せません。You can't undo enabling clustering. また、クラスタリングが有効であり、かつシャードが 1 つだけのキャッシュは、クラスタリングなしの同じサイズのキャッシュとは動作が異なりますAnd a cache with clustering enabled and only one shard behaves differently than a cache of the same size with no clustering.

Basic または Standard キャッシュのクラスタリングを構成できますか。Can I configure clustering for a basic or standard cache?

クラスタリングは、Premium キャッシュでのみ使用できます。Clustering is only available for premium caches.

Redis ASP.NET セッション状態および出力キャッシュ プロバイダーでクラスタリングを使用できますかCan I use clustering with the Redis ASP.NET Session State and Output Caching providers?

  • Redis 出力キャッシュ プロバイダー - 変更する必要はありません。Redis Output Cache provider - no changes required.
  • Redis セッション状態プロバイダー - クラスタリングを使用するには、RedisSessionStateProvider 2.0.1 以降を使用する必要があります。そうしないと、例外がスローされます。Redis Session State provider - to use clustering, you must use RedisSessionStateProvider 2.0.1 or higher or an exception is thrown. これは重大な変更です。詳細については、「v2.0.0 Breaking Change Details (v2.0.0 の重大な変更の詳細)」を参照してください。This is a breaking change; for more information, see v2.0.0 Breaking Change Details.

StackExchange.Redis とクラスタリングを使用すると、MOVE 例外が発生します。どうすればよいですか。I am getting MOVE exceptions when using StackExchange.Redis and clustering, what should I do?

クラスタリングを使用しているときに StackExchange.Redis を使うと、MOVE 例外が発生することがあります。この場合は、StackExchange.Redis 1.1.603 以降を使用しているかどうかを確認してください。If you are using StackExchange.Redis and receive MOVE exceptions when using clustering, ensure that you are using StackExchange.Redis 1.1.603 or later. StackExchange.Redis を使用するための .NET アプリケーションの構成手順については、「キャッシュ クライアントの構成」を参照してください。For instructions on configuring your .NET applications to use StackExchange.Redis, see Configure the cache clients.

次のステップNext steps

Azure Cache for Redis の機能についてLearn more about Azure Cache for Redis features.