何がおきたのか
色々なまとめがタイムラインに流れてきましたが、itmediaの情報が良い感じでした。

根本原因
根本原因はDynamoDBの自動更新時に、超レアな競合がおきてからのDNSレコードが適用された。
自動化システムでもそれを修復できんかった。
詳細はこちらの記事によくまとまってます。

各サービスへの波及
AWS各サービスは内部DBとして主に名前解決として利用しているケースがめちゃくちゃあるので起動失敗とか誤動作が発生した。
EC2
EC2では、DropletWorkflow Manager (DWFM)と呼ばれるサブシステムが物理サーバ(ドロップレットと呼ぶ)について、どのサーバが生きてて、誰が使ってるだのっていう状態管理をDynamoDBでしてるもんだから、そもそもアクセス出来なくなると新規起動不可になる。
なお、DWFMはリージョンごとに存在するので、今回はEC2に関してはus-east-1のみが影響を受けた。
NLB
DynamoDB復旧後、Network ManagerへのEC2管理イベントが大量に流れこみ、処理しきれず伝搬が大幅に遅延した。その影響でNLBのターゲットに対する判定が不安定になり、unhealthyターゲットを除外したり復旧させたりを繰り返した。
その結果実効キャパシティが激減し、接続エラーが頻発。
補足
なんでALBは影響ない?
それぞれの特性によるもの。どっちが良い悪いではない。
・NLB
L4(TCP)のレイヤーでみていて、一瞬でもNGだとunhealthy判定される。それはNLBの特性。
・ALB
L7(HTTP)のレイヤーでみていて、一瞬だけNGでもunhealthy判定はされず、次のヘルスチェックまで待つ。
所感
利用者としてDNSレコードの更新の話は知るすべも無いかも知れません。
それでも、AWS内部でどのサービスが裏でどのどのサービスの影響を受けるのか、常日頃からキャッチアップしておく必要性は感じました。
ではまた。
