В конце июня 2015 года в Сан-Франциско, США, состоялась конференция для разработчиков Docker. Предлагаем вашему вниманию рассказ инженера ЕМС Райана Воллнера о том, как прошёл DockerCon 2015, о тусовке и сложившейся вокруг конференции экосистеме.

DockerCon15 Logo

Я участвую в open source-сообществе уже больше 5 лет, занимаюсь сетевыми технологиями, PaaS-инфраструктурой и технологиями контейнеризации. Участие в таких проектах, как OpenFlow/SDN, OpenStack проходило с переменным успехом, но Docker объективно собирает сейчас максимум внимания со стороны технического сообщества.

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

Одной из тем DockerCon 2015 стало использование Docker в продакшене. В зависимости от того, кого вы спросите об опыте работы с Docker и о том, как именно он использовался, ответы будут разными. Продакшн с использованием контейнеров с микросервисами может быть «адом», как выразился Брайан Кэнтрилл (если вы не видели выступления Брайана о Unix-философии и отладке на стадии выполнения, я очень рекомендую посмотреть любые видеозаписи с его докладами, особенно с конференции O’Reilly, которая прошла накануне DockerCon). Но, с другой стороны, это помогает разделить приложения на ограниченные домены с высокой степенью управляемости, а команды разработчиков получают возможность эффективно проводить процесс CI/CD отладки/доставки/развёртывания. Открытый код Netflix на github является подтверждением этому, и Эндриан Кокрофт (Andrian Cockcroft) достаточно глубоко покопался в теме. Также можете посмотреть мой пост о микросервисах, который поможет вам разобраться в контексте.

Так ли хорош Docker для продашена? Ниже я опишу моменты, о которых вам нужно знать перед использованием Docker в продакшене. Хочется также добавить, что каждый из пунктов — это отдельная большая тема DockerCon'a.

Сеть


Взаимодействие компании Docker и стартапа Socketplane вылилось в возможность использования в проектах технологии Libnetwork, которая позволяет соединять Docker-демонов из разных хостов, что упрощает контейнеру передачу IP-траффика поверх канального уровня сети. Libnetwork поддерживается извне основного демона Docker, не зависит от реализации сети и, что самое главное, скрывает от пользователя подробности реализации, позволяя всей системе «просто работать».

Безопасность


Я общался с Эриком Виндишем из Docker, который рассказал, что безопасности движка Docker всегда уделялось ключевое внимание, так как любая уязвимость в нём означала бы угрозу для контейнера. Ведутся масштабные работы по улучшению кода в подсистеме безопасности, а также используются другие инструменты на основе AppArmor и SELinux. Очень любопытно, как подсистема безопасности Docker раскроется в связке с такими проектами, как VMWare Lightwave.

Журналирование, мониторинг, управляемость


Контейнеры — это, конечно, круто, но, запустив одновременно тысячу или десяток тысяч контейнеров, осознаёшь необходимость в инструменте, который позволил бы эффективно отлаживать, следить и управлять ими. И похоже, что нас ждёт решение. Project Orca, анонсированный основателем Docker Соломоном Хайксом, нацелен на соединение Docker Engine, Docker Swarm, GUI, Docker Compose, а также инструментов для обеспечения безопасности, инсталляции, развёртывания и конфигурирования. Конечно, не обязательно запускать Docker через Orca, но было бы здорово иметь способ получать всё вышеперечисленное, не теряя в скорости и управляемости. Другие инструменты (loggly, cadvisor, ruzit, datalog, log entries) конкурируют за место в этом списке, и это просто отлично!

Расширяемость


Docker отдаёт инициативу сообществу, заявляя, что хочет быть расширяемым инструментом, позволяющим различным плагинам работать с сетью, аутентификацией, хранилищами данных. На данный момент существует VMWare Lightwave для аутентификации и EMC ScaleIO для персистенции хранилища. Не так плохо, учитывая, что Докеру всего два года!

Persistent-сервисы c сохранением внутреннего состояния


ЕМС и ClusterHQ проделали вместе большую работу, создав open source-проект Flocker. Он позволяет управлять томами контейнеров и обеспечивает миграцию данных и высокую доступность томов в ситуациях, когда необходимо восстановить контейнеризованные приложения.

Также большой интерес на конференции вызвал анонс расширений родных томов Docker’a. Не смотря на экспериментальный статус, начиная с версии 1.7.х эти расширения предоставляют различные варианты управления сервисами с сохранением внутреннего состояния. Сам по себе Flocker может работать с расширениями Docker-томов с помощью флага volume-driver=flocker, еcли использовать Flocker-Docker плагин.

Итогом взаимодействия c ClusterHQ, стала публикация на GitHub исходников драйверов, позволяющих работать с EMC ScaleIO и EMC XtremIO. В лаборатории Pivotal в Сан-Франциско мы провели демонстрацию всех возможностей драйверов. В итоге народ собрался посмотреть демки за пивом и беседами в неформальной обстановке. По этой ссылке лежит демо ScaleIO, которое мы показывали на встрече, посвящённой работе Flocker + ScaleIO, развёрнутых на Amazon AWS с использованием MEAN-стека приложений, в которые загрузили данные с Twitter и которые поместили в MongoDB. Слайды со встречи также доступны здесь.

image

Не всем гостям DockerCon хватило мест, многие слушатели стояли или сидели на полу всю сессию. Мы надеялись, что у нас будет чуть больше времени, чтобы у ребят с ноутбуками была возможность хакнуть наше демо, но отпущенных нам 40 минут явно не хватило. Сделали всё, что могли!

image

image

Через родную Go-реализацию под названием RexRay, EMC интегрирует пути управления persistence-томов, но без автоматической миграции данных, которую производит Flocker. Возможности RexRay весьма широки, например, вы можете использовать несколько бекэндов одновременно, скажем, EC2 EBS + EMC ScaleIO.



В целом persistence и контейнеры продолжают оставаться актуальными, и тому есть причины. В начале, процессы, не сохраняющие внутреннее состояния (stateless), и методология двенадцати факторов были в тренде. Но всё это оторвано от реальности. Сообщество понимает, что состояния существуют, и запуск stateful-процессов в контейнерах, например, баз данных, действительно актуален для мира микросервисов. Каждый контейнер находится в каком-то состоянии, даже если это “stateless”-состояние. Например, в памяти могут быть такие состояния, как исполняемые приложения и открытые сокеты, с которыми нужно работать в определённых случаях, например, при миграциях данных «на лету».

Данные становятся исключительно важны в контейнерном окружении. По мере маппинга нагрузок на архитектуру контейнера возникает необходимость добавления согласованности данных. Целостность и доступность будут необходимы для сервисов, которые сохраняют внутреннее состояние. Добавьте ко всему этому ещё и промышленные СХД. На конференции были предложены различные решения этой проблемы, вот некоторые из них:

Crate.io. Масштабируемая распределённая база данных, которая устанавливается на сервер приложений.
ClusterHQ/Flocker. Open source-менеджер томов контейнера, позволяющий контейнеризировать базы данных и другие процессы с сохранением состояния, а также перемещать их, не беспокоясь за backend.
• Red Hat объявила об интеграции persistent-хранилища для контейнеров с использованием RHS (Red Hat Storage).
• Nutanix рассказала о Volume API, которое поможет в обеспечении персистентности контейнеров на их платформе.
• Portworx. Кажется, это новый стартап, который будет конкурировать с ClusterHQ. В анонсе говорится о том, как «часть» их платформы станет open source.
• Поддержка Kubernetes для хранилищ. Kubernetes обновили документацию на GitHub, которая отражает возможность использования Google Cloud persistant disk с k8s.

В общем, это был отличный DockerCon, полный веселых событий, отличных ребят и инновационных технологий. Надеюсь, мы встретимся с вами в Барселоне в ноябре!

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


  1. dax
    27.10.2015 22:51
    +1

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

    Куда смотрит Линус Торвальдс? Что не так с Микрософт?


    1. kingu
      01.11.2015 11:08

      Так функционал контейнеров и так уже в ядре.