Google Cloud Load Balancerの障害、原因は新機能に含まれていたバグ。テスト時も導入時にも発見できず

2018年7月23日

Google Cloudのロードバランサーが先週火曜日、7月17日の12時17分(米国太平洋標準時夏時間。日本時間7月18日午前4時17分)から約40分のあいだ障害を起こし、Pokémon GOやSpotifyなどGoogle Cloud上で提供されている多くのサービスが影響を受けた件について、Googleは経緯や原因などの報告を公開しました

fig

報告によると、原因はロードバランサーに追加された新機能にバグがあったことだとされています。

ロードバランサーがバックエンドと通信できなくなる

前述の通り、障害が発生したのは7月17日の12時17分(米国太平洋標準時夏時間。日本時間7月18日午前4時17分)。

主な現象は、Google HTTP(S) Load BalancerがHTTPステータス502(不正なゲートウェイ)を返す、つまりロードバランサーがバックエンドのサービスと通信できない、というものでした。関連するサービスであるTCP/SSL Proxy Load BalancerとGoogle App Engineでも障害が発生しました。

ただしすべてのリクエストに対して502が返ったわけではなく、約33%から最大87%の割合でこの現象が発生していたとのことです。

502ステータスが返る障害は12時49分まで続き、またこの影響でキャッシュのヒット率が約70%低下。キャッシュヒットを含むすべてが正常に戻ったのは12時55分でした。

報告によると、Googleのエンジニアリングチームは障害発生の2分後となる12時19分にアラートを受けて対応を開始、12時44分に原因を究明して対策をデプロイしたとのことです。

テスト時にも導入時にもバグが発見できなかった

障害を起こしたGoogle Cloud Load Balancerは、Google Front Ends(GFE)の2階層アーキテクチャとなっており、第一層はリクエストにできるだけ近い場所でレスポンスを返し、第二層はサービスが提供される場所にできるだけ近い場所に置かれます。

そして今回、第二層に新しい機能を追加したことが、障害の原因だと次のように説明されました。

The GFE development team was in the process of adding features to GFE to improve security and performance. These features had been introduced into the second layer GFE code base but not yet put into service. One of the features contained a bug which would cause the GFE to restart; this bug had not been detected in either of testing and initial rollout.

GFE開発チームはGFEに対してセキュリティと性能向上のための新機能を追加しているところだった。この新機能はGFEの第二層に導入されたが、まだ使用されていなかったものだ。この機能の1つに、GFEを再起動させてしまうバグが潜んでいたのだ。このバグはテスト時にも導入時にも発見されなかった。

バグによるGFEの再起動がロードバランサーの第二層の能力を低下させ、それがバックエンドとの通信ができないという502ステータスにつながったわけです。

At the beginning of the event, a configuration change in the production environment triggered the bug intermittently, which caused affected GFEs to repeatedly restart. Since restarts are not instantaneous, the available second layer GFE capacity was reduced.

現象の発生時、本番環境の構成変更がバグを断続的に引き起こすきっかけとなり、GFEが繰り返し再起動してしまった。再起動はすぐに終わる処理ではないため、GFEの第二層の能力が減少していったのだ。

GFEを分割して障害があっても全体に影響しないように

前述のようにGoogleのエンジニアリングチームは約30分でこれに対処しました。また今後こうしたことが起こらないようにテストなどを強化するほか、GFEを分割して障害が起きたとしても一定の範囲に収まるような対策も実行予定で、また監視のためのコンソールも強化していくと説明しています。

あわせて読みたい

Google Cloud クラウド クラウド障害




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本