min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Youtube大規模障害 サーバ管理者の視点から(少しマトモな)分析を試みる

本日 2018/10/17(水)。Youtubeで大規模障害が発生

 

世の中では例えば「Twitterで #YouTubeDOWN タグが話題になった」とか「エラー画面に登場したサル画像のセンスがいい」とかホントどうでもいい情報しかニュースになっていない。

f:id:min117:20181017224636p:plain f:id:min117:20181017224712p:plain

 

しかしYoutubeが落ちた」というこの事実はもっと重大に捉えていいと思う。

 

現在YouTube毎日1ペタバイトの新規ストレージが必要なほど大量のデータがアップロードされるほどのサービスになっている。

japan.zdnet.com

f:id:min117:20181017225615p:plain

 

これが今まで一度も障害に陥ることなく動いていたこと自体がまず凄い。相当な冗長化が施されていたのだろう。それは、ディスクの冗長化ももちろんだが、ネットワークの冗長性が(相当に練られた)凄まじいものだったからだろうと想像できる。

 

それが今回落ちた。全世界からの動画リクエストを捌いてきた巨大サービスが、落ちた。これは本当に記録すべき日だし、記録されるべき出来事だと思う。

 

自分も(規模は小さいながらも)サーバを管理する身だし、せめて「発生した現象は具体的に何だったのか」「原因は何だったのか」くらいは想像してみたい。

 

発生した現象と原因の想定

 ① HTTPエラーコードは 500(Internal Server Errorだった

 ② 世界同時に起きた

 ③ 障害中は(サルの)画像が出た(出せた)

 ④ 1時間後に復旧した

 ⑤ 社会への影響(お祭り騒ぎ

 

順番に見ていく。

 

① HTTPエラーコードは 500(Internal Server Errorだった

 まずこれが目に付く。

f:id:min117:20181017232835p:plain

 

500は「サーバ内部エラー」だ。

 

404エラーではないから「コンテンツが存在しない」というわけではない。

 →「動画が削除された」とか「コンテンツが消えてしまった」とかではない。

 

504エラーではないから「ゲートウェイのエラー」というわけではない。

 →「ネットワーク障害」や「ルータ・スイッチの障害」というわけでもない。

f:id:min117:20181017233044p:plain

 

そして、505エラーの原因は概ねこのへんだろう。

ganbarustars.info

f:id:min117:20181017233817p:plain

f:id:min117:20181017233850p:plain

Googleほどの大企業が設定ミス(ディレクトリのパーミッションや改行コード)をやらかすとは考えにくい(起きてもチェックする仕組みがある)と思われるから、原因アクセスが集中しすぎていたことではなかろうか?

 

しかしYouTubeほどのシステムだし、アクセスが大量なのは日常なハズで。それでも耐えられない大きな負荷がかかったとすれば

 ・外部から攻撃があった

 ・外部から攻撃等は無かったが機器交換等でキャパが低くなっていた

等が考えられると思う。

 

世界同時に起きた

 これも気になる。

f:id:min117:20181017232905p:plain

 f:id:min117:20181017232759p:plain

Youtubeは世界サービスなんだから全世界で止まるのは当たり前じゃん」とも思いそうだが、それならオーストラリア大陸では一切起きていないのが不思議だ。

 

繰り返しになるが、今回のエラーコードは「500」つまりサーバ内部の問題であってネットワークの問題では無いとすれば全ユーザーで起きるのが当然なわけで、局所的に「発生しない」状態があるのがとても不思議。YouTubeはコンテンツサーバを世界に分散させている(?)からなのか。Googleの技術についてはまた調べてみる。

 

③ 障害中は(サルの)画像が出た(出せた)

 エラー中はサルの画像が出ていたらしい。

f:id:min117:20181017233028p:plain f:id:min117:20181017233032p:plain

これはつまり

 負荷の重い動画は(500エラーで)表示できない けど、

 負荷の軽い画像は表示できた ということだ。

この点からも、今回の障害はサーバ側の負荷増大が原因だったのだろうと想像できる。

 

さらにエラー画面には

If you see them,

send them this information as text ( screenshots frighten them)

もし彼ら(サル画像)を見かけたら、この文字列をテキストとしてサルたち(=Googleのエンジニア)に送ってあげてねスクリーンショットで送っちゃうとサルたちが怖がる=原因分析に使えない からヤメてね)

f:id:min117:20181017232736p:plain

とあるところを見るとこの文字列が原因分析に使える何からしいことが分かる。

動画を一意に識別するための文字列だろうか?外部からアタックがあったことの証跡なのか?全く分からないが。

 

1時間後に復旧した

 復旧がメチャクチャ速い。大規模システムの障害にしては凄まじく速いと言っていいと思う。

f:id:min117:20181017232619p:plain

もちろんGoogleのエンジニアが優秀だったからだろうが、そもそもの原因が1時間で解決できる内容だったからとみることもできる。

 

・ディスク障害だったとすれば…交換して動かすだけ(ホットスタンバイ)

 → 1時間で復旧できる。

 

・ネットワーク障害だとすれば…交換して設定を投入して動かす必要あり

 → 1時間だと厳しい?

 

・外部からの攻撃だったとすれば…原因究明と影響調査と穴ふさぎが必要

 → 1時間だとさすがに無理では?

 

・負荷の増大が原因だっとすれば…負荷分散(LB)の設定変更でなんとかなる?

 → 1時間で復旧できる(と思われる)。

 

のように考えると、やはり負荷増大によるキャパオーバーがもっとも可能性が高いと考えられるだろう。

 

⑤ 社会への影響(お祭り騒ぎ

 これほど大きなサービスの停止なのだから、さぞ社会への影響も大きいだろうと思っていたら、ニュースはほとんどがお祭り騒ぎ状態。むしろ混乱を楽しんでいるようにすら見える。

f:id:min117:20181017232718p:plain f:id:min117:20181017232730p:plain

これが人の命に関わる情報のやりとりシステムだったり、災害の連絡システムだったりしたらこうはいかない

 

実際、今回の停止で「致命的な事故が起きた」とか「具体的な経済的損失が起きた」というニュースは(事故発生当日なのに)ほとんど聞かない。

f:id:min117:20181017233055p:plain

 

ネットで検索してもこんな状態だ。

f:id:min117:20181018002755p:plain

そう考えるとYouTubeはしょせんお遊びシステムに過ぎないと思う。止まって命に関わるようなクリティカルなシステムでは無いということだろう。

しかし、それが莫大な利益をGoogleにもたらし話題をさらうのだから、実のない(虚業)とはいえ広告とは怖いものだ。

 

<障害を伝えるニュース>

目についた範囲で残しておく。記念に。

downdetector.jp

gigazine.net

 

もう少しマシな原因分析があってほしいと思うけど。

f:id:min117:20181017232753p:plain

f:id:min117:20181017232631p:plain

f:id:min117:20181017232850p:plain

f:id:min117:20181017232658p:plain

 

f:id:min117:20181017232932p:plain

f:id:min117:20181017232952p:plain

 

あとで読む。

Googleのインフラ担当バイスプレジデントであるEric Brewer氏によるホワイトペーパー

Disks for Data Centers(データセンター向けのディスク)」

https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44830.pdf