Dropboxが2日以上ダウン。原因はメンテナンス用スクリプトのミス
オンラインストレージサービスのDropboxが、米国時間1月10日の午後から約2日間にわたって障害を引き起こしていました。直接の原因は、OSをバージョンアップするために実行したメンテナンス用スクリプトにバグがあったことです。
障害の状況を時系列で追いつつ、原因についての報告を見てみましょう。
約48時間続いた復旧作業
障害の状況報告については、Dropbox Tech Blogの「Dropbox Status Update」でまとめられています。ポイントごとに引用し、訳しました。
障害発生が認識されたのは、米太平洋時間の午後6時40分です。後になって分かるのですが、この日の5時半に障害の原因となったメンテナンスが始まっています。それから1時間後にDropboxのダウンが発覚します。
1/10 at 6:40pm PT: We are aware that the Dropbox site is currently down. This was caused during routine internal maintenance, and was not caused by external factors. We are working to fix this as soon as possible. We apologize for the inconvenience.
1月10日午後6時40分:Dropboxはいまダウンしていることを確認した。これは定期メンテナンが原因であり、外部要因にはよらない。可能な限り早期に修正する。ご不便をお詫びする。
この時点で、Dropboxの障害の原因は外部からハックされたからではないか、情報が漏洩したのではないか、といった情報が出回っていましたが、同社はこれを否定。障害は翌日になっても続きます。
UPDATE 1/11 at 10:24am PT: We’re still experiencing service issues related to the outage last night. We apologize and are working to get the service fully restored as soon as possible.
1月11日午後10時24分:障害に関連した問題がまだ続いている。お詫びすると共に可能な限り速く復旧するよう作業している。
そして障害発生からほぼ24時間経過してもまだ復旧作業は続いており、対応のためいくつかの機能が停止されます。
UPDATE 1/11 at 6:35pm PT: Dropbox is still experiencing lingering issues from last night’s outage. We’re working hard to get everything back up, and want to give you an update.
No files were lost in the outage, but some users continue to run into problems using various parts of dropbox.com and our mobile apps. We’re rapidly reducing the number of users experiencing these problems, and are making good progress.
We’re also working through some issues specific to photos. In the meantime, we’ve temporarily disabled photo sharing and turned off the Photos tab on dropbox.com for all users. Your photos are safely backed up and accessible from the desktop client and the Files tab on dropbox.com.
1月11日午後6時35分。Dropboxは昨晩の障害が長引いている。引き続き復旧作業中であり、経過報告も行っていくつもりだ。
この障害により失われたファイルはないが、いくつかのユーザーにはdropbox.comとモバイルアプリの機能に問題が発生している。できるだけ迅速にこうしたユーザーを減らすべく作業し、快方に向かっているところだ。
写真に関連した問題についても作業をしているところだ。一時的に写真共有機能を止めたため、Photosタブは全ユーザーでオフになっている。写真は問題なくバックアップされており、デスクトップクライアントとdropbox.comのFilesタブからはアクセスできる。
障害は長引きますが、発生から2日後にようやくほぼ全ユーザーに対して復旧作業が終わろうとしています。
UPDATE 1/12 at 1:59pm PT: Hi everyone, we wanted to give an update on where things stand.
As of this morning at 4:10am PT, nearly all users (over 99%) can access their files on dropbox.com. The Photos tab is still turned off, but you can access your photos via the Files tab on dropbox.com or the desktop client. We’re continuing to make a lot of progress restoring full service to all users, and are doing so in careful steps.
About 5% of our users are still experiencing problems syncing from the desktop client, and about 20% of users are having issues accessing Dropbox through our mobile apps. Within a few hours, we’ll be rolling out a change that will further improve things for those users. We’ll give an update after that.
Your files have been safe this entire time. Thanks again for your patience.
1月12日午後1時59分:経過と現状報告。
午前4時10分時点で、ほぼ全てのユーザー(99%以上)はdropbox.comにてファイルをアクセスできるようになった。Photosタブはまだオフになっているが、dropbox.comのFilesタブかデスクトップクライアントからアクセスできる。全ユーザーを復旧させるべき作業を続けており、かつ注意深くすすめている。
約5%のユーザーはデスクトップクライアントからの同期に問題が発生しており、20%のユーザーはモバイルアプリからDropboxへのアクセスに障害が発生している。この数時間でこれらのユーザーも状況が改善されることになるだろう。その時点でまた報告する。
障害によってファイルが失われてはいない。ご迷惑をお掛けして申し訳ない。
この後、午後7時に全ユーザーに対して正常動作するようになったとの報告がおこなわれています。
原因はメンテナンススクリプトのバグ
この長時間の障害を引き起こした原因について、Dropbox Tech Blogの「Outage post-mortem」で、メンテナンススクリプトのバグであることが説明されています。
サーバのOSをアップデートする際に、バグによりアクティブなサーバに対してもアップデート作業を開始してしまったことが問題の発端だったようです。
On Friday at 5:30 PM PT, we had a planned maintenance scheduled to upgrade the OS on some of our machines. During this process, the upgrade script checks to make sure there is no active data on the machine before installing the new OS.
A subtle bug in the script caused the command to reinstall a small number of active machines. Unfortunately, some master-slave pairs were impacted which resulted in the site going down.
金曜日午後5時30分、計画メンテナンスによってOSのアップグレードが行われた。このとき、アップグレードスクリプトはOSのインストール前にアクティブなデータがないかどうかをチェックする。
スクリプト内の微妙なバグによって、少数のアクティブなマシンにOSがインストールされた。その結果、いくつかのマスター/スレーブのペアが引き金となって、サイトのダウンを引き起こすこととなった。
この後の対策と合わせて読むと、おそらく外部からではアクティブかどうかを完全にチェック仕切れなかったために、間違ってアクティブなマシンに無理矢理OSをインストールするような状況になったのではないかと推測されます。
サーバのチェックを追加し、リストアを迅速化
今後の対策としてDropboxは2つの仕掛けを追加することを明らかにしました。
1つはチェックの厳密化。そもそもの原因だったバグの排除です。
We’ve since added an additional layer of checks that require machines to locally verify their state before executing incoming commands. This enables machines that self-identify as running critical processes to refuse potentially destructive operations.
チェックのための追加レイヤを設けた。これは、外部からのコマンド実行をする前に、マシンのローカルで状況を確認するものだ。これによってマシンはクリティカルなプロセスを実行するときに自己確認を行い、破滅的な操作が行われる可能性を排除する。
もう1つは復旧に時間がかかったことへの対策です。
To speed up our recovery, we developed a tool that parallelizes the replay of binary logs. This enables much faster recovery from large MySQL backups. We plan to open source this tool so others can benefit from what we’ve learned.
リカバリ操作を迅速に行うため、バイナリログからの復旧を並列化するツールを作った。これにより大規模なMySQLバックアップからの素早い復旧を可能にする。私たちはこれをオープンソースにする予定で、誰もがわれわれの教訓を活かすことができるようになる。
Dropboxのようなオンラインストレージサービスにとって、サービスが止まること以上に致命的なのはデータを失うことです。今回の障害は2日という長期にわたるものではありましたが、データそのものを失うという状況にはならず、Dropboxの関係者にとってはひとまず最悪の事態にならずによかったと胸をなで下ろしているのではないかと思います。
あわせて読みたい
200Gbsのイーサネットは2016年から2017年頃登場。メラノックスがロードマップを説明
≪前の記事
オンプレミスからAmazon Redshiftへのデータ転送ツール「FlyData」、MySQL対応と日本法人設立を発表