[Перевод] Неудачное развертывание ПО привело к сбою в работе сервиса Cloudflare

Это небольшая временная статья, на месте которой впоследствии окажется полный анализ и исчерпывающая информация о том, что сегодня произошло.

Сегодня на протяжении примерно 30 минут посетители сайтов Cloudflare могли видеть ошибку 502, вызванную резким скачком загрузки CPU нашей сети. Это произошло по причине неудачного развертывания программного обеспечения. Мы провели откат изменений, и сейчас сервис функционирует в обычном режиме, как и прежде, а все домены, использующие Cloudflare, вернулись к нормальному уровню трафика.

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

Добавлено в 20:09 по UTC:

Сегодня в 13:42 по UTC был обнаружен сбой в нашей сети, в результате которого посетители доменов Cloudflare видели ошибку 502 («Bad Gataway»). Причиной этого сбоя послужило развёртывание неверно сконфигурированного правила в Cloudflare Web Application Firewall (WAF) во время стандартного процесса развёртывания новых управляемых правил Cloudflare WAF.

Новые правила были призваны усовершенствовать механизм блокирования встроенного JavaScript, используемого в хакерских атаках. Данные правила были развёрнуты в режиме симуляции, в котором обычно происходит обнаружение и логгирование ошибок без блокировки пользовательского трафика, что позволяет измерить количество ложных срабатываний и убедиться в том, что новые правила будут работать нормально при развертывании их в рамках настоящего проекта.

К сожалению, одно из этих правил содержало регулярное выражение, приведшее к скачку загрузки CPU до 100% на наших компьютерах повсеместно. Именно из-за этого скачка пользователи нашего сервиса были свидетелями ошибки 502, а трафик упал до 82%.

На графике ниже показан скачок загрузки CPU на одном из наших PoPs:

tomjq1qowdfvsn_nbvx0d_3ei5s.png

Мы впервые столкнулись с проблемой полного исчерпания ресурсов CPU, что было для нас крайне неожиданно.

Мы постоянно проводим развёртывание ПО в нашей сети и уже разработали автоматизированные системы для запуска тестов и процедуру поэтапного развёртывания в целях предотвращения неприятных ситуаций. К сожалению, глобальное развертывание правил WAF было осуществлено в одно действие, что и вызвало сегодняшний сбой.

В 14:02 по UTC мы осознали, что произошло и приняли решение полностью отключить наборы правил WAF, что сразу же нормализовало загрузку CPU и восстановило трафик. Мы сделали это в 14:09 по UTC.

После этого мы проанализировали проблемный pull request, откатили изменения в соответствующих правилах, протестировали свои действия, чтобы быть уверенными на 100%, что ошибка найдена верно, а затем восстановили наборы правил WAF в 14:52.

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

© Habrahabr.ru