Cloudflare、Workers KVの更新に失敗し障害発生。しかも復旧用ツールがWorkers KVに依存しており使えず、手動で緊急対応
Cloudflareは10月30日、同社がキーバリューストアとして提供しているWorkers KVの社内アップデート作業に失敗したことで、Workers KVのみならずCloudflare Pages、Cloudflare Access、Cloudflare Workers、Waiting Room、Cloudflare Dashboardなど各種サービスが世界協定時2023年10月30日19時54分(日本時間10月31日4時54分)頃から約37分間、サービスの一部または全部の機能が使えないなどの障害を起こしました。
幸いにも比較的短時間で復旧した障害でしたが、同社の報告によると、復旧のための社内ツールそのものがWorkers KVに依存していたために使えず、緊急対応として手動操作で復旧作業を行ったと説明されています。
この障害がどのような原因で発生し、どう復旧させたのか、同社のブログ「Cloudflare incident on October 30, 2023」から見ていきます。
Multiple Cloudflare services were unavailable for 37 minutes on October 30, 2023. Here is a discussion of what went wrong, how the incident was resolved, and the work we are undertaking to ensure it does not happen again. https://t.co/JbEJgWiHHc
— Cloudflare (@Cloudflare) November 1, 2023
ステージング環境を参照したまま本番環境へ昇格させてしまう
CloudflareはキーバリューストアのWorkers KVをマネージドサービスとして提供しています。
Workers KVチームは、新しくビルドしたWorkers KVを本番環境へデプロイする作業を始めました。
Workers KVの新バージョンはステージング環境へデプロイされ、テストされました。その後、本番環境へと徐々にデプロイされていくことになります。
ところが、ステージング環境から本番環境へと昇格させるスクリプトにバグがありました。
本番環境へ昇格させた際に、本番環境上でも現バージョンのWorkers KVを参照し、その後に新Workers KVへ切り替えていくはずの動作が、本番環境へ昇格させた後もステージング環境にある現バージョンのWorkers KVを参照してしまったのです。
ステージング環境上のWorkers KVは本番環境のリソースにはアクセスできないため、Workers KVに依存している本番環境上のアプリケーションはWorkers KVを利用できずエラーとなります。
この本番環境への昇格は徐々に行われたため、本番環境上でエラーを吐くアプリケーションが徐々に増加していきました。
ロールバックのためのツールがWorkers KVに依存して使えず
この障害は自動アラートにより検知されます。そこでロールバックにより元の状態に戻そうとするのですが、そのためのツールそのものがWorkers KVに依存し、使えない状態になっていることが判明します。
下記は「Cloudflare incident on October 30, 2023」からの引用です。
Although automated alerting detected the issue immediately, there was a delay between the time we realized we were having an issue and the time we were actually able to perform the roll back. This was caused by the fact that multiple tools within Cloudflare rely on Workers KV including Cloudflare Access. Access uses Workers KV as part of the verification process for user JWTs (JSON Web Tokens).
自動アラートにより障害はすぐに検出されましたが、障害発生から実際にロールバックの実行までには遅れが生じました。これは、Cloudflare Accessを含むCloudflare内の複数のツールがWorkers KVに依存していることが原因でした。Cloudflare AccessはユーザーJWT(JSON Web Tokens)の検証プロセスの一部としてWorkers KVを使用していたのです。
変更作業のためのダッシュボードやCI環境によるロールバック時の認証システムなどもWorkers KVに依存して使えなくなっていました。
結局、復旧作業は緊急対応のため手作業で行われ、元の状態に戻すことに成功したのです。
Cloudflareは今回のインシデントを教訓とし、Workers KVのデプロイプロセスの改善やロールバックプロセスにおいて認証システムがダウンしたとしても対応できるようにすること、デプロイの事前確認の強化、デプロイツールにおけるマルチテナント対応への改善などの対応を進めていくとしています。
過去のCloudflareの障害
あわせて読みたい
フリーランスの労災保険がITエンジニアだけでなく、ライターや漫画家など全業種に拡大へ
≪前の記事
サーバ不要でバックエンドAPIのモックを実現する「Mock Service Worker 2.0」正式リリース。Fetch API、ストリームAPI対応など新機能