Redis 用 Amazon ElastiCache
Redis 用 ElastiCache ユーザーガイド (API バージョン 2015-02-02)

オンラインリシャーディングおよび Redis (クラスターモードが有効) のシャードの再分散

Redis 用 Amazon ElastiCache バージョン 3.2.10 を用いたオンラインリシャーディングとシャードの再分散を使用することで、ElastiCache を Redis (クラスターモードが有効) 用にダウンタイムなしで動的にスケーリングできます。このアプローチでは、クラスターはスケーリングや再分散が処理中でもリクエストに対応し続けることができます。

以下の操作を行うことができます。

  • スケールアウト – シャード (ノードグループ) を Redis (クラスターモードが有効) クラスター (レプリケーショングループ) に追加することで、読み込みおよび書き込みキャパシティーを増やすことができます。

    レプリケーショングループに 1 つ以上のシャードを追加する場合、それぞれの新しいノードのノード数は既存の最小のシャードのシャード数と同じです。

  • スケールイン – 読み込みおよび書き込みキャパシティーを減らして、Redis (クラスターモードが有効) クラスターからシャードを削除することでコストを削減します。

  • 再分散 – Redis (クラスターモードが有効) クラスター用の ElastiCache 内のシャード間でキースペースを移動させ、シャード間でできるだけ等分に分散されるようにします。

次のことはできません。

  • スケールアップ/スケールダウン: ノードタイプの変更。これを行うには、オフライン処理を使用する必要があります。

  • エンジンのアップグレード: エンジンバージョンの新しいバージョンへの変更。これを行うには、オフライン処理を使用する必要があります。

  • シャードを個別に構成:

    • 各シャード内のノード数を個別に指定することはできません。これを行うには、オフライン処理を使用する必要があります。

    • シャードのキースペースを個別に指定することはできません。これを行うには、オフライン処理を使用する必要があります。

現在、Redis 用 ElastiCache のオンラインリシャーディングおよび再分散には、次の制限が適用されます。

  • このプロセスには Redis エンジンバージョン 3.2.10 以降が必要です。エンジンバージョンのアップグレードについての詳細は、「エンジンバージョンのアップグレード」を参照してください。

  • スロットまたはキースペース、および大きなアイテムには制限があります。

    シャード内のキーのいずれかに大きなアイテムが含まれる場合、そのキーはスケールアウトまたは再分散の際に移行されません。この機能により、アンバランスなシャードになる可能性があります。

    シャード内のキーのいずれかに大きなアイテム (シリアル化後 256 MB より大きいアイテム) が含まれる場合、シャードはスケールイン時に削除されません。この機能により、一部のシャードは削除されない可能性があります。

  • スケールアウトの際、新しいシャードのノード数はいずれも、既存の最小のシャードのノード数と等しくなります。

  • スケールアウトの際、既存のすべてのシャードに共通するタグは、すべて新しいシャードにコピーされます。

詳細については、「ベストプラクティス: オンラインクラスターのサイズ変更」を参照してください。

AWS マネジメントコンソール、AWS CLI、および ElastiCache API を使用して、Redis (クラスターモードが有効) クラスター用の ElastiCache を水平にスケーリングまたは再分散できます。

オンラインリシャーディングによるシャードの追加

AWS マネジメントコンソール、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターにシャードを追加できます。Redis (クラスターモードが有効) クラスターにシャードを追加すると、既存のシャードのすべてのタグが新しいシャードにコピーされます。

シャードの追加 (コンソール)

AWS マネジメントコンソール を使用して、Redis (クラスターモードが有効) クラスターに 1 つ以上のシャードを追加できます。以下の手順では、このプロセスについて説明します。

Redis (クラスターモードが有効) クラスターにシャードを追加するには

  1. https://console.aws.amazon.com/elasticache/ にある ElastiCache コンソールを開きます。

  2. ナビゲーションペインで、[Redis] を選択します。

  3. シャードを追加する Redis (クラスターモードが有効) クラスターの名前 (クラスター名の左にあるボックスではなく) を見つけて選択します。

    ヒント

    Redis (クラスターモードが有効) クラスターは、[シャード] 列の値が 1 以上になります。

  4. [Add shard] を選択します。

    1. [追加するシャード数] で、このクラスターに追加するシャード数を選択します。

    2. [アベイラビリティーゾーン] で、[No preference] または [Specify availability zones] を選択します。

    3. [Specify availability zones] を選択した場合は、各シャードのそれぞれのノードごとに、アベイラビリティゾーンのリストからノードのアベイラビリティーゾーンを選択します。

    4. [Add] を選択します。

シャードの追加 (AWS CLI)

以下のプロセスでは、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, or Unix 用:

aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --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-count 4 ^ --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」を参照してください。

シャードの追加 (ElastiCache API)

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 マネジメントコンソール、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターからシャードを削除できます。

シャードの削除 (コンソール)

以下のプロセスでは、AWS マネジメントコンソール を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。

レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定したシャードはリクエストに応じてレプリケーショングループから削除されます。データが残りのノードグループに収まらない場合、プロセスは終了します。プロセスの終了により、レプリケーショングループはリクエストが行われる前と同じノードグループ構成のままになります。

Redis (クラスターモードが有効) を使用して、AWS マネジメントコンソール クラスターから 1 つ以上のシャードを削除できます。レプリケーショングループのすべてのシャードを削除することはできません。代わりに、レプリケーショングループを削除する必要があります。詳細については、「レプリケーショングループの削除」を参照してください。次の手順では、1 つ以上のシャードを削除する手順を説明します。

Redis (クラスターモードが有効) クラスターからシャードを削除するには

  1. https://console.aws.amazon.com/elasticache/ にある ElastiCache コンソールを開きます。

  2. ナビゲーションペインで、[Redis] を選択します。

  3. シャードを削除する Redis (クラスターモードが有効) クラスターの名前 (クラスター名の左にあるボックスではなく) を見つけて選択します。

    ヒント

    Redis (クラスターモードが有効) クラスターは、[シャード] 列の値が 1 以上になります。

  4. シャードの一覧から、削除する各シャードの名前の左にあるチェックボックスを選択します。

  5. [Delete shard] を選択します。

シャードの削除 (AWS CLI)

以下のプロセスでは、AWS CLI を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。

重要

レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャード (--node-groups-to-remove) はリクエストに応じてレプリケーショングループから削除され、キースペースは残りのシャードにマッピングされます。データが残りのノードグループに収まらない場合、プロセスは終了します。プロセスの終了により、レプリケーショングループはリクエストが行われる前と同じノードグループ構成のままになります。

Redis (クラスターモードが有効) を使用して、AWS CLI クラスターから 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, or Unix 用:

aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 2 \ --node-groups-to-remove "0002" "0003" \ --apply-immediately

Windows の場合:

aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 2 ^ --node-groups-to-remove "0002" "0003" ^ --apply-immediately

詳細については、AWS CLI ドキュメントの「modify-replication-group-shard-configuration」を参照してください。

シャードの削除 (ElastiCache API)

ModifyReplicationGroupShardConfiguration オペレーションを使うことで、ElastiCache API を使用して Redis (クラスターモードが有効) クラスターのシャードをオンラインで再構成できます。

以下のプロセスでは、ElastiCache API を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再構成を行う方法について説明します。

重要

レプリケーショングループからノードグループ (シャード) を削除する前に、ElastiCache はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャード (NodeGroupsToRemove) はリクエストに応じてレプリケーショングループから削除され、キースペースは残りのシャードにマッピングされます。データが残りのノードグループに収まらない場合、プロセスは終了します。プロセスの終了により、レプリケーショングループはリクエストが行われる前と同じノードグループ構成のままになります。

Redis (クラスターモードが有効) API を使用して、ElastiCache クラスターから 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>

詳細については、ElastiCache API リファレンスの「ModifyReplicationGroupShardConfiguration」の説明を参照してください。

オンラインのシャード再分散

AWS マネジメントコンソール、AWS CLI、または ElastiCache API を使用して、Redis (クラスターモードが有効) クラスターからシャードを再分散できます。

オンラインのシャード再分散 (コンソール)

以下のプロセスでは、AWS マネジメントコンソール を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再分散を行う方法について説明します。

Redis (クラスターモードが有効) クラスターでシャード間のキースペースを再分散するには

  1. https://console.aws.amazon.com/elasticache/ にある ElastiCache コンソールを開きます。

  2. ナビゲーションペインで、[Redis] を選択します。

  3. 再分散する Redis (クラスターモードが有効) クラスターの名前 (名前の左にあるボックスではなく) を選択します。

    ヒント

    Redis (クラスターモードが有効) クラスターは、[シャード] 列の値が 1 以上になります。

  4. [再分散] を選択します。

  5. プロンプトが表示されたら、[再分散] を選択します。次のようなメッセージが表示されることがあります。レプリケーショングループのスロットは均一に分散されています。Nothing to do.(サービス: AmazonElastiCache; ステータスコード: 400; エラーコード: InvalidReplicationGroupState; リクエスト ID: 2246cebd-9721-11e7-8d5b-e1b0f086c8cf)。この場合、[キャンセル] を選択します。

オンラインのシャード再分散 (AWS CLI)

modify-replication-group-shard-configuration を使って以下のパラメータを使用します。

パラメーター

  • -apply-mmediately – 必須シャードの再構成オペレーションがすぐに開始するよう指定します。

  • --replication-group-id – 必須シャードの再構成オペレーションをどのレプリケーショングループ (クラスター) で実行するかを指定します。

  • --node-group-count – 必須クラスター内のすべてのシャードでキースペースを再分散するため、この値は現在のシャード数と同じである必要があります。

以下のプロセスでは、AWS CLI を使用してシャードを削除し、Redis (クラスターモードが有効) クラスターでシャードの再分散を行う方法について説明します。

例 - クラスターのシャードの再分散

次の例では、Redis (クラスターモードが有効) クラスター my-cluster のスロットを再分散して、スロットができるだけ等分に分散されるようにします。--node-group-count の値 (4) は、クラスターの現在のシャード数です。

Linux, macOS, or Unix 用:

aws elasticache modify-replication-group-shard-configuration \ --replication-group-id my-cluster \ --node-group-count 4 \ --apply-immediately

Windows の場合:

aws elasticache modify-replication-group-shard-configuration ^ --replication-group-id my-cluster ^ --node-group-count 4 ^ --apply-immediately

詳細については、AWS CLI ドキュメントの「modify-replication-group-shard-configuration」を参照してください。

オンラインのシャード再分散 (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>

詳細については、ElastiCache API リファレンスの「ModifyReplicationGroupShardConfiguration」の説明を参照してください。