1768644286
2026-01-17 09:30:00
Cloudflare недавно общий как он управляет своим огромным глобальным флотом с помощью Соляной стек (Соль). Они обсудили инженерные задачи, необходимые для решения проблемы «песчинки». Речь идет о поиске одной ошибки конфигурации среди миллионов государственных приложений. Cloudflare’s Проектирование надежности объекта (SRE) переработали наблюдаемость конфигурации. Они связали сбои с событиями развертывания. Эти усилия сократили задержки выпуска более чем на 5% и уменьшили объем ручной сортировки.
В качестве инструмента управления конфигурацией (CM) Salt гарантирует, что тысячи серверов в сотнях центров обработки данных остаются в желаемом состоянии. В масштабах Cloudflare даже незначительная синтаксическая ошибка в файле YAML или временный сбой сети во время запуска «Highstate» могут привести к остановке выпуска программного обеспечения.
Основной проблемой, с которой столкнулся Cloudflare, был «дрейф» между запланированной конфигурацией и фактическим состоянием системы. Когда запуск Salt завершается неудачей, это влияет не только на один сервер; это может предотвратить развертывание критических исправлений безопасности или функций производительности во всей периферийной сети.
Соль использует настройка мастер/миньон с НольMQ. Это затрудняет выяснение того, почему конкретный миньон (агент) не сообщил о своем статусе мастеру. Это как искать иголку в стоге сена. Cloudflare выявила несколько распространенных режимов сбоев, которые разрывают эту петлю обратной связи:
- Тихие неудачи: Миньон может аварийно завершить работу или зависнуть во время приложения состояния, в результате чего мастер будет бесконечно ждать ответа.
- Истощение ресурсов: Тяжелые поиски данных (метаданных) или сложные шаблоны Jinja2 могут привести к перегрузке центрального процессора или памяти, что приведет к прекращению выполнения заданий.
- Ад зависимости: Состояние пакета может оказаться неудачным, поскольку вышестоящий репозиторий недоступен, но сообщение об ошибке может быть скрыто глубоко в тысячах строк журналов.
Схема солевой архитектуры
Когда происходили ошибки, инженерам SRE приходилось вручную подключаться по SSH к кандидатам-миньонам. Они отслеживали идентификаторы заданий среди мастеров и просматривали журналы, которые имели ограниченное хранение. Затем они попытались связать ошибку с изменением или состоянием окружающей среды. Из-за тысяч машин и частых коммитов этот процесс стал утомительным и трудным в обслуживании. Это не имело большой инженерной ценности.
Чтобы решить эти проблемы, команды Business Intelligence и SRE Cloudflare объединились для создания новой внутренней структуры. Цель заключалась в том, чтобы предоставить инженерам механизм «самообслуживания», позволяющий определять основную причину сбоев Salt на серверах, центрах обработки данных и определенных группах компьютеров.
- Git коммитит: Определение того, какое именно изменение в репозитории конфигурации вызвало сбой.
- Сбои внешних служб: Определение того, действительно ли сбой Salt был вызван зависимостью (например, сбоем DNS или сбоем стороннего API).
- Специальные релизы: Различие между запланированными глобальными обновлениями и изменениями, внесенными разработчиками вручную.
Cloudflare изменила способ управления сбоями инфраструктуры, создав основу для автоматической сортировки. Теперь система может автоматически отмечать конкретную «песчинку», одну строку кода или один сервер, вызывающий блокировку выпуска.
Переход от реактивного к проактивному управлению привел к:
- Сокращение задержек релизов на 5 %: Благодаря более быстрому обнаружению ошибок время между «завершением кода» и «работой на границе» сократилось.
- Сокращенный труд: SRE больше не тратят часы на «повторяющуюся сортировку», что позволяет им сосредоточиться на улучшениях архитектуры более высокого уровня.
- Улучшенная проверяемость: Каждое изменение конфигурации теперь отслеживается на протяжении всего жизненного цикла, от Git PR до окончательного результата выполнения на пограничном сервере.
Команда инженеров Cloudflare заметила, что, хотя Salt — мощный инструмент, управление им в «масштабе Интернета» требует более разумной наблюдаемости. Рассматривая управление конфигурацией как ключевую проблему данных, требующую корреляции и автоматического анализа, они подают пример другим крупным поставщикам инфраструктуры.
Учитывая проблемы, с которыми Cloudflare столкнулся при работе с SaltStack, стоит отметить, что альтернативные инструменты управления конфигурацией, такие как Анзибль, Кукольныйи Шеф-повар каждый из них требует различных архитектурных компромиссов. Ansible работает без агентов с использованием SSH. Это упрощает настройку мастера/миньона в Salt. Однако из-за последовательного выполнения могут возникнуть проблемы с производительностью при масштабировании. Puppet использует модель извлечения, в которой агенты регистрируются на главном сервере. Это обеспечивает более предсказуемое использование ресурсов, но может замедлить срочные изменения по сравнению с моделью push-уведомлений Salt. Chef также использует агенты, но фокусируется на подходе, управляемом кодом, с помощью Ruby DSL. Это обеспечивает большую гибкость для решения сложных задач, но требует более крутой кривой обучения.
В масштабах Cloudflare каждый инструмент сталкивается со своей «песчинкой». Однако главный урок ясен: любая система, управляющая тысячами серверов, нуждается в надежной наблюдаемости. Он также должен автоматизировать корреляцию ошибок с изменениями кода и иметь интеллектуальные механизмы сортировки. Это превращает ручную детективную работу в ценную информацию.
#Cloudflare #автоматизирует #отладку #управления #конфигурацией #Salt #сокращая #задержки #выпуска
Ещё по этой теме

