バージニア北部リージョンで障害が発生するとヒヤヒヤする理由
こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。
日本時間 2023年06月14日 午前4時18分~午前7時42分 にバージニア北部リージョン(us-east-1)の複数のサービスにおいてエラーレートの上昇および遅延が発生していました。
AWS Health Dashboard に記載されたいた情報は以下の通りです。
Jun 13 3:42 PM PDT Between 11:49 AM PDT and 3:37 PM PDT, we experienced increased error rates and latencies for multiple AWS Services in the US-EAST-1 Region. Our engineering teams were immediately engaged and began investigating. We quickly narrowed down the root cause to be an issue with a subsystem responsible for capacity management for AWS Lambda, which caused errors directly for customers (including through API Gateway) and indirectly through the use of other AWS services. Additionally, customers may have experienced authentication or sign-in errors when using the AWS Management Console, or authenticating through Cognito or IAM STS. Customers may also have experienced issues when attempting to initiate a Call or Chat to AWS Support. As of 2:47 PM, the issue initiating calls and chats to AWS Support was resolved. By 1:41 PM, the underlying issue with the subsystem responsible for AWS Lambda was resolved. At that time, we began processing the backlog of asynchronous Lambda invocations that accumulated during the event, including invocations from other AWS services. As of 3:37 PM, the backlog was fully processed. The issue has been resolved and all AWS Services are operating normally.
バージニア北部リージョンで異常が発生するとヒヤヒヤする理由
普段東京リージョン使っているから関係ないや、には私はなりませんでした。バージニア北部リージョンで障害と聞いてヒヤヒヤしたのが個人的な気持ちです。
バージニア北部リージョンは重要な役割を担っているリージョンなのです。
その理由を説明する前に AWS サービスを縁の下で支えるグローバルインフラストラクチャとサービス概念を確認します。
コントロールプレーンとデータプレーン
AWS のほとんどのサービスはコントロールプレーンとデータプレーンという概念に分かれています。
コントロールプレーンはリソースの作成、読み取り、更新、削除、リスト(CRUDL)といった管理 API を提供しています。
データプレーンはサービスの主機能を提供しています。
EC2 で例えると、物理的なコンピュートリソースの確保、ENI 割当て、EBS ボリューム割当てなどをコントロールプレーンが担当し、
インスタンスそのものや EBS ボリュームへの I/O などをデータプレーンが担っています。
パーティション
パーティションという概念もあります。
AWS は世界中に多くのリージョンを用意していますが、それらは3つあるパーティションの何れかに分類されます。
コマーシャルパーティション、中国パーティション、GovCloud パーティションの3つのパーティションが存在します。
クロスリージョン機能はこのパーティション内でのみ機能します。例えば、S3 クロスリージョンレプリケーションをオレゴンリージョン~GovCloud 間で行うことはできません。
AWS サービスタイプ
AWS は3つのタイプのサービスを提供しています。ゾーナルサービス、リージョナルサービス、グローバルサービスの3つです。
ゾーナルサービスは、リージョン内の各アベイラビリティゾーンで独立して動作します。
リージョナルサービスは、AWS がアベイラビリティゾーンの上に構築したサービスです。複数のアベイラビリティゾーンに展開されたサービスを論理的にグループ化し、単一のリージョナルエンドポイントを提供します。
グローバルサービスは、単一のリージョンに制約されるリソースを持たないサービスです。
本題
上3つの概念を理解したところで本題に入ります。
AWS サービスタイプで説明したグローバルサービスは、単一のリージョンに集中化されたコントロールプレーンと、グローバルに分散化されたデータプレーンを持っています。 グローバルサービスのコントロールプレーンはパーティションごとに1つです。
Global services を参照すると商用パーティションでのコントロールプレーンの場所が示されています。
- パーティショナルサービス
- AWS IAM (us-east-1、バージニア北部)
- AWS Organizations (us-east-1、バージニア北部)
- AWS Account Management (us-east-1、バージニア北部)
- Route 53 Application Recovery Controller (ARC) (us-west-2、オレゴン)
- AWS Network Manager (us-west-2、オレゴン)
- Route 53 Private DNS (us-east-1、バージニア北部)
- エッジネットワークグローバルサービス
- Route 53 Public DNS (us-east-1、バージニア北部)
- Amazon CloudFront (us-east-1、バージニア北部)
- AWS WAF Classic for CloudFront (us-east-1、バージニア北部)
- AWS WAF for CloudFront (us-east-1、バージニア北部)
- Amazon Certificate Manager (ACM) for CloudFront (us-east-1、バージニア北部)
- AWS Global Accelerator (AGA) (us-west-2、オレゴン)
- AWS Shield Advanced (us-east-1、バージニア北部)
- シングルリージョンサービス
- Route 53 (us-east-1、バージニア北部)
- S3 (us-east-1、バージニア北部)
- S3 Multi-Region Access Points (us-west-2、オレゴン)
- CloudFront (us-east-1、バージニア北部)
そうなのです。バージニア北部リージョンで障害が発生すると IAM の CRUDL 操作 API が実行できなくなる可能性があるのです。
認証と認可は各リージョンにあるデータプレーンが担っているので大きなインパクトは無いかもしれません。それでも予期せぬ事象が起こるかもしれないと考えるとヒヤヒヤします。ロールの存在確認をしてから後続処理、のようなロジックがあるとヒヤヒヤ度合いが増します。
IAM 以外でもバージニア北部リージョンにのみコントロールプレーンが存在するサービスがあります。データプレーンはリージョンにあるといえアプリケーションの正常性を確認するまではヒヤヒヤします。
参考
AWS Fault Isolation Boundaries
[レポート] SUP401 Building resilient multi-site workloads using AWS global services
AWS の障害分離境界について学べるホワイトペーパー AWS Fault Isolation Boundaries を読んでみた
以上、吉井 亮 がお届けしました。