Amazon ElastiCache for Redis ノードタイプを変更したときに発生するエラーをトラブルシューティングしたいと考えています。
簡単な説明
ElastiCache for Redis ノードタイプを変更したときに発生するエラーの一般的な原因は次のとおりです。
- ターゲットノードタイプのメモリが不足している
- 容量が不十分
- Elastic Network Interface または IP アドレスが不十分
- 指定されたノードタイプがアベイラビリティーゾーンで使用できない
- Redis エンジンのバージョンがターゲットノードタイプをサポートしていない
- ApplyImmediately パラメータが false に設定されている
- ノードの使用率が高い
解決策
注:ElastiCache イベントと AWS CloudTrail を使用すると、さらに詳しい情報を得たり、エラーメッセージを確認したりできます。
ターゲットノードタイプのメモリが不足している
ターゲットノードタイプのメモリが十分でないと、次のエラーメッセージが表示されます。
「"Failed to scale down to cache node type Replication Group <replication_group_name> because the node has insufficient memory.Please select a different node type or reduce current memory usage and retry.」
このエラーは、BytesUsedForCache メトリクスがターゲットノードタイプの最大容量よりも大きい場合に発生します。
このエラーを解決するには、新しいノードタイプがすべてのデータと Redis の必要なオーバーヘッドに対応できる大きさにしてください。また、BytesUsedForCache メトリクスに表示される現在の合計メモリ使用量が、ターゲットノードタイプの最大容量よりも少なくなければなりません。
**注:**デフォルトでは、各キャッシュノードのメモリの 25% が非データ使用とバックグラウンド書き込み用に予約されています。この容量は reserved-memory-percent パラメーターで設定します。予約されたメモリにより、キャッシュデータに使用される最大メモリは、データストレージに使用できるメモリの 75% まで減少します。詳細については、「Redis node-type specific parameters」を参照してください。この容量を変更するには、カスタムパラメータグループを作成します。reserve-memory-percent を 0 に設定すると、スナップショットなどのクラスター操作が失敗する可能性があります。詳細については、「ElastiCache クラスターをスケールダウンできないのはなぜですか?」を参照してください。
容量が不十分
InsufficientCacheClusterCapacity エラーは、ElastiCache が特定のアベイラビリティーゾーンから要求された数のインスタンスを割り当てられないことを示しています。詳細については、「Amazon ElastiCache error messagesの「InsufficientCacheClusterCapacity」セクションを参照してください。
Elastic Network Interface または IP アドレスが不十分
Elastic Network Interface または IP アドレスが不十分な場合、次のエラーメッセージが表示されます。
「Failed to modify the cache node type to Replication Group <replication_group_name> due to insufficient Elastic Network Interface or free IP address.Please verify your network limits and retry.」
このエラーを解決するには、Elastic Network Interface または IP アドレスに適切な容量を確保します。この場合は、Service Quotas を使用して上限を増やします。詳細については、「AWS リージョンの上限に達した場合に、Elastic Network Interface を増やす方法を教えてください」を参照してください。また、クラスターが使用するサブネットに十分な空きIPアドレスがあることも確認してください。
指定されたノードタイプがアベイラビリティーゾーンで使用できない
アベイラビリティーゾーンでサポートされていないノードタイプを使用すると、次の InvalidParameterValue エラーメッセージが表示されます。
「Specified node type <node_type> is not available in AZ <availability_zone>」
使用可能なノードタイプの詳細については、「ElastiCache クラスターをスケールダウンできないのはなぜですか?」を参照してください。
利用可能なノードタイプを一覧表示するには、list-allowed-node-type-modifications APIを使用します。アベイラビリティーゾーンで使用できないノードタイプは、list-allowed-node-type-modifications API の出力に表示されません。これらの表示されないノードは、AWS マネジメントコンソールでクラスターを変更する際にドロップダウンメニューに表示されません。
Redis エンジンのバージョンがターゲットノードタイプをサポートしていない
ノードタイプによっては、新しいバージョンの Redis エンジンが必要です。詳細については、「Supported node types」を参照してください。このエラーを解決するには、ノードタイプをアップグレードする前に Redis エンジンのバージョンをアップグレードしてください。
ApplyImmediately パラメータが false に設定されている
ApplyImmediately パラメーターが false に設定されていると、レプリケーショングループのノード変更は、次回のメンテナンスまたは失敗に伴う再起動時に適用されます。すぐに変更を適用する必要がある場合は、ApplyImmediately パラメーターを true に設定します。
**注:**ノードタイプの変更にかかる時間は、ノードタイプとクラスター内のデータ量によって異なります。そのため、クラスターへのトラフィックが最も少ないときにアップグレードを実行するのがベストプラクティスです。
ノードの使用率が高い
変更中にクラスターに大きなワークロードがあると、ElastiCache ワークフローが妨害される可能性があります。そのため、データトラフィックが少ない時間帯にノードの変更を開始するのがベストプラクティスです。