Cloudflare назвали причину вчорашнього збою

Вчора Cloudflare зіткнулася з серйозним глобальним збоєм, який призвів до масових HTTP 5xx помилок та недоступності ключових сервісів компанії.

Global Cloudflare outage: access to electronic visa portals disrupted -  VisasNews

Проблема почалася о 11:20 UTC, коли інтернет-користувачі по всьому світу почали бачити сторінки з помилками замість сайтів, що працюють через Cloudflare. На піку інциденту компанія фактично не могла обробляти більшість основного трафіку.

Cloudflare наголосила, що інцидент не був результатом кібератаки. Причиною стала внутрішня помилка — зміна прав доступу в одній із ClickHouse-баз, через яку система згенерувала некоректний конфігураційний файл для модуля Bot Management. Цей файл був критично важливим, бо саме він визначає параметри для класифікації ботів і оновлюється кожні пʼять хвилин. Після хибного оновлення конфігурація миттєво поширилася мережею та спричинила масштабний збій у проксі-сервісах FL та FL2.

Проблемний файл містив подвоєну кількість параметрів, що перевищувало встановлені межі. Через це модуль Bot Management аварійно падав, що спричинило лавиноподібний каскад помилок у проксі, який почав повертати масові HTTP 5xx.

Кожен модуль у проксі має обмеження, щоб уникнути неконтрольованого споживання пам’яті та заздалегідь резервує ресурси для підвищення продуктивності. У випадку Bot Management існує обмеження на кількість ознак машинного навчання, що можна використовувати під час роботи — зараз ліміт становить 200, тоді як фактичне використання близько 60.

Коли проблемний файл з більш ніж 200 ознаками поширився на сервери, це обмеження було перевищено, що викликало паніку системи. Код FL2 на Rust, який перевіряє ліміт і спричинив необроблену помилку, виглядав так:

Після ідентифікації проблеми о 14:30 UTC Cloudflare зупинила поширення некоректного файлу та вручну оновила його до стабільної версії. Повне відновлення сервісів завершилося о 17:06 UTC.

Які сервіси постраждали найбільше

Збій зачепив практично всі ключові сервіси Cloudflare:

  • CDN та системи безпеки — масові HTTP 5xx.
  • Turnstile — компонент авторизації не завантажувався.
  • Workers KV — різке зростання помилок через недоступність проксі.
  • Dashboard — значна частина користувачів не могла ввійти.
  • Email Security — тимчасова відсутність доступу до джерела репутації IP.
  • Access — масштабні проблеми з автентифікацією.

Усі ці збої були прямим наслідком падіння основного проксі-двигуна FL/FL2, через який проходить фактично весь трафік Cloudflare.

Чому виникла помилка усередині ClickHouse

Корінь інциденту — зміна прав доступу в ClickHouse. Після оновлення користувачі почали бачити не лише таблиці з бази default, а й дублікати з бази r0, де зберігаються фізичні шарди. Саме на ці таблиці вийшов запит, який генерує feature file для Bot Management. У результаті файл став удвічі більшим, що й зламало модуль.

Класичний запит на отримання параметрів для feature file, який раніше повертав одну копію даних, після зміни прав почав повертати дублікати:

SELECT
    name,
    type
FROM system.columns
WHERE
    table = 'http_requests_features'
order by name;

Через доступ до фізичних таблиць r0 замість розподіленої абстракції обсяги даних збільшилися вдвічі, і файл ознак перевищив критичні ліміти, закладені в проксі. Проксі FL2 почав стабільно падати, а старий FL не падав, але повертав нульові оцінки ботів, що спричиняло додаткові помилки та некоректні блокування.

Компанія назвала цю подію найгіршим збоєм за останні шість років та перепросила клієнтів. У Cloudflare заявили, що вже розпочали масштабну роботу з посилення захисту та перевірки внутрішніх механізмів, зокрема вдосконалюють валідацію внутрішніх конфігураційних файлів, запроваджують додаткові глобальні «kill switches», переглядають підхід до обробки помилок, щоб внутрішні звіти не перевантажували систему, а також проводять повний аналіз усіх можливих моделей краху в проксі-модулях.

Хронологія ключових подій

  • 11:05 — внесено оновлення прав доступу в ClickHouse.
  • 11:28 — початок інциденту, перші помилки.
  • 13:05 — Workers KV і Access переведено на резервний режим.
  • 14:24 — зупинка генерації некоректних файлів.
  • 14:30 — відновлення основного трафіку.
  • 17:06 — повне відновлення всіх сервісів.

Нагадаємо, що пару тижнів назад відбувалися глобальні збої в роботі хмарних провайдерів AWS та Azure.

👍ПодобаєтьсяСподобалось10
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

добре технічно дякую

Але ж всі помилки від меморі сейфті, які Rust мав би вирішити, як же так?

Це помилка логіки, простіше кажучи упав assert.

Не відповідає деяким очікуванням — враховуючи як довго збирається, то раст повинен бувби впасти ще під час compiletime, бо at runtime всі падати вміють)

то для випіндрьожа у інші дні

не в ті дні коли щось падає через раст чи виповазає якась вразливість, тоді це не через раст і це може статись з кожною мовою і це помилка логіки

а от в усі інші дні раст — гарантія безпечності

Проблема не в ClickHouse, проблема в .unwrap()

В релізному коді unwrap не може існувати в принципі, і якщо вони так пишуть всюди — то можна було на Rust не переписувати...

Система типів Rust недостатньо виразна для опису інваріантів поведінки. Тому інколи стає дилема, чи робити unwrap, чи думати як обробити помилку по всьому стеку викликів, якої по логіці не має викликати взагалі. А потім як покрити тестами цей шлях.

Ну тоді все ок :) І так і повинно було спрацювати :)

т.е. из-за отстустствия статического анализа кода крупнейшая контора попала на ошибку из-за того, что просрала классическое правило «всегда явно указівать схему объекта»?
documentation.red-gate.com/...​r/performance-rules/pe002

в часи кризи кількість людських помилок зростає. Ніхто не знає як поведе себе у стані стресу. Система може справитись коли декілька людей у стресі і заблокувати їх помилки, але коли пішли масштабні скорочення або подібні проблеми. Тоді уже ніяка система стримуючих факторів не спрацює.

Про атмосферу роботи пишуть самі працівники компаній.

именно поєтому придумали автоматизацию и инструменті для контроля качества кода
а еще автоматическое/автоматизированное тестирование.

ці речі немає сенсу згадувати, без них інструменти подібного масштабу просто не існували б

Коли йде мова, що частину людей скоротять. При цьому менеджери вводять критерії продуктивності, по котрих будуть вирішувати кого скоротити. Наслідки такі, що навіть дуже розумні люди, починають робити те, що у спокійних умовах ніколи б не зробили

Яскравий приклад стресової ситуації в Україні, коли заброньованим чоловікам кажуть, що знімуть бронь. І архітекти за 20 роками досвіду роблять такі дії, ніби вчора школу закінчили. Хоча ще вчора вчили людей як жити

Немає сенсу когось засуджувати чи вчити як правильно. Компанія діє в реаліях ринку, працівники діють як витримує їх психіка

по идее сениорі/архитекторі должні біть довольно стрессоустойчивіе, нет?
они ж не принцесски и не подростки

Стрес на проекті це одне, з ним справляються. Зовсім інша справа коли на очах руйнуються речі від котрих залежить життя.

У нас були архітекти котрі по закону мали бронь, а потім закон змінили і броні уже не було. За рік люди взагалі перестали зосереджуватись на деталях проекту. Раніше буквально найдрібніша деталь була причиною не пропускати у прод. Після змін почали говорити про пріорітети і що це не критичні речі

У світі йдуть глобальні зміни, є ризик що життя багатьох зруйнується. Люди бачать як все що вони досягли в один момент може обнулитись. Скажи архітектам що їх накопичення будуть втрачені і вони будуть жити від зарплати до зарплати. І весь їх спокій і життєвий досвід розвіється за місяці

Зовсім інша справа коли на очах руйнуються речі від котрих залежить життя.

как правило нерды для компенсации стресса с головой уходят в работу

немає цієї роботи. Слова колеги з США:
— компанія говорить, що оптимізує роботу зі штучним інтелектом і звільняє американців. Хоча в той самий час наймає людей по світу за менші гроші. Раніше це робили у менших масштабах, а тепер роблять все частіше і частіше

Вчора він був ключовою людиною на проекті, писав статті і розповідав студентам, що якщо багато навчатись і працювати то успіх прийде. Сьогодні він зайвий, йому кажуть, що він дуже крутий, але дорогий. На проекті його команду змінили українці

У нього є накопичення, але ситуація з кожним роком стає лише гірше, це не той випадок коли можна перечекати. Частина його знайомих уже втратили роботу і не можуть знайти навіть на менші гроші

От йому і потрібно кожен день думати про те, що робити далі у житті. Тому і ймовірність помилки зростає.

ну т.е. вашего коллегу можно банально заменить чатом гпт?
и он при єтом не джун?
ну ок

Сьогодні він зайвий, йому кажуть, що він дуже крутий, але дорогий.

Пусть снизит планку и работает на двух работах, или вообше дауншифтнется, не виду проблем.

От йому і потрібно кожен день думати про те, що робити далі у житті.

Сменить профессию, пойти в єлектрики. я бы, к примеру, пошел

У цьому і справа. Люди підходять до рішення котре змінить їх життя. Частина уже знають, що компанія прийняла рішення і що їм потрібно готуватись до нових речей

І тут хтось пише
— а ви знаєте, а вам треба тести писати

Це як взагалі? це настільки базова річ, що потрібно бути абсолютно відірваним від реальності, щоб думати, що подібні слова є доречними у такій ситуації. Це некультурно

щоб думати, що подібні слова є доречними у такій ситуації. Це некультурно

Боже мой, попросили о выполнении своих обязанностей, да как они могли, нелюди!

та це я давно спілкувався з поколінням Радянського Союзу. Цинізм як стратегія виживання. Можна зрозуміти чому компанії так діють. Якщо рішення приймає той хто ніколи вживу працівників не бачив, то ставлення як до ресурсу досить легко появляться

Питання навіщо тобі цинізм до колег? Хоча якщо подумати, то важко заперечити, що цинізм працює. Такі люди краще розуміють як з ними можуть поступити і зроблять усе щоб уникнути цього

що цинізм працює

Только он и работает
работников нанимают не за красивые глазки и не для того чтобы постоянно «входить в положение» во вред работе
«хороший парень» — не профессия.

з одним уточненням, що цинізм працює тоді коли він замаскований. Якщо про цинізм знає достатня кількість людей, то це приводить до краху самої системи в котрій цинізм давав переваги

У випадку з американцями появляється розчарування у державі. Дійшло до того, що стають популярними китайські блогери. Які це може мати наслідки під час конфлікту можна побачити в Україні

В одному чаті, де я адмін, була цікава ситуація. Один не дуже розумний чоловік написав
— патріотизм це добре, але всі хто не використає можливість отримати бронь або виїхати, стануть людським ресурсом через рік

І потім написав що оформив собі бронь. Час пройшов, він добре себе почуває. Але проблема, що перестає працювати сама ситема, у котрій його цинічний розрахунок давав перевагу. Тепер він пише про охлос, котрий не розуміє, що потрібно думати про суспільне благо

з одним уточненням, що цинізм працює тоді коли він замаскований.

всегда работает.
вот если кто не хочет работать — то да, работать не будет.

Якщо про цинізм знає достатня кількість людей, то це приводить до краху самої системи в котрій цинізм давав переваги

Только если єто общство ромашек и снежинок

— патріотизм це добре, але всі хто не використає можливість отримати бронь або виїхати, стануть людським ресурсом через рік

ну и? какая из частей єтого утверждения неправдива?

Тепер він пише про охлос, котрий не розуміє, що потрібно думати про суспільне благо

а тут он в чем не прав?

суспільство руйнується через наявність тих, хто цинічним розрахунком показують усім, що цинізм це більш вигідна стратегія

Те що люди стали думати кожен сам за себе це важко заперечити. Я більше кажу про психологічні проблеми у людини котра є автором проблем на котрі сама жаліється

Інший цікавий феномен, людина з таким інтелектом, що не дозволяє побачити наслідки власних дій. І при цьому дійсно вважає себе мудрою людиною. Навіть ображається, коли йому це казати. На його думку люди повинні звертати увагу на його мудрі слова, а не на дії

суспільство руйнується через наявність тих, хто цинічним розрахунком показують усім, що цинізм це більш вигідна стратегія

Так цинизм и есть вігодная стратегия
розовіе слюни єто как раз проигрышная професси
цинизм это всегда был и есть стратегия выживания в кризисе

якщо психіка витримає. Не кожна людина може чесно собі сказати, що вона буде цинічною стосовно інших і буде очікувати чинічного ставлення до себе

Є люди у котрих щось сталось з психікою. Почались історії про Рим, Грецію, українську націю, європейську цивілізацію. Отак знаєш людину більше 10 років. І тут вона починає будувати собі образ якось римського сенатора і вести діалоги про майбутнє нації

Такі випадки бувають, що буквально будуть корисні для психології як науки. Виїхала людина жити на хутір і пише, що закон Сталіна не такий уже і поганий

Запитали що він курить у себе на хуторі, що побачив Рим. Каже що це все просто жарти. 20к коментарів, просто жарти

За рік люди взагалі перестали зосереджуватись на деталях проекту.

Это возрастное, нужно к невропатологу за таблеточками, очень помогает.

Після змін почали говорити про пріорітети і що це не критичні речі

Это не от стресса, по крайней мере не от того, что вы думаете

У світі йдуть глобальні зміни, є ризик що життя багатьох зруйнується. Люди бачать як все що вони досягли в один момент може обнулитись. Скажи архітектам що їх накопичення будуть втрачені і вони будуть жити від зарплати до зарплати. І весь їх спокій і життєвий досвід розвіється за місяці

Всегда так было
но рациональнее входит в такие проблемы с работой и накоплениями, чем из-за дедских истерик потерять работу, просрать накопления и войти в кризис с голой жопой.

так виглядає що CloudFlare мігрували з nginx-based FL proxy на новий Pingora-based FL2. Testing in production :-) у всій красі. Зате під навантаженням знайшли багу і пофіксили її всього за якихось 3 години (ну повністю за 6 але то таке). Плюс ще раз заперечили тезу про те що CDN мережу всю зламати — це треба постаратись через її розподілену природу.

Корінь інциденту — зміна прав доступу в ClickHouse.

(⊙_⊙’)

три с половиной часа полного дауна. многовато.

а чому вони взагалі використовують ClickHouse російської розробки?

Маю надію, що у висновках вирішать зробити власну БД на Rust для заміни ClickHouse, як уже замінили Nginx на Pingora.

звідки впевненість що будуть висновки?

Я більше скажу, вони з рашкою навіть не припиняли вести бізнес, захищаючи ресурси, напряму повʼязані з війною від українських ДДОС атак

По этому их подсети там быстро заблокировали

Я більше скажу, вони з рашкою навіть не припиняли вести бізнес, захищаючи ресурси, напряму повʼязані з війною від українських ДДОС атак

Так, треба терміново скликати РНБО і вводити проти них санкції.
Навіть і не знаю чого всі міндічгейт обговорюють...

Не дочекалися української альтернативи

Підписатись на коментарі