REL 11: コンポーネントの障害に耐えるようにワークロードを設計するにはどうすればよいですか?
高い可用性と低い平均復旧時間 (MTTR) の要件を持つワークロードは、高い弾力性があるように設計する必要があります。
リソース
Static stability in AWS: AWS re:Invent 2019: Introducing The Amazon Builders’ Library
(DOP328)
AWS OpsWorks: Using Auto Healing to Replace Failed Instances
What Is Amazon EventBridge?
Amazon Route 53: Choosing a Routing Policy
What Is AWS Global Accelerator?
The Amazon Builders' Library: Static stability using Availability Zones
The Amazon Builders' Library: Implementing health checks
Well-Architected lab: Level 300: Implementing Health Checks and Managing Dependencies
to Improve Reliability
The Berkeley/Stanford Recovery-Oriented Computing (ROC) Project
Multiple data center HA network connectivity
AWS Marketplace: products that can be used for fault tolerance
APN
Partner: partners that can help with automation of your fault tolerance
ベストプラクティス:
-
ワークロードのすべてのコンポーネントをモニタリングしてエラーを検知する: ワークロードの状態を継続的にモニタリングすることで、お客様と自動化システムがパフォーマンスの低下または完全な障害の発生を速やかに把握できるようにします。ビジネス価値に基づいて主要業績評価指標 (KPI) をモニタリングします。
-
正常なリソースにフェイルオーバーする: リソース障害の発生時に、正常なリソースが引き続きリクエストに対応できるようにします。ロケーション障害 (アベイラビリティーゾーンや AWS リージョンなどにおける障害) に対しては、障害のないロケーションの正常なリソースにフェイルオーバーするシステムを用意します。
-
すべてのレイヤーの修復を自動化する: 障害を検出したら、自動化機能を使用して修復するアクションを実行します。
-
静的安定性を使用してバイモーダル動作を防止する: バイモーダル動作とは、たとえばアベイラビリティーゾーンに障害が発生した場合に新しいインスタンスの起動に依存するなど、通常モードと障害モードでワークロードが異なる動作を示す場合をいいます。バイモーダル動作を防止するために、静的に安定し、1 つのモードでのみ動作するワークロードを構築する必要があります。この場合、1 つの AZ が削除された場合にワークロードの負荷を処理するのに十分な数のインスタンスを各アベイラビリティーゾーンにプロビジョニングしてから、Elastic Load Balancing または Amazon Route 53 ヘルスチェックを使用して、障害のあるインスタンスから負荷を分散します。
-
イベントが可用性に影響する場合に通知を送信する: 重大なイベントが検出されると、イベントによって引き起こされた問題が自動的に解決された場合でも、通知が送信されます。
改善計画
ワークロードのすべてのコンポーネントをモニタリングしてエラーを検知する
- モニタリング間隔は、どの程度迅速に復旧する必要があるかによって異なります: 復旧時間は復旧にかかる時間によって決まるため、この時間と目標復旧時間 (RTO) を考慮して、収集の頻度を決定する必要があります。
- EC2 インスタンスと Auto Scaling の詳細モニタリングが必要かどうかを判断する: 詳細モニタリングは 1 分間隔メトリクスを提供し、デフォルトのモニタリングは 5 分間隔メトリクスを提供します。
Enable or Disable Detailed Monitoring for Your Instance
Monitoring Your Auto Scaling Groups and Instances Using Amazon CloudWatch - RDS の拡張モニタリングが必要かどうかを判断する: 拡張モニタリングでは、RDS インスタンスのエージェントを使用して、RDS インスタンスのさまざまなプロセスまたはスレッドに関する有益な情報を取得します。
Enhanced Monitoring
Publishing Custom Metrics
Amazon CloudWatch Synthetics enables you to create user canaries
Publishing Custom Metrics
Using Amazon CloudWatch Alarms
Using CloudWatch Dashboards
正常なリソースにフェイルオーバーする
- ワークロードが Amazon S3 や Amazon DynamoDB などの AWS のサービスを使用している場合、自動的に複数のアベイラビリティーゾーンにデプロイされます。障害が発生した場合、AWS コントロールプレーンはトラフィックを正常な場所に自動的にルーティングします。
- Amazon RDS の場合、設定オプションとしてマルチ AZ を選択する必要があります。そして障害が発生すると、AWS はトラフィックを正常なインスタンスに自動的にルーティングします。
High Availability (Multi-AZ) for Amazon RDS - Amazon EC2 インスタンスまたは Amazon ECS タスクの場合、デプロイ先のアベイラビリティーゾーンを選択します。次に Elastic Load Balancing は、異常なゾーンのインスタンスを検出し、トラフィックを正常なゾーンにルーティングするソリューションを提供します。Elastic Load Balancing は、オンプレミスのデータセンター内のコンポーネントにトラフィックをルーティングすることもできます。
- TRANSLATION REQUIRED
- TRANSLATION REQUIRED
Overview of Amazon RDS Read Replicas - TRANSLATION REQUIRED
Amazon Route 53: Choosing a Routing Policy
What Is AWS Global Accelerator?
- TRANSLATION REQUIRED
すべてのレイヤーの修復を自動化する
How AWS Auto Scaling Works
Amazon EC2 Automatic Recovery
Amazon Elastic Block Store (Amazon EBS)
Amazon Elastic File System (Amazon EFS)
What is Amazon FSx for Lustre?
What is Amazon FSx for Windows File Server?
- AWS OpsWorks を使用することで、レイヤーレベルで EC2 インスタンスのオートヒーリングを設定できます
AWS OpsWorks: Using Auto Healing to Replace Failed Instances
What is AWS Step Functions?
What is AWS Lambda?
- Amazon EventBridge を使用して、CloudWatch アラームなどのイベントや他の AWS のサービスの状態の変化をモニタリングおよびフィルタリングできます。イベント情報に基づいて、AWS
Lambda (または他のターゲット) をトリガーして、ワークロードでカスタム修正ロジックを実行できます。
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
静的安定性を使用してバイモーダル動作を防止する
The Amazon Builders' Library: Static stability using Availability Zones
Static stability in AWS: AWS re:Invent 2019: Introducing The Amazon Builders’ Library (DOP328)
- バイモーダル動作を防止するために、静的に安定し、1 つのモードでのみ動作するシステムを構築する必要があります。この場合、1 つの AZ が削除された場合にワークロードの負荷を処理するのに十分な数のインスタンスを各ゾーンにプロビジョニングしてから、Elastic Load Balancing または Amazon Route 53 ヘルスチェックを使用して、障害のあるインスタンスから負荷を分散します。
- バイモーダル動作のもう 1 つの例は、障害発生時にクライアントがワークロードキャッシュをバイパスできるようにすることです。これは、クライアントのニーズに対応するソリューションのように思われるかもしれませんが、ワークロードのリクエストを大幅に変更し、障害が発生する可能性が高いため、許可すべきではありません。
イベントが可用性に影響する場合に通知を送信する
Creating a CloudWatch Alarm Based on a Static Threshold
What is Amazon Simple Notification Service?