Возможности VMware по организации эластичного облака для интернет-проектов

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

Для построения инфраструктурного облака (по модели IaaS), VMware предлагает семейство продуктов объединенное общим брендом VMware vCloud (VMware vCloud Director и VMware vCloud Request Manager), вспомогательными продуктами идут такие вещи как VMware vShield (обеспечение сетевой безопасности) и VMware ChargeBack (биллинг). Разумеется, все это только обвязка для того, чтобы управлять виртуальными ресурсами, которые нарезаются и обеспечиваются силами основного продукта VMware vSphere.

Что получает клиент? Виртуальные ресурсы для клиента представлены в виде так называемого виртуального Дата-Центра (далее vDC), который характеризуется такими параметрами как:

  • количество оперативной памяти,
  • дискового пространства,
  • вычислительной мощности, измеряемой в Ghz.

Для vDC также выделяются сети, как внутренние (не имеющие собственной адресации), так и внешние (фактически пул публичных ip адресов сервис провайдера). Посредством vShield пользователь имеет возможность управлять маршрутизацией и фильтрацией трафика между сетями, что, впрочем, можно сделать просто используя собственный фаейрвол, реализованный из виртуальной машинки с FreeBSD.

Помимо простой возможности создания и конфигурирования виртуальных машин, интерфейс управления позволяет заливать, использовать и предоставлять другим пользователям, образы заранее сконфигурированных виртуальных машин. Мало того, оперировать можно не отдельными виртуальными машинами, а целыми наборами взаимоувязанных виртуальных машин, призванных решать одну задачу. Таким набором может быть заранее сконфигурированная инфраструктура разработки ПО, предоставляемое в трехзвенной архитектуре приложение и многое другое. Для многих разработчиков может оказаться интересным предоставлять свои решения не в виде устанавливаемого дистрибутива (в особенности если оно включает в себя несколько серверных ролей), а в виде vApp VMware, которая включает в себя предустановленные операционные системы, настроенные и готовые к работе приложения и другие необходимые для его работы компоненты (база данных, балансировщики нагрузки и т.п.). Использование готового преднастроенного vApp, позволяет потенциальному клиенту в течение минут начать использовать и тестировать интересующее его приложение.

Однако, т.к. темой нашего поста является все же эластичное облако для разработчиков, то мы пойдем далее. Допустим у нас есть проект, содержащий в себе три роли серверов: сервер приложений, сервер базы данных и что-то еще, например nginx. Добавим туда еще одну роль, призванную следить за ростом нагрузки и решать проблему нехватки ресурсов. Назовем ее - Capacity manager. Предположим, что нагрузка на проект пульсирует в течение суток, и, по мере продвижения проекта, постепенно растет в целом. Какие пути оптимизации использования ресурсов у нас есть?

VMware vCloud Director предлагает ресурсы для vDC в трех моделях:

  • Available Pool – просто фиксированный размер ресурсов для vDC клиента
  • Pay-As-You-Go – столько сколько потребил
  • Reservation Pool – гарантированный размер ресурсов без возможности оверсела провайдером услуг

Для нас наилучшим образом подойдет модель Pay-As-You-Go, ее и выбираем. В начале мы создали два сервера приложений, один сервер базы данных и два сервера nginx. Конфигурация каждого из них была минимально возможной – (например, CPU 3GHz, RAM 1Gb, HDD 40Gb). Допустим, что все роли серверов кроме базы данных являются взаимозаменяемыми и их остановка не несет простоя оказываемому сервису, только к снижению производительности. На каждую серверную роль мы сделали готовый шаблон сервера, с целью минимизации времени развертывания новых серверов в будущем. В один прекрасный момент наш замечательный сервер в роли Capacity manager обнаружил, что оба сервера приложений не справляются с нагрузкой. У него два пути решения проблемы - увеличить число серверов приложений, либо увеличить количество ресурсов существующих серверов. Используя предоставляемый vCloud API, мы гасим сервер, добавляем ему процессор и включаем заново. Производительность нашего облачка немного выросла. Теперь наш Capacity manager видит, что дисковое пространство на сервере базы данных заканчивается. С этим проще, достаточно, правильно дернув vCloud API, увеличить в онлайне размер диска выданный серверу под БД и попросить операционную систему увидеть данные изменения. По мере роста нагрузки, мы подняли конфигурацию серверов приложений до неприличных размеров, например RAM 32Gb и CPU 32GHz. Самое время начать увеличивать наше облако горизонтально. Для этого дергаем тот же vCloud API и делаем копию одного из существующих серверов приложений. Кастомизируем его параметры (ip адреса, имя хоста) и запускаем в работу. Таким образом, мы получаем возможность динамически изменять размеры нашего облака и соответственно лучше обеспечивать соответствие между потребностью в ресурсах и их фактическим наличием. Возможности vCloud API хорошо представлены на сайте VMware.

В итоге мы имеем проект, адаптирующийся под нагрузку, оплата за ресурсы для которого осуществляется в зависимости от реального потребления. Для тех, кто не хочет реализовывать роль Capacity Manager, есть развитый веб интерфейс, который позволяет делать все выше озвученные операции вручную - это приемлемо в большинстве случаев, в особенности, если вы не разработчик своей платформы, а в большей степени системный администратор.

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

Послесловие

Некоторые, ознакомившись с данным постом, могут подумать, сколько возни со всем этим, зачем мне это? Я же просто разработчик и не хочу заниматься управлением и оптимизацией инфраструктуры. Отвечу! Мы рассказываем про IaaS – Инфраструктура как услуга. Для данной аудитории будет интересна наша следующая статья на тему PaaS – Платформа как услуга от VMware - vFabric. Где мы попытаемся раскрыть, что стоит за этим термином и какие возможности данная платформа предоставляет.

ПРОТЕСТИРОВАТЬ vCloud

Логин: demo

Пароль: 12345678

Консультация по услугам

Наши менеджеры с удовольствием ответят на Ваши вопросы и подготовят индивидуальное коммерческое предложение.