Сегодня многие технологические компании обращают пристальное внимание на технологию контейнеров. В их числе – Google, IBM, Microsoft и конечно HPE. Контейнеры позволяют «упаковать» в один физический сервер намного больше приложений, чем это позволяют сделать виртуальные машины. Контейнерные технологии не новы, например, многие знают о них по разработкам компании Parallels, но они играют все более важную роль в центрах обработки данных и облаках. О них и пойдет речь.

image
Немножко не те контейнеры, о которых речь, но надо же привлечь внимание :)

Как и многие компании мира высоких технологий, компания Hewlett Packard Enterprise занимается венчурными инвестициями. Один из недавних примеров – инвестиции в разработчика лидирующих на рынке программно-определяемых объектных хранилищ Scality. Другой пример инвестиций в передовые технологии – поддержка стартапа Mesosphere, разработчика так называемой DC/OS.

Что такое DC/OS и чем она хороша?


Операционная система DC/OS (Data Center Operating System), известная ранее как DCOS, недавно перешла в разряд Open Source. Компания-разработчик Mesosphere из Сан-Франциско решила открыть исходный код ее ядра.

Mesosphere разработала коммерческую версию DCOS пару лет назад. Основанная на ядре Apache Mesos, DC/OS упрощает управление разнородными нагрузками на таких платформах как Hadoop, Spark, Kafka и Docker. К настоящему времени Mesosphere DC/OS стала коллективным проектом, в котором участвуют более 50 компаний, включая Autodesk, Canonical, Cisco, Citrix, EMC, HPE, Joyent, Microsoft, NetApp и Verizon.

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

Чем же хороша в этом плане DC/OS? Хотя контейнеры позволяют достичь хорошей масштабируемости, у них есть недостаток – сложно добиться тесной интеграции с существующими приложениями, такими как базы данных, хранилища данных и платформы для больших данных. DC/OS как раз и разработана для того, чтобы можно было управлять приложениями разного типа в одной среде. Она устраняет разрыв между традиционными бизнес-приложениями и современными облачными приложениями, обеспечивает оркестрацию.

Например, в DC/OS можно работать с горизонтально-масштабируемыми Web-приложениями в контейнерах, взаимодействующих с кластерами Apache Hadoop или Cassandra, использовать Marathon для оркестрации контейнерных приложений и Chronos – для планирования длительных задач. Такая унифицированная среда позволяет наряду с традиционными выполнять масштабируемые контейнерные приложения. Это главная особенность DC/OS.

Хотя для создания и развертывания контейнеров традиционно используется Docker, нужен дополнительный уровень для оркестрации контейнерных приложений. Такими решениями для управления контейнерами на более высоком уровне являются Docker Swarm и Kubernetes. ПО Docker Swarm разрабатывается и поддерживается компанией Docker, а Kubernetes – результат перевода в Open Source подмножества разработанного Google инструмента управления ЦОД под названием Borg. Интересно, что DC/OS может управлять как средами Docker Swarm, так и Kubernetes.

Операционная система DC/OS охватывает все серверы в ЦОД или в облаке и реализует мощный уровень абстрагирования ресурсов. Лежащее в основе DC/OS ядро Apache Mesos для распределенных систем включает в себя планировщик, создающий пул ресурсов, автоматически распределяющий их и планирующий задания согласно запросам и политикам.

По сути, ЦОД работает как один большой компьютер. Технологию Mesosphere можно рассматривать как некий мозг, автоматически распределяющий ресурсы и данные для приложений.



DC/OS предоставляет гибкие возможности развертывания приложений, сервисов и инфраструктуры больших данных, использующих общие ресурсы. В такой масштабируемой среде можно выполнять разные приложения и нагрузки – от PaaS до приложений больших данных и СУБД. Работает DC/OS в любой современной среде Linux, в частном и публичном облаке, в виртуальных машинах, на «голом железе» x86, обеспечивая эффективное использование ресурсов.

Отраслевая поддержка


В прошлом году для продвижения нативных облачных приложений под руководством Google был сформирован консорциум Cloud Native Computing Foundation (CNCF). Его членами стали Joyent, CoreOS, IBM, VMWare, Cisco, Weaveworks и др. Консорциумом CNCF управляет Linux Foundation. Mesosphere – один из основателей этого консорциума.

Отдельного консорциума по DC/OS компания Mesosphere не создавала, но она поддерживает сообщество разработчиков соответствующего ПО. Если консорциум CNCF в большей степени ассоциируется с Kubernetes, то на повестке дня сообщества, возглавляемого Mesosphere и Microsoft, – вопросы развития и продвижения DC/OS. Эксперты считают, что со временем DC/OS может стать реальной альтернативой Kubernetes.

HPE и Microsoft – ключевые инвесторы Mesosphere. Их инвестиции составили 73,5 млн. долларов, причем ведущая роль принадлежит Hewlett Packard Enterprise. Технология DC/OS будет играть важную роль в гибридных облаках Microsoft и может быть задействована в будущей платформе для частного облака Microsoft Azure Stack. Благодаря сервису Azure Container Service в публичном облаке и DC/OS в частном облаке Microsoft сможет предложить корпоративным заказчикам возможности гибридного облака. В корпоративных ЦОД возможности DC/OS могут также использовать другие технологии, такие как HDInsight в Windows Server.

Разработки Mesosphere нашли отражение в Microsoft Azure Container Service (ACS). Azure Container Service значительно ускоряет разработку ПО. Корпорация Microsoft сделала доступным свой сервис оркестрации контейнеров одновременно с анонсом Mesosphere DC/OS. ACS – это сервис CaaS («контейнеры как сервис»), конкурирующий с Google Container Engine и Amazon EC2 Container Service. Однако ни Amazon, ни Microsoft не являются членами Cloud Native Computing Foundation. В Amazon CaaS применяется проприетарный механизм оркестрации, а Azure Container Service поддерживает Docker Swarm и DC/OS. Kubernetes они не используют.

Компания Verizon применяет Mesosphere DC/OS для управления своими дата-центрами, а Apple, Twitter и Airbnb используют эту технологию для работы с большими объемами данных. Например, Apple задействовала ее в своем виртуальном ассистенте Siri.   

Несомненно, DC/OS должна сыграть важную роль в управлении корпоративными облачными дата-центрами. Именно этим объясняются инвестиции HPE. Будучи задействованной в таких продуктах как HP Helion и Microsoft Azure Stack, она должна помочь корпоративным заказчикам перейти к облачной модели, сохраняя свои инвестиции в ЦОД.

Развертывая Apache Spark, Kafka, Cassandra и Zeppelin в DC/OS, можно получить оптимизированную среду для масштабной обработки данных, ресурсы которой одновременно доступны для других нагрузок, например, для Web-серверов или Java-приложений.

DC/OS на серверах HPE ProLiant и Cloudline


Что же дает развертывание DC/OS на серверах HPE ProLiant и Cloudline? Преимуществ немало:

Масштабируемость, гибкость и автоматизация. Планировщик DC/OS позволяет создавать пул распределенных нагрузок (сервисов DC/OS). Задачи развертывания сервисов, их масштабирования и управления ими сводятся к простым командам, значительно упрощается обеспечение безопасности и непрерывности бизнеса. Серверы HPE ProLiant имеют гибкую архитектуру и расширяемую подсистему ввода-вывода, поэтому они хорошо подходят для такой среды. Гипермасштабируемые серверы семейства HPE Cloudline разработаны специально для провайдеров. Они предусматривают быстрое развертывание, гибкость эксплуатации и имеют низкие показатели TCO.

Ускоренное получение результатов от новых сервисов. DC/OS позволяет предприятиям легко развертывать и масштабировать сервисы (причем в этом может участвовать несколько команд), применять инструменты интеграции типа Jenkins, использовать репозитории объектов и средства контроля кода.

Гибкое управление инфраструктурой. Серверы ProLiant поддерживают такие инструменты управления и обновления ПО как HPE OneView и Smart Update, встроенное удаленное управление и мониторинг средствами HPE iLO. Серверы Cloudline рассчитаны на открытые инструменты управления и стандартные интерфейсы, легко вписываются в неоднородную среду с платформами разных вендоров. HPE – один из основателей открытой спецификации Redfish для программно-определяемых ЦОД. Этот стандарт в значительной степени базируется на реализации RESTful API для HPE iLO. Redfish API можно использовать при работе с серверами HPE ProLiant и Cloudline.

Перемещение, интеграция и доставка приложений между разными средами. HPE придерживается открытых стандартов, архитектур на базе API и Open Source, включая Cloud Foundry, DC/OS и OpenStack. Какой бы ни была облачная среда – частной, публичной или гибридной, для нее доступна обширная экосистема аппаратного, программного обеспечения и услуг.

Быстрый анализ разнородных данных. DC/OS поддерживает такие сервисы как Kafka, Spark и Cassandra, часто используемые в интернете вещей и аналитике больших данных. Это позволяет предприятиям получить простое и готовое решение для приложений больших данных.

Пример: оркестрация контейнеров



В данном примере для оркестрации контейнеров использовались серверы ProLiant DL380 Gen 9 следующей конфигурации:



Логическая архитектура DS/OS с Marathon выглядит так:



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

DC/OS поставляется с отказоустойчивой службой Marathon для приложений с продолжительным временем работы. В данном примере именно она используется для оркестрации контейнеров – Container Orchestration. Служба marathon-lb обеспечивает балансирование нагрузки для приложений Marathon. Запускается она так:

$ dcos package install –yes marathon-lb

Теперь можно использовать кластерную среду DC/OS с marathon-lb в DC/OS Public Agent. Приложения Marathon, настроенные на балансирование нагрузки, будут видеть соответствующие адреса и порты. Пользовательский интерфейс Marathon выглядит следующим образом:



DC/OS поддерживает как нативные контейнеры Linux, так и контейнеры Docker. Язык спецификации приложений Marathon при этом один и тот же.

Следующий пример на Python показывает конфигурирование приложения Marathon для Web-сервера внутри нативного контейнера Linux. Данное приложение обслуживает Corporate Cafeteria Menu из Load Balancer VIP. Используется балансировщик Marathon Load Balancer. Как показано ниже, определение приложения Marathon – это простой файл simple.json.



Приложение можно запустить из Marathon UI или из DC/OS CLI командой:

$ dcos marathon app add 0c-python-corpmenu-lb.json


Так выглядит Container Orchestration Marathon UI с приложением Web Menu. Определение приложения Corporate Menu содержит инструкции для подключения данного приложения к балансировщику Load Balancer и указывает, какой порт TCP открыт для Web Service.

Теперь протестируем приложение, обращающееся к Load Balancer VIP через заданный сервисный порт (10001). Для выполнения Load Balancer используется DC/OS Public Agent по адресу 10.250.40.138. Балансировщик нагрузки Marathon показывает следующий пользовательский интерфейс Container Orchestration приложения Web Menu:



Теперь можно масштабировать приложение до 1000 экземпляров. Marathon будет запускать их, отслеживая выполнение каждого и показывая статус в UI. Экземпляры распределяются по всем доступным агентам DC/OS Agent. Нагрузка на кластер DC/OS увеличивается:



Теперь протестируем Java-приложение, используя Docker. После запуска 1000 экземпляров в Corporate Web Menu создадим второе приложение Marathon. Оно использует образ Docker, который инсталлирует Java Runtime Environment. Данное приложение будет запускать Apache FTP Server. Определение приложения Marathon для Java-приложения в контейнере Docker выглядит так:



Запустим приложение командой DC/OS CLI:

$ dcos marathon app add 10b-apacheftp-java-docker.json

После запуска одного экземпляра Java-приложения для Docker получим в Marathon UI:


Масштабируем его до 250 экземпляров:



В отличие от примера с Web-сервером, балансировщик Load Balancer для данного приложения не используется. В данном случае в качестве инструмента Service Discovery применяется Mesos-DNS в составе DC/OS. Для определения IP-порта задействован Marathon UI. Для одного экземпляра Java-приложения Marathon UI показывает следующую информацию:



Теперь используем FTP-клиента для тестирования одного из 250 экземпляров Java-приложения:



Container Orchestration: результаты


Итак, в данном примере в кластере DC/OS с использованием двух разных технологий контейнеров было запущено большое число экземпляров приложений. Это делается за считанные минуты, а масштабирование приложений – дело нескольких секунд.



Кроме того, достигается высокий коэффициент использования кластера DC/OS, улучшается показатель ROI.





Контейнерное будущее — сегодня


Итак, подведем итоги. Datacenter Operating System (DC/OS) – открытая платформа для выполнения приложений корпоративного класса, основанная на ядре Apache Mesos. Использование DC/OS корпоративными заказчиками и облачными провайдерами с серверами серии HPE ProLiant и Cloudline позволяет создать гипермасштабируемую среду с СПО. Предприятия получают возможности гибкого развертывания распределенных приложений на надежных системах HPE. DC/OS помогает справиться с растущей сложностью абстрагированной (виртуализованной, контейниризованной и проч.) инфраструктуры ИТ, может оркестрировать любые типы ресурсов в ЦОД, включая физические и виртуальные серверы.

Контейнеры выполняются на одном уровне с физическими серверами. Отсутствие виртуализованного оборудования и использование реального оборудования и драйверов позволяют получить непревзойденную производительность. А каждый контейнер может масштабироваться до ресурсов всего физического сервера.

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

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

ВМ требуют значительных системных ресурсов. Каждая виртуальная машина содержит не просто копию ОС, а виртуальную копию всех необходимых аппаратных средств. А это требует ресурсов ЦП и ОЗУ. Контейнеру для выполнения конкретного приложения достаточно операционной системы, поддерживающих программ и библиотек. На практике это означает, что сервер сможет поддерживать в два-три раза больше приложений, чем в случае ВМ. А вы уже используете контейнеры в своем ЦОД?
Поделиться с друзьями
-->

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


  1. vdeneko
    08.06.2016 17:59

    развертывал эту штуку — не особо понял как публиковать сервисы наружу
    для публикации предлагается готовый контейнер с haproxy,
    вот развернул я сервис с любым веб приложением, смасштабировал 100 контейнеров, дальше как мне к нему достучаться?
    вариант со скринов — это локально и по порту, а через интернет и без добавление портов, тем более они динамические?
    вроде как этот haproxy должен как раз при создании контейнера создавать динамические правила для публикации и привязке портов к самим хостам для контейнеров, однако у меня не заработал…