独自設計した ElastiCache for Valkey または ElastiCache for Redis OSS クラスターのフェイルオーバーイベントとリカバリーイベントにおけるベストプラクティスに準拠する方法を教えてください。
独自設計した Amazon ElastiCache for Valkey または Amazon ElastiCache for Redis OSS クラスターでのフェイルオーバーイベントにおける、ベストプラクティスに準拠したいです。
簡単な説明
フェイルオーバーとリカバリのイベントは、ElastiCache の耐障害性を実現するための Amazon ElastiCache の重要な要素です。ただし、フェイルオーバーとリカバリのイベントが発生すると、これらのイベントがアプリケーションのパフォーマンスと可用性に影響する可能性があります。
次の手順を実行し、クラスターに影響するフェイルオーバーとリカバリのイベントによる問題を軽減することをおすすめします。
- イベントをレビューします。
- イベントの原因を把握します。
- イベントの発生に備えます。
- イベント通知を設定します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
イベントをレビューする
ElastiCache は、クラスター、セキュリティグループ、およびパラメータグループに関連するさまざまなイベントをログに記録します。
イベントには、リソースの作成と削除、スケーリング操作、フェイルオーバー、ノードの再起動、スナップショットの作成が含まれますが、これらに限定されません。ElastiCache クラスター内のイベントを詳細に理解して分析するために、ElastiCache イベントをレビューしてください。
ElastiCache イベントログのフェイルオーバーイベント例:
December 5, 2024, 10:12:20 Finished recovery for cache nodes 0001 December 5, 2024, 10:10:48 Recovering cache nodes 0001 December 5, 2024, 10:05:45 Recovering cache nodes 0001 December 5, 2024, 10:04:24 Failover from master node <node name> to replica node <node name> completed
ElastiCache イベントログのリカバリイベント例:
2022-10-05 19:20 Finished recovery for cache nodes 0001 2022-10-05 19:18 Recovering cache nodes 0001 2022-10-05 19:14 Recovering cache nodes 0001
注: Amazon ElastiCache for Memcached はフェイルオーバーをサポートしていませんが、リカバリイベントのイベントログに同様のメッセージが表示される場合があります。
イベントの原因を把握する
フェイルオーバーイベント中、ElastiCache は使用できないプライマリノードをレプリカノードに置き換えます。ElastiCache は、ユーザーが要求したアクションや計画されたイベント用のプライマリノードも置き換えます。詳細については、「Amazon ElastiCache に関するよくある質問」を参照してください。
イベントの例:
- フェイルオーバー機能をテストする
- 計画的なメンテナンスを実施する
- アベイラビリティーゾーンの問題を解決する
レプリカノードで可用性の問題が発生した場合、ElastiCache はそのレプリカを新しいレプリカノードに置き換えます。
注: この置換が発生しても、フェイルオーバーイベントは開始されません。
このような状況で ElastiCache がクラスターの復元を試みた場合、ElastiCache はそれらのリカバリイベントをログに記録します。
注: ノードがプライマリであるかどうかを判断するには、Amazon CloudWatch メトリクス IsMaster を使用します。詳細については、「Valkey および Redis OSS のメトリクス」を参照してください。
予期しないフェイルオーバーとリカバリのイベント
ElastiCache では、プライマリノードに予期せぬ障害が発生し、サービスにレプリカノードをプライマリロールに昇格させるよう求めた場合、計画外のフェイルオーバーが発生します。同様に、レプリカノードを交換する必要がある場合、レプリカに障害が発生すると、ElastiCache は自動的に新しいレプリカノードをプロビジョニングします。これらの両プロセスにより、ダウンタイムを最小限に抑え、高可用性を維持します。計画外のフェイルオーバーと交換の一般的な原因を次に示します。
- ハードウェア障害、ネットワークの問題、アベイラビリティーゾーンの障害など、ElastiCache ホストに関連する根本的な問題に対し、ElastiCache がリカバリを実行します。AWS インフラストラクチャでは、まれに障害が発生した場合も、自動プロセスによりクラスターの高可用性を実現しています。
- 負荷の高いワークロードでは、Amazon ElastiCache for Redis OSS と Amazon ElastiCache for Valkey はシングルスレッドであるため、実行時間が長いコマンドにより他の操作がブロックされる可能性があります。クラスタの負荷が高すぎると、リソースの過剰利用や枯渇が発生し、フェイルオーバーやリカバリにつながる可能性があります。たとえば、複雑なコマンド、非効率的な Lua スクリプト、大規模なキーベースの操作などでは、クラスターに負荷がかかり、パフォーマンスが低下する可能性があります。
注: アベイラビリティーゾーンの一時的な中断によりプライマリレプリカに障害が発生した場合、ElastiCache はアベイラビリティーゾーンの回復後に新しいレプリカを起動します。
計画されたフェイルオーバーとリカバリのイベント
計画されたフェイルオーバーとリカバリのイベントは、スケジュールされたメンテナンスまたはユーザーが開始した操作により発生する可能性があります。
定期メンテナンスでは、AWS は ElastiCache クラスターのセキュリティ、信頼性、運用パフォーマンスを強化するために ElastiCache フリートを定期的にアップグレードします。継続的なマネージドメンテナンスの一環としてのノード交換やサービス更新などの定期メンテナンスイベントでは、フェイルオーバーやリカバリのイベントが開始される場合があります。詳細については、「Amazon ElastiCache マネージドメンテナンスとサービス更新のヘルプページ」を参照してください。
ユーザーが開始する操作では、そのユーザーは TestFailover API、AWS CLI コマンド test-failover、または ElastiCache コンソール 経由で TestFailover を開始します。リードレプリカをプライマリクラスターモードが無効なクラスターに昇格させるには、昇格操作を開始します。詳細については、「Valkey または Redis OSS (クラスターモード無効) レプリケーショングループのリードレプリカをプライマリに昇格させる」を参照してください。
注: 大規模な運用イベント中などの状況では、AWS がこの API をブロックすることがあります。AWS が API をブロックした場合は、イベントログに次のメッセージが表示されます。 「Test Failover API called for node group 0001」
イベントの発生に備える
メンテナンスやサービスの更新などの計画されたフェイルオーバーイベントでは、クラスターが受信書き込みリクエストを処理すると、ElastiCache がノードを置き換えます。問題を軽減するには、計画されたフェイルオーバーイベントにおけるベストプラクティスに従ってください。詳細については、「Amazon ElastiCache マネージドメンテナンスとサービス更新のヘルプページ」を参照してください。
予定外のフェイルオーバーイベントでは、クラスターでマルチ AZ を有効にすると、ElastiCache のフェイルオーバーが自動的に発生します。
注: レプリカエンドポイントを使用するノードへの書き込み時にレプリカでフェイルオーバーが発生した場合、そのノードが使用できなくなる可能性があります。レプリカを置換した後は、ノードは読み取りリクエストを受け付けられるようになります。
予定されたイベントや予定外のイベントで発生する問題を軽減するには、接続と構成のベストプラクティスに従ってください。
イベント通知を設定する
イベントとその原因に迅速に対応するには、クラスターでフェイルオーバーまたは復旧が発生したときに通知を送信するように ElastiCache を設定します。詳細については、「Amazon Simple Notification Service (Amazon SNS) 通知の管理」を参照してください。
ElastiCache で通知に Amazon SNS を使用するように設定すると、次の例のような通知が届きます。
リカバリイベントの例:
Recovery reason : Recovery completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
フェイルオーバーイベントの例:
Failover reason : Failover completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
注: ElastiCache for Memcached は、リカバリーイベントの拡張メッセージをサポートしていません。
関連情報
Amazon CloudWatch を使用して Amazon ElastiCache for Redis におけるベストプラクティスを監視する
ElastiCache for Redis で遅延が増加した場合の問題をトラブルシューティングする方法を教えてください
独自設計の ElastiCache for Redis クラスターにおける CPU 使用量の増加をトラブルシューティングする方法を教えてください
