Зачем замораживать серверы и как это помогает экономить на инфраструктуре
Иногда вычислительные ресурсы нужны лишь на время. При этом они должны гарантированно проработать положенный срок. Есть ли способ сэкономить? Да, невостребованный хост можно временно вернуть в распоряжение облака — то есть «заморозить». Делимся всеми подробностями, сравниваем с альтернативой — прерываемыми виртуальными машинами.

Выгоднее арендовать, а не купить
Все больше компаний приходят к пониманию, что нанять команду для работы с инфраструктурой дешевле, чем полагаться на собственные ресурсы. Облака любят не только за быстроту развертывания мощностей, но и за безальтернативное сочетание экономичности и надежности.
Бизнес рад вместо капитальных затрат (CAPEX, Capital Expenditures) перейти к операционным (OPEX, Operating Expenditures). Такая оптимизация позволяет избежать крупных инвестиций. Не приходится отвлекать ресурсы на постороннюю деятельность. Все становится проще: появилась задача — и сразу же находятся все технические средства для ее решения.
Неиспользуемые ресурсы крадут бюджет
Самостоятельно покупать дорогостоящее оборудование и заботиться о его безотказной работе — не единственная расходная статья. Через непродолжительное время выясняется, что закупленных мощностей или не хватает, или бо́льшую часть времени они безнадежно простаивают.
Для мелких фирм и индивидуальных предпринимателей, у которых вся инфраструктура умещается в углу кабинета, недоутилизация вычислительных мощностей неактуальна. Однако с ростом инфраструктуры неполная загруженность ресурсов заставляет бухгалтера морщиться все сильнее. «Железо» продолжает потреблять электроэнергию, требовать расходов на обслуживание и амортизацию.
Новый уровень оптимизации
Существуют задачи, которым дополнительные мощности требуются ограниченное время. Для таких проектов возможно уменьшение стоимости аренды облачных ресурсов — достаточно отказаться от простаивающего сервера. Есть два способа это сделать: использовать прерываемые виртуальные машины или заморозить обычные.
Вопросами подобной оптимизации расходов занимается FinOps — направление IT-рынка на стыке финансов (Finance) и DevOps (Development & Operations).
О прерываемых машинах мы подробно писали в нашей недавней статье. Они позволяют сэкономить до 75% расходов на инфраструктуру. Однако у такого решения есть и два существенных недостатка: очень короткое время работы и риск неожиданной остановки. Такая особенность сильно сужает круг задач. Здесь как нельзя кстати оказывается еще одно новое решение на рынке — заморозка.
Что такое заморозка и разморозка
Заморозка
Когда виртуальная машина замораживается, часть ресурсов — процессор, оперативная память, графическая карта — отдается в распоряжение облака. Теперь ими сможет воспользоваться кто-то еще. Вернувшиеся вычислительные мощности не тарифицируются. Ни за процессоры, ни за память, ни за видеокарты плата со следующего часа не взимается.
При этом ВМ у клиента не забирается: она по-прежнему доступна в панели, диски остаются, IP-адрес все также находится во вре́менном владении.
Сетевые диски, публичные IP-адреса и другие неотчуждаемые ресурсы временно вернуть невозможно — их аренда продолжает оплачиваться. Такие сущности нельзя заморозить, так как они не могут быть использованы провайдером или переданы во временное распоряжение другому клиенту.
Разморозка
Продолжительность нахождения виртуальных машин в замороженном состоянии никак не ограничивается. Когда вычислительные мощности понадобятся, клиент самостоятельно размораживает ВМ в панели управления. Если в облаке есть необходимые свободные ресурсы, то машина стартует. На ней вновь можно работать неограниченное время без опасения, что вычислительные мощности будут отозваны.
Особенности заморозки
Заморозить можно только облачные серверы с сетевым загрузочным диском. Все компоненты виртуальной машины — процессоры, память видеокарты, накопители — должны находиться в одном вычислительном пуле.
Гипотетически могут возникать моменты, когда какие‑то специфичные ресурсы заняты. На практике мы с подобными случаями сталкиваемся крайне редко. Однако надо иметь в виду, что выход из заморозки происходит при наличии достаточного количества свободных мощностей — по‑другому она работать не может. Клиент самостоятельно кому‑то отдает свои ресурсы во временное пользование и существенно экономит на этом, но при этом получает некоторый риск задержки при их возвращении.
Ограничения
Инфраструктура сложная, организация пулов зависит от многих факторов. Не в каждом из них есть возможность предложить подобную услугу. Если в панели управления элемент интерфейса для заморозки отсутствует — значит, данный пул, к сожалению, такой вид сервиса пока предоставить не может.
Применимость
Заморозка полезна в самых разных ситуациях — все даже не перечислить. Можно заморозить уже работающую тестовую инфраструктуру или виртуальные машины с GPU в рамках проекта. В каких‑то случаях удобно наоборот — заранее подготовить несколько ВМ, которые легко поднять в случае наплыва пользователей или скачка нагрузки.
Как и у любой технологии, у заморозки своя область применения. Решение не подойдет:
- владельцам сервисов с круглосуточной доступностью, которые не испытывают ощутимые пиковые нагрузки и хостят обычные сайты, онлайн-магазины или новостные порталы;
- тем, кому нужна стопроцентная уверенность в размораживании по первому требованию.
Сравнение двух моделей
Итак, отдавать в облако вычислительные ресурсы можно двумя способами: используя прерываемые виртуальные машины или же включая заморозку. Многие путаются: «Это одно и то же? Если нет, то в чем разница? Что предпочесть в том или ином случае?»
Если кратко, то:
- прерываемые ВМ — это до 75% экономии на инфраструктуре, но при этом период функционирования непредсказуем и ограничен;
- заморозка — неограниченная продолжительность работы без риска вытеснения ресурсов, однако экономия возможна только лишь за счет периодов неиспользования.
Рассмотрим обе модели ограниченного использования ресурсов подробнее и сравним их особенности.
Предсказуемость и управляемость
Прерываемые виртуальные машины (ПВМ) могут быть приостановлены провайдером в любой момент для высвобождения занимаемых на железном хосте ресурсов, а срок жизни инстанса не превышает 24 часов. Сутки — это максимальная продолжительность их работы, при этом безотказность не гарантируется: вытеснение может произойти и раньше, если возникнет спрос на резервные мощности.
Заморозка может быть инициирована только пользователем. Именно он выбирает время, когда вычислительные ресурсы больше не нужны и их можно временно вернуть провайдеру. Ни продолжительность работы сервера, ни длительность его нахождения в замороженном состоянии никак не ограничиваются.
Стоимость
Тарификация тоже разная. Прерываемые ВМ дешевле сами по себе — это логично, раз нет гарантии срока их работы. Машина, до того, как отправится на заморозку, тарифицируется без скидок — ведь в этот период нет никакого отличия с «обычным» сервером. Не исключено, что пользователь ее вообще никогда не заморозит — соответственно, никакой разницы в стоимости часа не будет.
Важно! Если облачный сервер выключен или приостановлен — все его ресурсы без исключения продолжают оплачиваться. Чтобы прервать расход средств и списание их со счета, сервер должен быть именно заморожен. Только тогда vCPU, RAM и GPU возвращаются в облако и больше не тарифицируются.
Примеры
Высоконагруженные приложения
Юрий — ведущий архитектор высоконагруженного веб-проекта. В его ответственности находится взаимодействие экземпляров приложения за балансировщиком нагрузки.
Особенность проекта в том, что количество поступающих запросов неравномерно. Более того, не всегда удается кешировать результаты. Временами случается, когда увеличивается и количество запросов, и объем обрабатываемых данных.
Получалось так, что некоторые виртуальные машины не всегда были заняты. Случалось и наоборот: нагрузка подскакивала, и мы приближались к своим предельным возможностям. В такие моменты боялись, что наши пользователи вот-вот начнут получать отказ в обслуживании. При этом рентабельность проекта не так высока, чтобы руководство решилось на постоянную аренду дополнительных серверов.
Заморозка оказалась возможностью для быстрого и дешевого масштабирования. Теперь не боимся проводить рекламные кампании. Заранее размораживаем дополнительные серверы, после чего готовы выдержать любую нагрузку.
— Юрий, ведущий архитектор
Стартапы
Ангелина — основатель стартапа, который разрабатывает приложение для управления финансами. Раньше команда иногда сталкивалась с проблемами перерасхода бюджета на облачные вычисления, особенно во время праздников, когда работа замедлялась.
Сегодня наш стартап живет за счет грантовых средств, которые ограничены. Поэтому каждый перерасход — довольно большая проблема, за которой тянутся дополнительные согласования и бюрократия. Заморозка однозначно помогла нам восстановить баланс и вернуться в колею.
— Ангелина, руководитель стартапа
Ангелина смогла снизить затраты на облачные услуги, что позволило ее стартапу сосредоточиться на развитии без финансового стресса.
Маленькие проекты
Виктор — энтузиаст, создающий собственный игровой сервер. Работа пока ведется для небольшого сообщества игроков, которое активно только по вечерам и в выходные дни.
Раньше мне приходилось либо платить за постоянно работающий сервер, либо удалять его, а потом развертывать снова. Заморозка ВМ позволила мне поддерживать сервер в рабочем состоянии, оплачивая только время, когда на нем играют.
Фриланс
Анна — независимый веб-разработчик, который создает сложные веб-приложения для малого бизнеса и часто работает над несколькими проектами одновременно. Она любит заниматься программированием вечером и по выходным.
Раньше мне приходилось платить за постоянную работу виртуальных машин, даже когда я не писала код. Это съедало значительную часть моего бюджета. Теперь я замораживаю ВМ, когда не работаю. Сэкономленные средства могу инвестировать в новые инструменты и обучение.
— Анна, разработчик
Приостановка ВМ позволяет экономить средства, оплачивая вычислительные ресурсы только во время активной работы над проектом. Это особенно выгодно для фрилансеров и небольших команд.
Инструкция
Сервер можно заморозить как из браузера, так и в интерфейсе командной строки. Рассмотрим два способа.
Панель управления
Сначала необходимо выбрать сервер. Для этого в панели управления перейдите в раздел Облачная платформа → Серверы. Откроется страница со всеми вашими серверами. В нашем примере сервер только один — с произвольным названием Serenity.
Кликните по серверу, который хотите заморозить — вы попадете на его страницу.. Все дальнейшее управление осуществляется с помощью кнопок верхней правой части интерфейса.
Для заморозки сервера необходимо нажать на «снежинку». При наведении появится всплывающее окно с подсказкой. Операцию необходимо подтвердить — нажать Заморозить в модальном окне.
Через несколько секунд статус сервера ACTIVE
сменится на FROZEN
.
Для разморозки сервера необходимо нажать на кнопку с тремя вертикальными точками и во всплывающем меню выбрать пункт Возобновить.
Появится небольшая подсказка об оценке свободных ресурсов.
Через несколько секунд статус сервера снова станет ACTIVE
.
В панели управления можно посмотреть графики расходов. Для этого в разделе Облачная платформа требуется перейти на страницу Потребление платформы, далее — выбрать График расходов и вкладки Потреблено и Оплачено.
Можно увидеть расходы на конкретные проекты, объекты, ресурсы, регионы и пулы. Графики потребления и оплаты можно посмотреть за произвольный период времени и отсортировать.
Чтобы выгрузить детализацию потребления и оплаты в формате .csv, нажмите Скачать CSV и выберите, как будут сгруппированы строки в выгрузке (по часам, дням, неделям, месяцам, годам).
Интерфейс командной строки
В Selectel для управления облачной инфраструктурой из командной строки используется OpenStack. Инструкцию по его установке и настройке авторизации можно прочитать в нашей документации.
Получить список серверов, а также убедиться в готовности OpenStack, можно командой:
openstack server list
Чтобы заморозить сервер, достаточно передать его идентификатор или имя в команду:
openstack server shelve <server>
Как только заморозка произойдет, сервер получит статус SHELVED_OFFLOADED
.
Аналогично работает команда для разморозки:
openstack server unshelve <server>
После того как процесс разморозки будет завершен, статус сервера станет ACTIVE
.
Выводы
Заморозка позволяет существенно экономить средства и всегда держать под рукой готовые к работе вычислительные мощности. На период заморозки не оплачиваются ни ядра процессоров, ни память, ни графические карты. Тарификация продолжится только после разморозки инстанса.
Неотчуждаемые ресурсы, которые невозможно вернуть в распоряжение облака — IP‑адреса, сетевые диски и другие — заморозке не поддаются, оплата за их использование продолжится в любом случае.
Заморозка полностью контролируется пользователям. Сам процесс очень прост, а управление доступно как в браузере, так и в интерфейсе командной строки.
Вместо того чтобы непрерывно оплачивать облачные ресурсы, которые используются нерегулярно, можно отдать эти мощности тем, кто в них нуждается, и тем самым сэкономить.