Redis (クラスターモードが有効) のオンラインの再分散とシャードの再分散
Amazon ElastiCache for Redis バージョン 3.2.10 以降を用いたオンラインリシャーディングとシャードの再分散を使用することで、ElastiCache for Redis (クラスターモードが有効) をダウンタイムなしで動的にスケールできます。このアプローチでは、クラスターはスケーリングや再分散が処理中でもリクエストに対応し続けることができます。
以下の操作を行うことができます。
-
[スケールアウト] – シャード (ノードグループ) を Redis (クラスターモードが有効) クラスター (レプリケーショングループ) に追加することで、読み込みおよび書き込みキャパシティーを増やすことができます。
レプリケーショングループに 1 つ以上のシャードを追加する場合、それぞれの新しいノードのノード数は既存の最小のシャードのシャード数と同じです。
-
[スケールイン] – 読み込みおよび書き込みキャパシティーを減らして、Redis (クラスターモードが有効) クラスターからシャードを削除することでコストを削減します。
-
[再分散] – ElastiCache for Redis (クラスターモードが有効) クラスター内のシャード間でキースペースを移動させ、シャード間でできるだけ等分に分散されるようにします。
次のことはできません。
-
シャードを個別に構成:
シャードのキースペースを個別に指定することはできません。これを行うには、オフライン処理を使用する必要があります。
現在、ElastiCache for Redis のオンラインリシャーディングおよび再分散には、次の制限が適用されます。
-
このプロセスには Redis エンジンバージョン 3.2.10 以降が必要です。エンジンバージョンのアップグレードについての詳細は、「エンジンバージョンのアップグレード」を参照してください。
-
スロットまたはキースペース、および大きなアイテムには制限があります。
シャード内のキーのいずれかに大きなアイテムが含まれる場合、そのキーはスケールアウトまたは再分散の際に移行されません。この機能により、アンバランスなシャードになる可能性があります。
シャード内のキーのいずれかに大きなアイテム (シリアル化後 256 MB より大きいアイテム) が含まれる場合、シャードはスケールイン時に削除されません。この機能により、一部のシャードは削除されない可能性があります。
-
スケールアウトの際、新しいシャードのノード数はいずれも、既存の最小のシャードのノード数と等しくなります。
-
スケールアウトの際、既存のすべてのシャードに共通するタグは、すべて新しいシャードにコピーされます。
詳細については、「ベストプラクティス: オンラインクラスターのサイズ変更」を参照してください。
AWS Management Console、AWS CLI、および ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターを水平にスケーリングまたは再分散できます。
オンラインリシャーディングによるシャードの追加
AWS Management Console、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターにシャードを追加できます。Redis (クラスターモードが有効) クラスターにシャードを追加すると、既存のシャードのすべてのタグが新しいシャードにコピーされます。
トピック
AWS Management Console を使用して、Redis (クラスターモードが有効) クラスターに 1 つ以上のシャードを追加できます。以下の手順では、このプロセスについて説明します。
シャードを Redis (クラスターモードが有効) に追加するには
-
ElastiCache コンソール (https://console.aws.amazon.com/elasticache/
) を開きます。 -
ナビゲーションペインで、[Redis clusters] (Redis クラスター) を選択します。
-
シャードを追加する Redis (クラスターモードが有効) クラスターの名前 (クラスター名の左にあるボックスではなく) を見つけて選択します。
ヒント Redis (クラスターモードが有効) では、[Mode (モード)] 列に [クラスター化されたRedis] が表示されます。
-
[Add shard] を選択します。
-
[追加するシャード数] で、このクラスターに追加するシャード数を選択します。
-
[アベイラビリティーゾーン] で、[No preference] または [Specify availability zones] を選択します。
-
[Specify availability zones] を選択した場合は、各シャードのそれぞれのノードごとに、アベイラビリティゾーンのリストからノードのアベイラビリティーゾーンを選択します。
-
[Add] (追加) を選択します。
-
以下のプロセスでは、AWS CLI を使用してシャードを追加し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
modify-replication-group-shard-configuration
を使って以下のパラメータを使用します。
パラメータ
-
--apply-immediately
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
--replication-group-id
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
--node-group-count
– 必須。オペレーションの完了時に存在するシャード (ノードグループ) 数を指定します。シャードを追加する場合、--node-group-count
の値は現在のシャード数より大きくなければなりません。オプションで、
--resharding-configuration
を使用してレプリケーショングループ内の各ノードにアベイラビリティーゾーンを指定できます。 -
--resharding-configuration
- オプション。レプリケーショングループの各シャードのそれぞれのノードに推奨される、アベイラビリティーゾーンのリスト。--node-group-count
の値が現在のシャード数より大きい場合にのみ、このパラメータを使用します。シャード追加時にこのパラメータを省略すると、Amazon ElastiCache により新しいノードにアベイラビリティーゾーンが選択されます。
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
の 4 つのシャードでキースペースを再構成します。また、この例では、各シャードでそれぞれのノードのアベイラビリティーゾーンを指定しています。オペレーションはすぐに始まります。
例 - シャードの追加
Linux、macOS、Unix の場合:
aws elasticache modify-replication-group-shard-configuration \ --replication-group-id
my-cluster
\ --node-group-count4
\ --resharding-configuration \ "PreferredAvailabilityZones=us-east-2a
,us-east-2c
" \ "PreferredAvailabilityZones=us-east-2b
,us-east-2a
" \ "PreferredAvailabilityZones=us-east-2c
,us-east-2d
" \ "PreferredAvailabilityZones=us-east-2d
,us-east-2c
" \ --apply-immediately
Windows の場合:
aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id
my-cluster
^ --node-group-count4
^ --resharding-configuration ^ "PreferredAvailabilityZones=us-east-2a
,us-east-2c
" ^ "PreferredAvailabilityZones=us-east-2b
,us-east-2a
" ^ "PreferredAvailabilityZones=us-east-2c
,us-east-2d
" ^ "PreferredAvailabilityZones=us-east-2d
,us-east-2c
" ^ --apply-immediately
詳細については、AWS CLI ドキュメントの「modify-replication-group-shard-configuration」を参照してください。
ModifyReplicationGroupShardConfiguration
オペレーションを使うことで、ElastiCache API を使用して Redis (クラスターモードが有効) クラスターのシャードをオンラインで再構成できます。
ModifyReplicationGroupShardConfiguration
を使って以下のパラメータを使用します。
パラメータ
-
ApplyImmediately=true
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
ReplicationGroupId
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
NodeGroupCount
– 必須。オペレーションの完了時に存在するシャード (ノードグループ) 数を指定します。シャードを追加する場合、NodeGroupCount
の値は現在のシャード数より大きくなければなりません。オプションで、
ReshardingConfiguration
を使用してレプリケーショングループ内の各ノードにアベイラビリティーゾーンを指定できます。 -
ReshardingConfiguration
- オプション。レプリケーショングループの各シャードのそれぞれのノードに推奨される、アベイラビリティーゾーンのリスト。NodeGroupCount
の値が現在のシャード数より大きい場合にのみ、このパラメータを使用します。シャード追加時にこのパラメータを省略すると、Amazon ElastiCache により新しいノードにアベイラビリティーゾーンが選択されます。
以下のプロセスでは、ElastiCache API を使用してシャードを追加し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
例 - シャードの追加
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
にノードグループを追加します。オペレーション完了時に合計 4 つのノードグループが存在することになります。また、この例では、各シャードでそれぞれのノードのアベイラビリティーゾーンを指定しています。オペレーションはすぐに始まります。
https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=
4
&ReplicationGroupId=my-cluster
&ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2a
&ReshardingConfiguration.ReshardingConfiguration.1.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c
&ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2b
&ReshardingConfiguration.ReshardingConfiguration.2.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2a
&ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2c
&ReshardingConfiguration.ReshardingConfiguration.3.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2d
&ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.1=us-east-2d
&ReshardingConfiguration.ReshardingConfiguration.4.PreferredAvailabilityZones.AvailabilityZone.2=us-east-2c
&Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>
詳細については、ElastiCache API リファレンスの「ModifyReplicationGroupShardConfiguration」を参照してください。
オンラインリシャーディングによるシャードの削除
AWS Management Console、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターからシャードを削除できます。
シャードの削除 (コンソール)
以下のプロセスでは、AWS Management Console を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定したシャードはリクエストに応じてレプリケーショングループから削除されます。データが残りのノードグループに収まらない場合、プロセスは終了し、レプリケーショングループはリクエスト前と同じノードグループ設定のままになります。
AWS Management Console を使用して、Redis (クラスターモードが有効) クラスターから 1 つ以上のシャードを削除できます。レプリケーショングループのすべてのシャードを削除することはできません。代わりに、レプリケーショングループを削除する必要があります。詳細については、「レプリケーショングループの削除」を参照してください。次の手順では、1 つ以上のシャードを削除する手順を説明します。
Redis (クラスターモードが有効) クラスターからシャードを削除するには
-
ElastiCache コンソール (https://console.aws.amazon.com/elasticache/
) を開きます。 -
ナビゲーションペインで、[Redis clusters] (Redis クラスター) を選択します。
-
シャードを削除する Redis (クラスターモードが有効) クラスターの名前 (クラスター名の左にあるボックスではなく) を見つけて選択します。
ヒント Redis (クラスターモードが有効) クラスターは、[シャード] 列で 1 より大きい値を持ちます。
-
シャードの一覧から、削除する各シャードの名前の左にあるチェックボックスを選択します。
-
[Delete shard] を選択します。
シャードの削除 (AWS CLI)
以下のプロセスでは、AWS CLI を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャード (--node-groups-to-remove
) はリクエストに応じてレプリケーショングループから削除され、キースペースは残りのシャードにマッピングされます。データが残りのノードグループに収まらない場合、プロセスは終了し、レプリケーショングループはリクエスト前と同じノードグループ設定のままになります。
AWS CLI を使用して、Redis (クラスターモードが有効) クラスターから 1 つ以上のシャードを削除できます。レプリケーショングループのすべてのシャードを削除することはできません。代わりに、レプリケーショングループを削除する必要があります。詳細については、「レプリケーショングループの削除」を参照してください。
modify-replication-group-shard-configuration
を使って以下のパラメータを使用します。
パラメータ
-
--apply-immediately
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
--replication-group-id
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
--node-group-count
– 必須。オペレーションの完了時に存在するシャード (ノードグループ) 数を指定します。シャードを削除する場合、--node-group-count
の値は現在のシャード数より小さくなければなりません。 -
--node-groups-to-remove
–--node-group-count
が現在のノードグループ (シャード) 数より少ない場合は必須です。レプリケーショングループから削除するシャード (ノードグループ) ID の一覧。
次の手順では、1 つ以上のシャードを削除する手順を説明します。
例 - シャードの削除
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
から 2 つのノードグループを削除します。オペレーション完了時に合計 2 つのノードグループが存在することになります。削除されたシャードのキースペースは、残りのシャード間で均等に分散されます。
Linux、macOS、Unix の場合:
aws elasticache modify-replication-group-shard-configuration \ --replication-group-id
my-cluster
\ --node-group-count2
\ --node-groups-to-remove "0002
" "0003
" \ --apply-immediately
Windows の場合:
aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id
my-cluster
^ --node-group-count2
^ --node-groups-to-remove "0002
" "0003
" ^ --apply-immediately
シャードの削除(ElastiCache API)
ModifyReplicationGroupShardConfiguration
オペレーションを使うことで、ElastiCache API を使用して Redis (クラスターモードが有効) クラスターのシャードをオンラインで再構成できます。
以下のプロセスでは、ElastiCache API を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャード (NodeGroupsToRemove
) はリクエストに応じてレプリケーショングループから削除され、キースペースは残りのシャードにマッピングされます。データが残りのノードグループに収まらない場合、プロセスは終了し、レプリケーショングループはリクエスト前と同じノードグループ設定のままになります。
ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターから 1 つ以上のシャードを削除できます。レプリケーショングループのすべてのシャードを削除することはできません。代わりに、レプリケーショングループを削除する必要があります。詳細については、「レプリケーショングループの削除」を参照してください。
ModifyReplicationGroupShardConfiguration
を使って以下のパラメータを使用します。
パラメータ
-
ApplyImmediately=true
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
ReplicationGroupId
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
NodeGroupCount
– 必須。オペレーションの完了時に存在するシャード (ノードグループ) 数を指定します。シャードを削除する場合、NodeGroupCount
の値は現在のシャード数より小さくなければなりません。 -
NodeGroupsToRemove
–--node-group-count
が現在のノードグループ (シャード) 数より少ない場合は必須です。レプリケーショングループから削除するシャード (ノードグループ) ID の一覧。
次の手順では、1 つ以上のシャードを削除する手順を説明します。
例 - シャードの削除
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
から 2 つのノードグループを削除します。オペレーション完了時に合計 2 つのノードグループが存在することになります。削除されたシャードのキースペースは、残りのシャード間で均等に分散されます。
https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=
2
&ReplicationGroupId=my-cluster
&NodeGroupsToRemove.member.1=0002
&NodeGroupsToRemove.member.2=0003
&Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>
オンラインのシャード再分散
AWS Management Console、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスター内のシャードを再分散できます。
オンラインのシャード再分散 (コンソール)
以下のプロセスでは、AWS Management Console を使用してシャードを再分散し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
Redis (クラスターモードが有効) クラスターでシャード間のキースペースを再分散するには
-
ElastiCache コンソール (https://console.aws.amazon.com/elasticache/
) を開きます。 -
ナビゲーションペインで、[Redis clusters] (Redis クラスター) を選択します。
-
再分散する Redis (クラスターモードが有効) クラスターの名前 (名前の左にあるボックスではなく) を選択します。
ヒント Redis (クラスターモードが有効) クラスターは、[シャード] 列で 1 より大きい値を持ちます。
-
[再分散] を選択します。
-
プロンプトが表示されたら、[再分散] を選択します。次のようなメッセージが表示されることがあります。
レプリケーショングループのスロットは均一に分散されています。Nothing to do. (サービス: AmazonElastiCache; ステータスコード: 400; エラーコード: InvalidReplicationGroupState; リクエスト ID: 2246cebd-9721-11e7-8d5b-e1b0f086c8cf)
。この場合、[キャンセル] を選択します。
オンラインのシャード再分散 (AWS CLI)
modify-replication-group-shard-configuration
を使って以下のパラメータを使用します。
パラメータ
-
-apply-immediately
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
--replication-group-id
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
--node-group-count
– 必須。クラスター内のすべてのシャードでキースペースを再分散するため、この値は現在のシャード数と同じである必要があります。
以下のプロセスでは、AWS CLI を使用してシャードを再分散し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。
例 - クラスターのシャードの再分散
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
のスロットを再分散して、スロットができるだけ等分に分散されるようにします。--node-group-count
の値 (4
) は、クラスターの現在のシャード数です。
Linux、macOS、Unix の場合:
aws elasticache modify-replication-group-shard-configuration \ --replication-group-id
my-cluster
\ --node-group-count4
\ --apply-immediately
Windows の場合:
aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id
my-cluster
^ --node-group-count4
^ --apply-immediately
オンラインのシャード再分散(ElastiCache API)
ModifyReplicationGroupShardConfiguration
オペレーションを使うことで、ElastiCache API を使用して Redis (クラスターモードが有効) クラスターのシャードをオンラインで再構成できます。
ModifyReplicationGroupShardConfiguration
を使って以下のパラメータを使用します。
パラメータ
-
ApplyImmediately=true
– 必須。シャードの再構成オペレーションがすぐに開始するよう指定します。 -
ReplicationGroupId
– 必須。シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。 -
NodeGroupCount
– 必須。クラスター内のすべてのシャードでキースペースを再分散するため、この値は現在のシャード数と同じである必要があります。
以下のプロセスでは、ElastiCache API を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再分散を行う方法について説明します。
例 - クラスターの再分散
次の例では、Redis (クラスターモードが有効) クラスター my-cluster
のスロットを再分散して、スロットができるだけ等分に分散されるようにします。NodeGroupCount
の値 (4
) は、クラスターの現在のシャード数です。
https://elasticache.us-east-2.amazonaws.com/ ?Action=ModifyReplicationGroupShardConfiguration &ApplyImmediately=true &NodeGroupCount=
4
&ReplicationGroupId=my-cluster
&Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20171002T192317Z &X-Amz-Credential=<credential>