Rambler's Top100
 
Статьи
Сергей ЗИНКЕВИЧ  04 октября 2018

Как выжать из облака максимум с помощью средств автоматизации

Terraform, Ansible, AWS CLI, Vagrant, Exapark и другие. Как использовать технологии и средства автоматизации для гибкого управления ресурсами в облаке? 

Очевидный факт – облако позволяет экономить ресурсы за счет модели, подразумевающей оплату только за потребленные ресурсы. Это актуально в первую очередь для сервисов и систем, сталкивающихся с пиковыми нагрузками. Хрестоматийный пример – интернет-магазин одного из крупнейших российских провайдеров, размещенный в облаке КРОК. Традиционно в ритейле проводят распродажи примерно в одно и то же время – летом и после новогодних праздников. Это, как правило, приводит к наплыву посетителей. Аналогичные пики случаются накануне крупных праздников. Чтобы обеспечить бесперебойный доступ к интернет-магазину, наш заказчик в такие моменты наращивает потребление вычислительных мощностей. В той же пропорции возрастают счета за услуги, но в остальное время, когда нагрузка относительна постоянна, стоимость существенно уменьшается. В результате ритейлер решает одновременно несколько задач – гарантирует непрерывность своего бизнес-процесса и гибко управляет ресурсами, не платя за инфраструктуру в те моменты, когда избыточной мощности не требуется.

Особенность данного проекта – это переход на аренду выделенной инфраструктуры (HaaS) в моменты «затишья» и быстрое развертывание и подключение облачных мощностей для поддержки работы онлайн-сервиса, например, во время Black Friday. Мы неоднократно просчитывали для заказчиков ТСО по различным схемам размещения и можем с уверенностью сказать, что такая гибридная форма экономически оправдана. Облако действительно выгоднее для компаний, чей бизнес связан с сезонностью или сильными колебаниями спроса, что подтверждает пример упомянутого ритейлера – облачные услуги помогают ему экономить 17 млн рублей в год.

Есть ли дополнительные источники для экономии в облаке? Да, они достаточно легко настраиваются и подходят, в том числе для сервисов со статичной нагрузкой.

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

А автомобильный дилер Swed-Mobil, который использует облако КРОК для поддержки бэк-офисных систем (имеются в виду терминальные серверы, файловые службы, серверы приложений), идет еще дальше и попросту отключает виртуальные машины после окончания рабочего дня. Тем самым автодилер до 50% снижает чек за потребленные мощности, что в масштабе компании весьма ощутимые деньги.

Автоматизация в облаке для гибкого управления ресурсами, которые необходимы для работы размещенных систем – это один из сценариев. Другой сценарий заключается в быстром развертывании инфраструктуры строго под задачи тестирования. Это актуально как для ИТ-компаний, так и для широкого круга облачных пользователей, которые разрабатывают новые клиентские сервисы и онлайн-приложения. С помощью автоматизированных средств легко развернуть тестовую среду и также просто и быстро ее «схлопнуть». Для сравнения, развертывание фермы инстансов – виртуальных машин – может занимать от пары часов до нескольких дней в зависимости от настроек и требовать постоянного присутствия администратора. И, напротив, за счет преднастроенных шаблонов, заложенных в автоматизированных средствах управления облака, виртуальное окружение создается менее трудозатратно для ИТ-специалиста и значительно быстрее.

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

Какие средства автоматизации используются в облаке КРОК

Облако КРОК имеет AWS-совестимый API. Веб-интерфейс облачной консоли интуитивно понятен, с его помощью можно одним кликом создать нужное количество виртуальных машин и дисков, развернуть сеть, а также использовать средства безопасности (firewall). При частом использовании определенной конфигурации виртуальной машины можно создать шаблон, который может использоваться для развертывания однотипных подготовленных виртуальных машин.

 
Рис. 1. Возможность выбрать диск с нужными параметрами производительности через консоль управления облаком КРОК

В рамках работы с облачной платформой нужно разделять два этапа настройки инфраструктуры. Первый этап – развертывание (provisioning) заключается в создании необходимых облачных ресурсов: например, виртуальных машин, дисков и сетевой подсистемы. Второй этап – настройка запущенных виртуальных машин  (configuration managеment) — заключается в установке необходимого ПО на созданные вычислительные мощности.

Пожалуй, самая популярная утилита среди заказчиков облака КРОК  для  развертывания облачных ресурсов  – Terraform. По нашим оценкам, ее пользуются до 50% клиентов, в том числе портал для путешественников Tutu.ru и разработчик ПО информационной безопасности Positive Technologies. Отличительная особенность решения – универсальность, позволяющая запускать Terraform на всех распространённых облачных платформах, включая совместимое с AWS облако КРОК. Данная утилита также достаточно функциональна. Отличительной особенность данного средства автоматизации является быстрая скорость развертывания и сворачивания тестовых и продуктивных инфраструктур. 

 
Рис. 2 Создание дисков в Terraform  


Ansible – достаточно популярная система управления конфигурациями в облаке. Она очень часто используется на этапе настройки виртуальных машин. В Ansible используется простой язык разметки, который позволяет описывать желаемую конфигурацию установленного ПО на виртуальную машину, используя декларативный подход. Он описывает только желаемое состояние виртуальной машины после работы Ansible, что сводит полную настройку софта до вызова одной команды.

ansible-playbook playbook.yml (<- пример вызова команды ansible)

Нужно отметить, что оба инструмента (Terrafrom и Ansible) могут быть взаимозаменяемыми. Однако, каждый из них наиболее удобен в использовании на определенных этапах настройки: Terraform для provisiongin и Ansible для configuration managment.

Автоматизация рутинных инфраструктурных задач начинается с REST API, которое предоставляется облачным сервисом КРОК. Использование только REST-методов не очень удобно, поэтому DEVOPS-инженеры, занимающиеся автоматизацией, предпочитают специализированные инструменты. Например, AWS CLI — консольную утилиту, которая позволяет использовать REST API облака КРОК удобным образом. Так как облако КРОК предоставляет AWS совместимый API, настройка AWS CLI заключается в одном простом шаге: создание файла с идентификатором пользователя и его паролем.

Пример использования aws cli:

aws —profile croc —endpoint-url https://api.cloud.croc.ru ec2 run-instances —type m1.small —vpc-id vpc-12asd1 —image-id im-12vs12

В рамках данного примера мы создаем виртуальную машину с 1 Gb RAM и 1 виртуальным ядром. После чего к этой виртуальной машине можно подсоединиться через виртуальную консоль или используя ssh-протокол.

В свою очередь Vagrant изначально создавался как инструмент для запуска большого количества виртуальных машин на рабочей станции разработчика ПО. В дальнейшем были созданы дополнительные модули расширения возможностей Vagrant для работы с облачными ресурсами. К сильным сторонам этого технического решения можно отнести использование полноценного языка программирования Ruby в сценариях автоматизации. В отличие от Ansible, где используется декларативный подход, в Vagrant для создания облачной инфраструктуры используются стандартные конструкции языка программирования, что может быть предпочтительным для разработчиков, так как им не придется изучать еще один язык разметки.  Примечательно, что это продукт той же компании, что и Terraform. При этом если последняя утилита позиционируется как инструмент для работы с продуктивной инфраструктурой в первую очередь, то Vagrant – в основном для разработки.  

В облаке КРОК можно работать также с менее популярными, но от того не менее эффективными решениями, такими как Exapark. Это web-ресурс, простой в управлении, который позволяет настраивать включение и выключение виртуальных машин по расписанию. Собственно, фактически этим весь его функционал и ограничивается, что не мешает использовать платформу “КРОК Облачные сервисы» совместно с Exapark столь успешно упомянутой ранее медицинской организацией.

Сергей Зинкевич, продакт-менеджер, «КРОК Облачные сервисы»
Поделиться:
Заметили неточность или опечатку в тексте? Выделите её мышкой и нажмите: Ctrl + Enter. Спасибо!