2022年10月25日のCloudflareの部分的な障害について
2022年10月26日 3:02
本日、Tiered Cacheシステムの変更により、ステータスコード530で、ユーザーの一部のリクエストが失敗しました...
\n \n
この失敗は、場所をまたいでキャッシュ可能なリクエストの処理方法の副次的影響が原因でした。一見すると、少し前に、リリースを開始した別のシステムが原因のエラーのように見えました。問題を引き起こした原因を正確に特定するために、当社のチームは何度も試行錯誤を繰り返しました。特定されると、ロールバックを迅速に処理し、87分で完了しました。
申し訳ございませんでした。このようなことが二度と起こらないように、対策を講じています。
\nCloudflareの製品のひとつに、コンテンツ配信ネットワーク(CDN)があります。Webサイトのアセットをグローバルにキャッシュするために使用されます。しかし、データセンターは、必ずしもアセットをキャッシュするわけではありません。新規、期限切れの場合やパージされた場合などです。 そのような場合、ユーザーがそのアセットをリクエストすると、CDNはWebサイトのオリジンサーバーから新しいコピーを取得する必要があります。しかし、ユーザーがアクセスしているデータセンターは、オリジンサーバーからまだかなり離れている可能性があります。このことは、お客様にとってさらなる問題を提起します。アセットがデータセンターにキャッシュされないたびに、オリジンサーバーから新しいコピーを取得する必要があります。
Cacheヒット率を向上させるために、Tiered Cacheを採用しました。Tiered Cacheを使用して、CDNのデータセンターを、エンドユーザーに近い「下位層」とオリジンに近い「上位層」の階層に分類しています。下位層でキャッシュミスが発生すると、上位層をチェックします。上位層にアセットの新しいコピーがある場合、リクエストに応えてそれを提供することができます。これによりパフォーマンスが向上し、下位層のデータセンターにキャッシュされていないアセットを取得するために、Cloudflareがオリジンサーバーにアクセスしなければならない回数が減少します。
\n08:40 UTCに、バグを含むCDNコンポーネントのソフトウェアリリースを徐々にロールアウトし始めました。このバグは、Tiered Cache、Cloudflare Images、Bandwidth Allianceのいずれかが設定されたサイトにユーザーがアクセスしたときにトリガーされました。このバグが原因で、一部のお客様は、HTTPステータスコード530のエラーが返されました。データセンターのローカルキャッシュから直接提供が可能なコンテンツは影響を受けませんでした。
欠陥のあるコンポーネントがデータセンターのサブセットにリリースされた後、530で、断続的に増加しているとのお客様の報告を受け、調査を開始しました。
リリースが残りのデータセンターへグローバルにロールアウトし始めると、530の急激な増加がアラートをトリガーし、さらにお客様からの報告も増え、インシデントが宣言されたのです。
ステータスコード 530 で返されるリクエスト
\n17:03 UTCにデータセンターでリリースをロールバックすることで、不適切なリリースが原因であったことを確認しました。ロールバック後、530エラーの減少を確認しました。この確認後、グローバルなロールバックの加速が始まり、530が減少し始めました。UTC 18:04にTiered Cacheの上位層として構成されたすべてのデータセンターでリリースを元に戻すと、影響は終了しました。
タイムライン:
2022-10-25 08:40:リリースは、データセンターの小さなサブセットにロールアウトされ始めました。
2022-10-25 10:35:個々の顧客アラートが発生し、500件のエラーコードの増加を示しています。
2022-10-25 11:20: 調査後、単一の小さなデータセンターが問題の原因として特定され、チームがそこで問題を調査する間、生産から削除されました。
2022-10-25 12:30: コードを変更するデータセンターが増えるにつれ、問題がより広範囲に広がり始めます。
2022-10-25 14:22: 530エラーは、リリースが最大のデータセンターに徐々にロールアウトし始めるにつれて増加します。
2022-10-25 14:39: より多くのお客様がエラーの増加の報告があったため、複数のチームが調査に関わるようになりました。
2022-10-25 17:03: アトランタでCDNリリースがロールバックされ、根本原因が確認されました。
2022-10-25 17:28:すべてのHTTPリクエストの約5%で、影響がピークに達し、ステータスコード530をともなうエラーとなりました。
2022-10-25 17:38: 多くのお客様の上位層として機能を果たす大規模データセンターで、ロールバックの加速が続いています。
2022-10-25 18:04: すべての上位層でロールバックが完了しました。
2022-10-25 18:30: ロールバックが完了しました。
調査の初期段階では、指標としては、内部のDNSシステムの問題であるということ、同時にリリースがロールアウトされていたということです。次の項で示すように、それは障害の原因ではなく、副次的影響のものでした。
\nパフォーマンス向上のために、サービスのさまざまな部分に監視コードを定期的に追加しています。監視コードは、さまざまなコンポーネントの実行を可視化し、改善できるボトルネックの特定に役立ちます。当社のチームは最近、Tiered Cacheのロジックにさらに分散トレースを追加しました。Tiered Cacheエントリーポイントコードは以下の通りです:
* 前:
* 後:
\nfunction _M.go()\n -- code to run here\nend\n
\n 上記のコードは、既存のgo()関数をtrace_fn()でラップします。trace_fn()は、go()関数を呼び出し、その実行時間を報告します。
\nlocal trace_fn = require("opentracing").trace_fn\n\nlocal function go()\n -- code to run here\nend\n\nfunction _M.go()\n trace_fn(ngx.ctx, "tiered_cache_rewrite", go)\nend
\n しかし、opentracingモジュールに関数を挿入するロジックは、すべてのリクエストで制御ヘッダーをクリアにします。
通常、これらの制御ヘッダーからデータを抽出してから、リクエストの処理方法のルーティン部分としてそれらをクリアします。
\nrequire("opentracing").configure_module(conf,\n -- control header extractor\n function(ctx)\n -- Always clear the headers.\n clear_control_headers()\n --
\n しかし、内部のTiered CacheTrafficは、下位階層からの制御ヘッダーがそのまま渡されることを想定しています。ヘッダーのクリアと上位層の使用という組み合わせは、リクエストのルーティングに重要な情報を利用できないことを意味していました。影響を受けるリクエストのサブセットでは、オリジンサーバーのIPアドレスの内部DNSルックアップで解決するホスト名がありませんでした。その結果、クライアントに530のDNSエラーが返されました。
\n再発防止のために、バグの修正に加え、今後このような問題を検出、防止に役立つ一連の変更点を確認しました。
リリース計画の早い段階で、Tiered Cacheの上位層として構成された大規模なデータセンターを含めます。これにより、グローバルリリースの前に、同様の問題にいち早く気づくことができるようになります。
受入試験の範囲を拡大し、様々なTiered Cacheトポロジーを含むより幅広い構成を含めます。
リクエストの完全なコンテキストを持たず、制御ヘッダーに追加のホスト情報が必要な状況において、より積極的にアラートを出します。
このようなエラーで当社のシステムが正しく早期に機能停止することを確認し、開発およびテスト中に問題を特定するのに役立ちました。
Tiered Cacheをご利用の多数のお客様に影響を与えるインシデントを経験しました。欠陥のあるコンポーネントを特定した後、問題を迅速にロールバックし、修正できました。このため、サービスにアクセスしようとしたお客様やエンドユーザー様に混乱を招いてしまい、深くお詫び申し上げます。
今後、このような事態の発生を防止する改善策を、早急に講じる予定です。
"],"published_at":[0,"2022-10-26T04:02:50.000+01:00"],"updated_at":[0,"2024-10-10T00:28:37.718Z"],"feature_image":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2zud7OXWGXTGPHnVK1TVcR/bd0bdb9dd780b80ff80c6255553314d7/partial-cloudflare-outage-on-october-25-2022.png"],"tags":[1,[[0,{"id":[0,"4yliZlpBPZpOwBDZzo1tTh"],"name":[0,"Outage"],"slug":[0,"outage"]}],[0,{"id":[0,"3cCNoJJ5uusKFBLYKFX1jB"],"name":[0,"Post Mortem"],"slug":[0,"post-mortem"]}]]],"relatedTags":[0],"authors":[1,[[0,{"name":[0,"John Graham-Cumming"],"slug":[0,"john-graham-cumming"],"bio":[0,null],"profile_image":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5vGNsXzZrtSLn2X30pnpUY/6f350e7dd36058a6422f9199b452bb02/john-graham-cumming.jpg"],"location":[0,"Lisbon, Portugal"],"website":[0,null],"twitter":[0,null],"facebook":[0,null]}]]],"meta_description":[0,null],"primary_author":[0,{}],"localeList":[0,{"name":[0,"Partial Cloudflare outage on October 25, 2022 Config"],"enUS":[0,"English for Locale"],"zhCN":[0,"Translated for Locale"],"zhHansCN":[0,"No Page for Locale"],"zhTW":[0,"No Page for Locale"],"frFR":[0,"Translated for Locale"],"deDE":[0,"Translated for Locale"],"itIT":[0,"No Page for Locale"],"jaJP":[0,"Translated for Locale"],"koKR":[0,"No Page for Locale"],"ptBR":[0,"No Page for Locale"],"esLA":[0,"No Page for Locale"],"esES":[0,"Translated for Locale"],"enAU":[0,"No Page for Locale"],"enCA":[0,"No Page for Locale"],"enIN":[0,"No Page for Locale"],"enGB":[0,"No Page for Locale"],"idID":[0,"No Page for Locale"],"ruRU":[0,"No Page for Locale"],"svSE":[0,"No Page for Locale"],"viVN":[0,"No Page for Locale"],"plPL":[0,"No Page for Locale"],"arAR":[0,"No Page for Locale"],"nlNL":[0,"No Page for Locale"],"thTH":[0,"No Page for Locale"],"trTR":[0,"No Page for Locale"],"heIL":[0,"No Page for Locale"],"lvLV":[0,"No Page for Locale"],"etEE":[0,"No Page for Locale"],"ltLT":[0,"No Page for Locale"]}],"url":[0,"https://blog.cloudflare.com/partial-cloudflare-outage-on-october-25-2022"],"metadata":[0,{"title":[0,"2022年10月25日のCloudflareの部分的な障害について"],"description":[0,null],"imgPreview":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/16rgrdQ2eaTFCPvx1UyY1m/085be70a073c6c24fed03edc39e19e89/partial-cloudflare-outage-on-october-25-2022-oWY2Lc.png"]}]}],"locale":[0,"ja-jp"],"translations":[0,{"posts.by":[0,"リーク元"],"footer.gdpr":[0,"GDPR"],"lang_blurb1":[0,"この投稿は{lang1}でも表示されます。"],"lang_blurb2":[0,"この投稿は{lang1}および{lang2}でも表示されます。"],"lang_blurb3":[0,"この投稿は{lang1}、{lang2}、{lang3}でも表示されます。"],"footer.press":[0,"プレス"],"header.title":[0,"Cloudflare ブログ"],"search.clear":[0,"消去"],"search.filter":[0,"フィルター"],"search.source":[0,"ソース"],"footer.careers":[0,"キャリア"],"footer.company":[0,"会社"],"footer.support":[0,"サポート"],"footer.the_net":[0,"theNet"],"search.filters":[0,"フィルター"],"footer.our_team":[0,"Cloudflareのチーム"],"footer.webinars":[0,"ウェビナー"],"page.more_posts":[0,"その他の投稿"],"posts.time_read":[0,"{time}分で読了"],"search.language":[0,"言語"],"footer.community":[0,"コミュニティ"],"footer.resources":[0,"リソース"],"footer.solutions":[0,"ソリューション"],"footer.trademark":[0,"商標"],"header.subscribe":[0,"登録"],"footer.compliance":[0,"コンプライアンス"],"footer.free_plans":[0,"Freeプラン"],"footer.impact_ESG":[0,"インパクト/ESG"],"posts.follow_on_X":[0,"Xでフォロー"],"footer.help_center":[0,"ヘルプセンター"],"footer.network_map":[0,"ネットワークマップ"],"header.please_wait":[0,"お待ちください"],"page.related_posts":[0,"関連ブログ投稿"],"search.result_stat":[0,"{search_keyword}の結果{search_range}/{search_total}"],"footer.case_studies":[0,"導入事例"],"footer.connect_2024":[0,"Connect 2024"],"footer.terms_of_use":[0,"利用規約"],"footer.white_papers":[0,"ホワイトペーパー"],"footer.cloudflare_tv":[0,"Cloudflare TV"],"footer.community_hub":[0,"コミュニティハブ"],"footer.compare_plans":[0,"プラン比較"],"footer.contact_sales":[0,"営業担当へのお問い合わせ"],"header.contact_sales":[0,"営業担当へのお問い合わせ"],"header.email_address":[0,"メールアドレス"],"page.error.not_found":[0,"ページが見つかりません"],"footer.developer_docs":[0,"開発者ドキュメント"],"footer.privacy_policy":[0,"プライバシーポリシー"],"footer.request_a_demo":[0,"デモ依頼"],"page.continue_reading":[0,"続きを読む"],"footer.analysts_report":[0,"アナリストレポート"],"footer.for_enterprises":[0,"エンタープライズ向け"],"footer.getting_started":[0,"利用開始"],"footer.learning_center":[0,"ラーニングセンター"],"footer.project_galileo":[0,"プロジェクトGalileo"],"pagination.newer_posts":[0,"次の投稿"],"pagination.older_posts":[0,"以前の投稿"],"posts.social_buttons.x":[0,"Xで議論"],"search.icon_aria_label":[0,"検索"],"search.source_location":[0,"ソース/ロケーション"],"footer.about_cloudflare":[0,"Cloudflareについて"],"footer.athenian_project":[0,"Athenianプロジェクト"],"footer.become_a_partner":[0,"パートナープログラム"],"footer.cloudflare_radar":[0,"Cloudflare Radar"],"footer.network_services":[0,"ネットワークサービス"],"footer.trust_and_safety":[0,"信頼性と安全性"],"header.get_started_free":[0,"まずは無料プランから"],"page.search.placeholder":[0,"Cloudflareを検索"],"footer.cloudflare_status":[0,"Cloudflareステータス"],"footer.cookie_preference":[0,"Cookieの設定"],"header.valid_email_error":[0,"有効なメールアドレスを入力してください。"],"search.result_stat_empty":[0,"検索結果 {search_total}件中{search_range}件を表示"],"footer.connectivity_cloud":[0,"コネクティビティクラウド"],"footer.developer_services":[0,"開発者サービス"],"footer.investor_relations":[0,"IR"],"page.not_found.error_code":[0,"エラーコード:404"],"search.autocomplete_title":[0,"クエリを挿入し、Enterキーを押して送信してください"],"footer.logos_and_press_kit":[0,"ロゴとプレスキット"],"footer.application_services":[0,"アプリケーションサービス"],"footer.get_a_recommendation":[0,"推奨製品"],"posts.social_buttons.reddit":[0,"Redditで議論"],"footer.sse_and_sase_services":[0,"SSEサービスとSASEサービス"],"page.not_found.outdated_link":[0,"古いリンクを使われたか、アドレスを誤って入力された可能性があります。"],"footer.report_security_issues":[0,"セキュリティの問題を報告"],"page.error.error_message_page":[0,"お探しのページは見つかりませんでした。"],"header.subscribe_notifications":[0,"新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:"],"footer.cloudflare_for_campaigns":[0,"Cloudflare for Campaigns"],"header.subscription_confimation":[0,"サブスクリプションが確定されました。ご登録ありがとうございます!"],"posts.social_buttons.hackernews":[0,"Hacker Newsでの議論"],"footer.diversity_equity_inclusion":[0,"多様性、公平性、包摂性"],"footer.critical_infrastructure_defense_project":[0,"重要インフラ防衛プロジェクト"]}]}" ssr="" client="load" opts="{"name":"PostCard","value":true}" await-children="">2022年10月26日 3:02
本日、Tiered Cacheシステムの変更により、ステータスコード530で、ユーザーの一部のリクエストが失敗しました...
2022年6月21日 12:38
本日2022年6月21日、Cloudflareの19か所のデータセンターにおいて、トラフィックに影響を与える障害が発生しました...
2020年8月30日 20:55
今日、大手ISP/インターネット帯域幅プロバイダーであるCenturyLink/Level(3)で大規模な障害が発生し、一部のCloudflareのお客様およびインターネット上の多数のサービスやプロバイダーが影響を受けました。...
2020年7月18日 1:22
本日、バックボーンネットワークで発生した設定エラーにより、インターネットプロパティとCloudflareサービスが27分間にわたり、停止する障害が発生しました。その結果、当社ネットワーク全体で約50%のトラフィックが減少しました。バックボーンの構造上、この停止がCloudflareネットワーク全体に影響を与えることはなく、特定の地域での影響に抑えられました。...
2020年4月16日 0:28
15:31 UTC (世界協定時)から19:52 UTCまでの間、Cloudflare ダッシュボードとAPIが利用が出来なくなる障害が発生しました。これは、二つのコアデータセンターのうち一つから、複数の冗長化したファイバー接続が切断されたためです。...
2019年7月12日 15:45
9年ほど前のCloudflareは小さな会社で、当時私は一顧客であり従業員ではありませんでした。Cloudflareがひと月前に設立されたという時期のある日、私は自分の小さなサイト、jgc.orgのDNSが動作していないという警告を受け取りました。そしてCloudflareはProtocol Buffersの使用に変更を加えた上でDNSを切断したのです。 私は「私のDNSはどうなったのでしょうか?」という件名のメールを直接Matthew Prince宛に出しました。...