Facebookが10月5日の全面ダウンの詳細を報告。バックボーンの停止がBGP停止となりインターネットから離脱、外部からのアクセスを失いデータセンターに乗り込んで対応
FacebookおよびInstagramなどが日本時間の10月5日午前0時40分頃から午前8時頃まで全面的にダウンした件について、Facebookはその経過や原因についての詳細を「More details about the October 4 outage」として同社のブログで公開しました。
下記は同社CTO Mike Schroepfer氏のツイート。
Yesterday’s outage across our products was a bad one, so we’re sharing some more detail here on exactly what happened, how it happened, and what we’re learning from it: https://t.co/IXRt572h4c
— Mike Schroepfer (@schrep) October 5, 2021
何らかの原因でFacebookのバックボーンネットワークが全面的にダウン
Facebookの解説を順にひもときつつ、全面ダウンはなぜ起きたのか、どのように復活したのかを見ていきましょう。
Facebookは世界中にデータセンターを構築しており、専用のバックボーンネットワークでそれぞれが接続されています。そのバックボーンネットワークの定期メンテナンスが今回の全面ダウンの引き金になったと説明されています。
以下、英語の部分は同社の報告からの引用、続いてPublickeyによる日本語訳を紹介しています。
During one of these routine maintenance jobs, a command was issued with the intention to assess the availability of global backbone capacity, which unintentionally took down all the connections in our backbone network, effectively disconnecting Facebook data centers globally.
定期メンテナンスの作業中、グローバルなバックボーンネットワークの容量を確認する目的でコマンドを発行したところ、意図せずにバックボーンネットワークのすべての接続が停止し、事実上、世界中のFacebookデータセンターが切断されてしまいました。
なぜこのコマンドがバックボーンネットワークの接続停止を引き起こしたのかについての解説はありませんでしたが、今回の詳細報告の1つ前の同社からの報告「Update about the October 4th outage」では、バックボーンルーターの設定変更が原因と報告されています。ですので、メンテナンス時のコマンド実行が何らかの設定変更を引き起こした可能性が高いと思われます。
ただし、非常に重要なバックボーンネットワークに対して不用意なコマンドが実行されないよう、Facebookにはコマンド実行前にそのコマンドを監査する仕組みがあったにもかかわらず、その監査の仕組みにバグがあったため、今回のコマンドはその監査をすり抜けてしまったとも説明されています。
とにかく、Facebookのバックボーンネットワークが停止し、各地のデータセンターは相互の連携が絶たれました。
Facebookの内部ではさまざまな処理がグローバルでの分散処理や障害発生時のためのグローバルなデータレプリケーションなどが行われいることは間違いありません。各データセンターとも内部では大量のワーニングやエラーが発生したことでしょう。
障害を検知し、Facebook全体がインターネットから離脱
Facebookのデータセンター群全体とインターネットとのつなぎ目の役割を担うのがDNSサーバです。そしてこのDNSサーバは、データセンターの障害を検知した場合にはそのデータセンターをインターネットから切断する仕組みを備えていました。
今回はバックボーンネットワーク全体が停止したため、DNSサーバとすべてのデータセンターとの通信も途絶します。その結果、このDNSサーバはFacebook全体をインターネットから離脱させます。
To ensure reliable operation, our DNS servers disable those BGP advertisements if they themselves can not speak to our data centers, since this is an indication of an unhealthy network connection. In the recent outage the entire backbone was removed from operation, making these locations declare themselves unhealthy and withdraw those BGP advertisements.
Facebookの信頼性維持のために、DNSサーバーがデータセンターと通信ができなくなった場合には、ネットワーク接続が正常でないとしてBGPによる経路広告を停止します。今回の障害ではバックボーン全体が停止したため、これらの拠点すべてが自らが不健全であると宣言したことになり、これがBGPの経路広告の停止につながりました。
こうしてインターネットからFacebookが離脱し、全面ダウンとなりました。報告によると、これらは極めて短時間に発生(All of this happened very fast.)したとのことです。
データセンターの厳重なセキュリティで、エンジニアがなかなか中へ入れず
この全面ダウンに対して復旧作業にあたろうとしたFacebookのエンジニアは、いくつかの困難に直面します。
まずはFacebookのデータセンター全体がインターネットから見えなくなってしまい、しかもバックボーンネットワークも落ちてしまっている状態のため、自宅からもオフィスからもデータセンターに対してアクセスする手段がまったくなくなってしまったことです。
これでは復旧作業に着手することすらできません。
復旧作業を行うには、直接データセンターに足を運ぶしかないのです。
そこでエンジニアたちは、おそらくは自家用車などの手段で郊外にあるデータセンターへと乗り込んだことでしょう。しかしデータセンターのセキュリティは厳重であり、中へ入るのも、そこでシステムを変更することも容易ではありませんでした。
そのセキュリティをクリアして作業することに時間がかかってしまったとのこと。
But this took time, because these facilities are designed with high levels of physical and system security in mind. They’re hard to get into, and once you’re inside, the hardware and routers are designed to be difficult to modify even when you have physical access to them. So it took extra time to activate the secure access protocols needed to get people onsite and able to work on the servers.
データセンターは物理的にもシステム的にも高度なセキュリティを考慮して設計されており、侵入するのは難しく、また、物理的にアクセスできたとしても、ハードウェアやルーターを変更するのは難しい設計になっています。そのため、人が現場に行ってサーバを操作できるようにするために必要な安全なアクセスプロトコルを有効にするには多くの時間が必要でした。
それでもなんとか、データセンター内部に入り込んだエンジニアたちは障害の原因を取り除き、バックボーンネットワークを復活させることに成功しました。
データセンター規模の「ストーム」に事前訓練で対応
これですべては復旧に向かうはずですが、問題はまだ終わりではありません。
というのもサービスを一斉に再開しデータセンター内の機器が一斉に電力消費を開始すると、その急激な電力量の変化が電力系統やサーバやストレージをはじめとするさまざまな機器に対して故障や動作不良を引き起こす可能性があるためです。
しかしFacebookはこうした事態に対応する訓練を日頃から行っており、無事にデータセンターとバックボーンの再開を成功させました。
Helpfully, this is an event we’re well prepared for thanks to the “storm” drills we’ve been running for a long time now. In a storm exercise, we simulate a major system failure by taking a service, data center, or entire region offline, stress testing all the infrastructure and software involved.
幸いなことに、このような事態に備えて当社では「ストーム」演習を以前から実施していました。ストーム演習では、サービス、データセンター、地域全体をオフラインにする大規模なシステム障害をシミュレートし、関連するすべてのインフラとソフトウェアのストレステストを行っています。
ただしFacebookはバックボーン全体がオフラインになったことを想定した訓練はしたことがなかったことも明かしています。今回の規模でのシステム回復は、同社にとっても初体験だったことになります。
セキュリティの強化と内部障害からの回復とのトレードオフ
Facebookの今回の報告書は、今回のような内部で引き起こされた障害は同社にとって想定外であったことを吐露して結ばれています。
We’ve done extensive work hardening our systems to prevent unauthorized access, and it was interesting to see how that hardening slowed us down as we tried to recover from an outage caused not by malicious activity, but an error of our own making. I believe a tradeoff like this is worth it — greatly increased day-to-day security vs. a slower recovery from a hopefully rare event like this. From here on out, our job is to strengthen our testing, drills, and overall resilience to make sure events like this happen as rarely as possible.
私たちは不正なアクセスを防ぐためにシステムの強化を徹底的に行ってきましたが、悪意のある行為ではなく、私たち自身のミスによって引き起こされた障害から回復しようとしたときに、その強化がいかに足手まといになったかを知ることができたのは興味深いことでした。日々のセキュリティを大幅に向上させる一方で、今回のような稀な出来事からの復旧には時間がかかるという、このようなトレードオフには注視すべき価値があります。今後、私たちの仕事は、テストや訓練、そして全体的な回復力を強化し、このような出来事ができるだけ起こらないようにすることです。
外部からの脅威を想定してガチガチにセキュリティを固めた結果、それが内部で引き起こした障害の回復作業の足を引っ張ってしまったと。このトレードオフをどのように適切に着地させていくのか、同社の内部では今後も議論と実装と訓練が行われていくのでしょう。
あわせて読みたい
オンプレミスのストレージ群を抽象化してStorage as Codeを実現する「Pure Fusion」、Pure Storageが発表
≪前の記事
Windows 11にRPA機能の「Power Automate」標準搭載、インストール不要で利用可能に。マイクロソフトが発表