Amazonが提供するクラウドサービスであるAmazon Web Services、通称AWS。
今回、そのAWSが東京リージョンにあるアベイラビリティゾーンの1つで大規模障害を引き起こしました。
ソシャゲやWebサービスが停止したことで、一般ユーザーに対してもかなりのインパクトがあったと思われます。
昼間にCoke Onの自販機を使おうとしたらスタンプが貯められなかったのですが、どうやらこの障害が原因のようです。
追記:今回の大規模障害の原因について
結論としては、特定のアベイラビリティゾーンで冷房の制御システムが故障し、データセンターがオーバーヒートしたことによりサービスが停止したとされています。
[04:18 AM PDT] Beginning at 8:36 PM PDT a small percentage of EC2 servers in a single Availability Zone in the AP-NORTHEAST-1 Region shutdown due to overheating. This resulted in impaired EC2 instances and degraded EBS volume performance for resources in the affected area of the Availability Zone. The overheating was caused by a control system failure that caused multiple, redundant cooling systems to fail in parts of the affected Availability Zone. The chillers were restored at 11:21 PM PDT and temperatures in the affected areas began to return to normal. As temperatures returned to normal, power was restored to the affected instances. By 2:30 AM PDT, the vast majority of instances and volumes had recovered. We have been working to recover the remaining instances and volumes. A small number of remaining instances and volumes are hosted on hardware which was adversely affected by the loss of power. We continue to work to recover all affected instances and volumes. For immediate recovery, we recommend replacing any remaining affected instances or volumes if possible. Some of the affected instances may require action from customers and we will be reaching out to those customers with next steps.
今回の障害はSLAの対象?
今回障害が発生したのはAmazon EC2およびRDSです。これらにはSLAがありますが、SLAには条件があります。
具体的な理由は次の通りです。
Amazon EC2
Amazon EC2では、稼働率が月間99.99%を下回った場合にサービスクレジットを提供するとされています。
ですが、このSLAの定義には注意が必要です。
EC2のSLA原文に関しては次のページをご覧ください。
https://aws.amazon.com/compute/sla/
AWS will use commercially reasonable efforts to make the Included Services each available for each AWS region with a Monthly Uptime Percentage of at least 99.99%, in each case during any monthly billing cycle (the “Service Commitment”).
https://aws.amazon.com/compute/sla/
太い赤文字で書いたところをよく読んでください。1か月あたり99.99%の稼働率を保証するのはアベイラビリティゾーン単位ではなく、リージョン単位です。
したがって、リージョンが丸ごと動かなくなったような場合以外はSLAによる補償は受けられないとみてよいでしょう。
AWS will use commercially reasonable efforts to ensure that each individual Amazon EC2 instance (“Single EC2 Instance”) has an Hourly Uptime Percentage of at least 90% of the time in which that Single EC2 Instance is deployed during each clock hour (the “Hourly Commitment”). In the event any Single EC2 Instance does not meet the Hourly Commitment, you will not be charged for that instance hour of Single EC2 Instance usage.
https://aws.amazon.com/compute/sla/
上記のSLAには続きがあり、毎正時(00分00秒~59分59秒)において各インスタンスの稼働率が90%を下回った場合は、そのEC2インスタンスに対しては課金されないこととなっています。
1時間あたり6分を超えてダウンしている場合は、課金されずに済むようです。
Amazon RDS
Amazon RDSには、月間99.95%のSLAが設定されています。
RDSのSLA原文に関しては次のページをご覧ください。
https://aws.amazon.com/rds/sla/
AWS will use commercially reasonable efforts to make Multi-AZ instances available with a Monthly Uptime Percentage of at least 99.95% during any monthly billing cycle (the “Service Commitment”).
https://aws.amazon.com/rds/sla/
もしRDSがシングルAZ構成であった場合、SLAの対象外であるためダウンしても補償を受けることはできません。
今回の障害はSLAの対象外である可能性が高いが…
SLAがあるとはいっても、実際に補償を受けるには適切な証拠を集めた上でAWSのサポートに申請する必要があります。
ダウンしていた証拠とともに申請することで、条件に合致していればサービスクレジットが提供されるという仕組みになっています。
自分から権利を主張しなければ、実際に被害を受けていても補償を受けられません。
EC2インスタンスの例外を除き、基本的に自分から能動的に動かなければ損をすることには注意が必要です。
クラウドは落ちる
形あるものは壊れるもの。クラウドも稀に大規模障害を起こすことがあります。
稼働率を100%にすることは不可能です。したがって、障害が起きることを前提に設計する必要があります。
小規模な個人サイトであればインスタンス1個で問題ないかもしれませんが、企業ユースの場合はサービスの停止が損害に直結するケースがあります。
費用は掛かりますが、適切に冗長化を行っておくこと、また障害発生時に別のサービスプロバイダに最小限のダウンタイムで切り替えられるような仕組みを整えておくことが大切です。