AWSの障害報告を意訳してみた
AWSの2019/8/23に東京リージョンで発生した障害の報告書がAWSより提示されています。このままではエンドユーザーに出しづらいと思いますので、日本の障害報告書っぽい体裁にまとめてみました。
内容については保証いたしませんのでご容赦ください。
障害報告
概要
2019年8月23日(金)12時36分から15時21分にかけて、AWS東京リージョン (AP-NORTHEAST-1)に含まれる一つのアベイラビリティーゾーンが利用するデータセンターの一部の冷却装置が作動しなくなりました。そのためEC2インスタンスおよびEBSボリュームを構成する機器が過熱し、パフォーマンスが劣化しました。一部の機器は電源が停止しました。EC2インスタンスおよびEBSボリュームは18時30分までに大部分が回復しました。
また、EC2 RunInstances API、またオートスケールでの新規起動も同日16時05分まで影響を受けました。
経緯
2019年8月23日
12:36 AWS東京リージョン (AP-NORTHEAST-1)に含まれる一つのアベイラビリティーゾーンが利用するデータセンターの一部の冷却装置が停止した。
これ以降、同場所で動作するEC2インスタンスおよびEBSボリュームを動作させる機器のパフォーマンスが劣化する、電源が停止する等の影響が発生した。
13:21 EC2 RunInstances API に影響が出始める。該当のアベイラビリティーゾーンでAPIを利用したEC2 インスタンスの起動、および冪等性トークン(注1)を使用して RunInstances API を東京リージョンで実行した場合に、エラー率の上昇が発生した。
14:51 エンジニアは、冪等性トークンと Auto Scaling グループの問題を解決した。
15:21 冷却装置が復旧し、室温が通常状態に戻り始めた。
16:05 EC2 コントロールプレーンサブシステムのリストアが完了した。
16:05 EC2 インスタンス起動についてのエラー率上昇が解消した。
18:30 影響を受けた EC2 インスタンスと EBS ボリュームの大部分は回復した。
原因と一時対応
データセンター内の冷却装置の制御を行っている制御システムの障害によって、冷却装置が動作しなくなったのが原因です。
この本制御システムは、ファン、冷却装置、温度センサーなどのサードパーティ製デバイスとの通信を可能にするサードパーティ製のコードが含まれています。直接または組み込みプログラマブルロジックコントローラ(PLC)を介して通信し実際のデバイスと通信します。
事象発生直前に、本制御システムは制御しているホスト群から1ホストを除外するフェイルオーバー動作を行っていました。この動作において、複数のデータセンター内の機器と最新情報を把握するため通信が発生するのですが、サードパーティー製のコードの不具合により通信が過度に発生し最終的には動作しなくなりました。
AWSのデータセンターは、本制御システムに障害が発生した場合、その機能が回復するまで冷却システムについては最大冷却モードになるように設計されています。本件においてはほとんどの冷却システム群では正常に機能しましたが、一部においてのみ想定通りに動作せず停止しました。
また、上記を含む異常時を想定した追加の安全策として、AWSのデータセンターオペレーターは冷却システムを、本制御システムを迂回させ熱風を非常に素早く排出させる「パージ」モードに切り替えることができます。運用チームはこのパージモードを試みましたがこれも失敗しました。この結果、停止した冷却システムがカバーするエリアの温度が上昇し、サーバーの温度が許容限度を超え、サーバーの電源が停止し始めました。
オペレータが、本障害にて影響を受けた冷却装置の周辺の機器について手動で調査し、リセットを行いました。その対応時に一部の空調ユニットを制御するPLCが動作しないことが確認されています。PLCのリセットを行った結果、冷却システムが正常に動作するようになり室温が低下しはじめました。
暫定対応
現在、サードパーティーのベンダーと協力し、本制御システムおよび、応答が無くなったPLCの不具合に関する調査を行っております。
再発防止策として、本障害のトリガーとなったフェイルオーバー機能を無効にしています。
仮に同様の事象が発生したとしても素早い対応が取れるように、オペレーターに検知および復旧についてのトレーニングを実施済みです。当該シナリオが発生時にもお客様への影響が及ぶ前にシステムのリセットを実施します。
また、「パージ」モードについても、空調ユニットが本制御システムだけではなくPLCもバイパスできるように改修を進めています。最新のデータセンターではこの方法をすでに使用しています。
補足事項
本障害においては、異なるアベイラビリティーゾーンのEC2インスタンスやEBSボリュームへの影響は発生しておりません。したがって、可用性を重視される場合には複数のアベイラビリティーゾーンを利用したアーキテクチャーを引き続き推奨いたします。
注
注1 複数のインスタンスを起動させる危険なく、インスタンスの起動をリトライする機能
感想
RDSも当時障害となったと思いますが触れられていません。また、Multi AZであってもELBが動作しないケースがあった件についても記載はありません。
このまま収束するのかわかりませんが、ご参考になれば幸いです。