image

Если компания активно тестирует гипотезы и запускает новые прототипы, в облаке могут накапливаться «забытые» сервисы, которые продолжают потреблять ресурсы. Есть open source инструменты, которые автоматически находят и удаляют неиспользуемые инстансы в такой инфраструктуре. Обсудим возможности и предпосылки к использованию подобных решений.

Зомби-серверы и забытые сервисы


Гибкость и удобство управления облачными ресурсами позволяют эффективнее управлять ходом разработки — снижать риски потери данных за счет бэкапов, обмениваться настройками IDE в географически распределенных командах — выпускать больше прототипов, чаще тестировать новые гипотезы.

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

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

Взять и провести облачный субботник


image

Одно из новых открытых решений, которое позволит это сделать, называется Pleco. Утилита написана на Go, использует Kubernetes API и автоматически удаляет непродуктивные облачные инстансы. В каждом из них может быть запущен специальный сборщик (data collector), агрегирующий информацию о пользователях и приложениях, метаданные из системы управления облаком и базы данных управления конфигурациями. Собранную информацию он регулярно пересылает центральному парсеру.

Далее строится граф зависимостей (reference graph), отражающий связи между хостами, пользователями и алиасами. После в дело вступает классификатор на базе алгоритма CART. Он классифицирует облачные ресурсы путем построения дерева решений. Учитываются такие метрики, как максимальная и средняя загруженность центрального процессора, пропускная способность сети, занятость дисков. Инстанс считается непродуктивным, если вероятностный классификатор превышает 80%. Хотя администратор всегда может защитить любую виртуальную машину специальным тегом — do_not_delete, чтобы случайно не потерять ценные данные и приложения. Опробовать инструмент могут все желающие — исходники и инструкции по установке выложены в репозиторий на GitHub.

Распространённая система ALDM (Analytics for Logical Dependency Mapping) для задач обнаружения инфраструктуры (infrastructure discovery) использует аналогичный подход к построению топологий — на базе сборщиков данных (gray-box). И сегодня ей пользуются сотни компаний из списка Fortune 500.

Какие еще есть инструменты


image

К вопросу «уборки мусора» в облачных средах подключаются и корпорации. Они предлагают свои системы поиска зомби-машин на базе машинного обучения, которые собирают данные о серверах, активных сетевых подключениях, задействованных ресурсах. На основе этой информации — делают вывод, насколько полезную нагрузку выполняет та или иная виртуальная машина.

Есть аналоги и в сфере open source — несколько лет назад свой сборщик мусора для облака также представил крупнейший сервис потокового видео. Система под названием Janitor Monkey маркировала неиспользуемые ресурсы в облаке и автоматически удаляла их через несколько дней. Однако инструмент был заточен под инфраструктуру стриминговой компании, поэтому не всегда подходил для работы за её пределами. В итоге разработку проекта свернули.

Однако есть и более интересная версия — Chaos Monkey. Это — яркий пример утилиты, которая следует концепции Chaos Engineering, связанной с тестированием надежности вычислительной системы или инфраструктуры в экстремальных условиях (например, с намеренным отключением серверов или заполнением дискового хранилища под завязку). Инструмент Chaos Monkey случайным образом отключает контейнеры и инстансы виртуальных машин в продакшн-среде. Так становятся очевидны все инфраструктурные недостатки, которые подталкивают инженеров разрабатывать более устойчивые сервисы. Желающие поэкспериментировать с необычной концепцией могут найти инструкции по настройке в официальной документации.

Еще одна интересная утилита называется nuke-aws (практически аналогичную функциональность предлагает cloud-nuke) — она может стирать данные на аккаунте. Хотя разработчики все же внедрили пару защитных механизмов, чтобы нужные приложения в облаке не пострадали. Утилита просит дважды подтвердить намерение удалить ресурсы и не работает с аккаунтами с названием prod. Дополнительно администратор может настроить список с идентификаторами аккаунтов, которые стоит обойти.

По словам авторов, инструмент сокращает затраты на используемые облачные ресурсы в их компании. Просто в конце дня каждый разработчик очищает собственный кластер Kubernetes. Хотя стоит заметить, что nuke-aws подходит не для любой ситуации, поскольку может нарушать последовательность удаления сервисов в облаке. Из-за этого данные не получится стереть полностью. Например, если сперва удалить роль, назначенную кластеру, то сам кластер можно будет убрать только с помощью технической поддержки провайдера.

Больше материалов о работе в облаке — в наших статьях:


Комментарии (3)


  1. litos
    07.09.2022 03:14

    «Давайте выключим этот провод и посмотрим что что упало», такое было на заре интернет-провайдеров когда тянули домосети на витой паре и неуправляемых коммутаторах )


  1. shurup
    07.09.2022 07:24

    Делать SEO-тексты на Хабре прямо с ссылками на ключевых словах, ведущими на сайт компании, ­— это катастрофа.


  1. jobs1
    08.09.2022 01:53

    По ссылке на github Pleco:

    Automatically remove cloud and kubernetes resources based on a time to leave tag, ttl.

    Ни о каком интеллектуальном выявлении неиспользуемых ресурсов упоминаний не нашел.