ブライトコーブでは、動画プレーヤーの配信、公開、プレーヤー管理ソリューションの一部として Amazon S3 を使用しています。しかし、優れたパフォーマンスだからといって、無敵というわけではありません。私たちは、このような事態を想定し、停電に耐えられるようサービスの強化に多くの時間と労力を費やしてきました。
アマゾンS3サービスインシデント
2017年9月14日木曜日、日本時間午後1時37分ごろから約1時間の間、米国東部地域でAmazon S3サービスがリクエストを不当にスロットリングし始めました。その結果、ファイルを取得および保存するための完全に有効な多くのリクエストが拒否されました。
この信頼性の高いクラウド インフラストラクチャに依存している、インターネット上で最もアクセス数の多い Web サイトを含む、多くの S3 顧客が影響を受けました。ブライトコーブでは、一部のコールド キャッシュ動画コンテンツでエラー率が増加しましたが、プレーヤーのロードは、キャッシュされているかどうかにかかわらず、影響を受けなかったことをご報告いたします。もっと大きな事態になる可能性もありましたが、非常に軽微で済みました。
以下は、The Registerが報じた事件に関する情報である。この事件でアマゾンが共有した情報は以下の通り(時間は日本時間に合わせてある):
- 2:58 PM EDT.US-EAST-1リージョンにおけるAmazon S3リクエストのエラー率が増加していることを調査しています。
- 3:20 PM EDT.一部のお客様において、S3へのアクセスでスロットリングエラーが発生していることを確認いたしました。現在、根本的な原因を調査中です。
- 3:38 PM EDT.US-EAST-1リージョンにおけるAmazon S3リクエストのスロットリングエラー増加の解決に向けて引き続き取り組んでいます。エラーの原因となっているサブシステムを特定し、根本的な原因を特定しました。
- 3:49 PM EDT.現在、Amazon S3へのアクセスにおけるスロットルエラーの発生率は回復しています。根本的な原因を特定し、再発防止策を講じています。
- 4:05 PM EDT.日本時間午後2時40分から午後3時56分の間、US-EAST-1リージョンのAmazon S3へのアクセスでスロットリングエラーが発生しました。この問題は解決され、サービスは正常に動作しています。
午後1時37分、アマゾンが承認するかなり前に、最初のエラーがアラートを作動させた。このアラートは、私たちのサービスに問題があることを伝えるのではなく、是正措置が自動的に開始されたことを教えてくれた。
ブライトコーブのピーク時に発生したこのインシデント全体において、ブライトコーブは 2,800 万件を超えるブライトコーブ プレーヤーへのリクエストに問題なく対応しました。これには、すでにアクティブなプレーヤーと、事件中に公開された 79 人のプレーヤーが含まれます。
選手交代戦術
S3のセットアップはこんな感じだ。
事件が発生した)米国東リージョンではS3を使用していますが、アマゾンが提供する双方向のクロスリージョンレプリケーションオプションを導入しています。
また、s3-s3というオープンソースのNode.jsプロジェクトを独自に作成し、必要に応じて異なるS3バケットへの自動切り替えを行っています。つまり、通常の運用条件下では、U.S. Eastにアップロードしたファイルはすべてフェイルオーバーリージョンにも送信されます。
Player ManagementとPublishingサービスがS3とやり取りするたびに、最悪の事態に備えています。エラーがあれば、自動的にリトライし、リトライが失敗すれば、自動的に別のリージョンにフェイルオーバーします。
フェイルオーバーは個々のリクエストレベルで処理される。リクエストは常にプライマリーリージョンから始まり、必要に応じてフェイルオーバーリージョンにフォールバックします。手動でシステムを切り替えたり戻したりする必要はありません。
双方向レプリケーションのおかげで、フェイルオーバー・リージョンにプッシュアップされる必要のあるファイルはすべて、U.S.Eastが健全な状態に戻ったときに自動的にレプリケートされます。
下のグラフは、自動フェイルオーバーの動作を示している。サービスはプライマリのS3バケットを可能な限り頻繁に使用し続けたが、その過程でかなりのフェイルオーバーが発生した。代替案:右側のリクエストはすべて失敗し、お客様に問題を引き起こしていたでしょう。
だから、もしあなたがアマゾンの問題が起きていることに気づかなかったとしたら、それはそれで私たちとしては好ましいことだ。