Работа с Mesosphere: вступление

Что такое Mesosphere?

Mesosphere – это программное решение, которое расширяет возможности управления кластерами Apache Mesos; программа обладает дополнительными компонентами, предоставляющими новый способ управления серверными инфраструктурами. В сочетании с другими компонентами (например, с Marathon и Chronos) Mesosphere позволяет легко масштабировать приложения, избегая многих связанных с этим процессом проблем.

Mesosphere обладает такими функциями, как планирование приложений, масштабирование приложений, отказоустойчивость и самовосстановление. Кроме того, эта программа обеспечивает обнаружение сервисов (service discovery) и объединение портов приложений.

Чтобы дать более полное представление о том, как работают вышеупомянутые функции Mesosphere, данное руководство предоставляет краткое описание каждого ключевого компонента программы, начиная с Apache Mesos, и демонстрирует использование каждого из них в контексте Mesosphere.

Краткий обзор Apache Mesos

Apache Mesos – это открытый менеджер кластеров, который упрощает запуск приложений на масштабируемом кластере серверов и является «сердцем» системы Mesosphere.

Mesos обладает большим количеством функций:

  • масштабируемость (до 10 000 нод);
  • изоляция ресурсов через Linux Containers;
  • эффективное планирование ресурсов CPU и памяти;
  • веб-интерфейс для мониторинга состояния  кластера;
  • Apache ZooKeeper;
  • высокая доступность (High Availability) серверов.

Архитектура Mesos

Архитектура Apache Mesos состоит из демонов master и slave (то есть, ведущих и ведомых демонов) и фреймворка.

Краткий обзор этих компонентов и некоторых важных терминов:

Ведущий демон (или Master daemon) запускается на ведущем узле (или ноде) и управляет ведомыми демонами.

Ведомый демон (или Slave daemon) работает на ведущей ноде и выполняет задачи фреймворка.

Фреймворк (или приложение Mesos) состоит из планировщика, который совмещается с нодой master, чтобы получать офферы (resource offers) исполнителей (executors), запускающих задачи на нодах slave. Примерами фреймворков Mesos могут служить Marathon, Chronos и Hadoop.

Оффер (Offer) – это список доступных ресурсов CPU и памяти slave ноды. Все slave ноды отправляют офферы ноде master, который передает их доступным фреймворкам.

Задача (Task) – запланированная фреймворком единица работы, которая выполняется на ведомом узле. Задачей может быть что угодно, начиная с команды или скрипта bash и заканчивая SQL-запросами и процессами Hadoop.

Apache ZooKeeper (или ZK): программное обеспечение, которое используется для координации master нод.

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

Высокая доступность

Высокая доступность (High Availability, или HA) master узлов Mesos в кластере активируется с помощью программы Apache Zookeeper, которая используется для репликации master нод и формирует кворум (quorum). Также ZooKeeper координирует выборы лидера кластера и лидера среди компонентов Mesos (то есть, slave нод и фреймворков).

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

Более подробную информацию можно найти в официальной документации Apache Mesos.

Краткий обзор Marathon

Marathon – это фреймворк Mesos, который предназначен для запуска долго работающих приложений; в Mesosphere данная программа служит в качестве замены традиционной системы инициализации (init system). Marathon имеет много функций, которые упрощают запуск приложений в кластерной среде; среди таких функций можно выделить высокую доступность, ограничение нод, диагностику приложений, интерфейс для scriptability и обнаружения сервисов, а также дружественный пользовательский веб-интерфейс. Кроме того, благодаря Marathon программа Mesosphere имеет функции масштабирования и самовосстановления.

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

Более подробную информацию о Marathon можно найти на странице GitHub.

Краткий обзор Chronos

Chronos – это фреймворк Mesos, изначально разработанный компанией Airbnb в качестве замены cron. Chronos является полнофункциональным, распределенным и отказоустойчивым планировщиком Mesos, который облегчает организацию работы программы и составление наборов задач. Данный фреймворк включает в себя программный интерфейс для разработки скриптов планирования задач (jobs) и веб-интерфейс для простоты использования.

В Mesosphere Chronos дополняет Marathon, предоставляя еще один способ запуска приложений (согласно графику или каким-либо другим условиям, например, в соответствии с завершением работы другого приложения). Также данный фреймворк способен составлять расписания для запуска приложений/процессов на нескольких slave нодах Mesos; кроме того, он предоставляет статистику об ошибках и успехах. Посетите страницу GitHub, чтобы узнать о Chronos больше.

Краткий обзор HAProxy

HAProxy – популярное решение обратного проксирования и балансировки нагрузки с открытым исходным кодом. HAProxy может быть использован в Mesosphere для маршрутизации сетевого трафика известных хостов (как правило, это master ноды Mesos), на действующие сервисы, запущенные на slave нодах Mesos. Для динамической настройки HAProxy можно использовать функция обнаружения сервисов Mesos; это позволит маршрутизировать входящий трафик на соответствующие slave ноды бэк-энда.

Итоги

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

Tags: , , , , , , , , ,

Добавить комментарий