Операционная система для дата-центров

Как все мы знаем, Интернет сегодня довольно популярен - им ежедневно пользуются миллионы людей. Это означает, что компании, разрабатывающие онлайн-сервисы и приложения, должны иметь десятки, сотни или даже тысячи серверов для обработки больших нагрузок трафика.

Серверы и центры обработки данных

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

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

Как правило, в центрах обработки данных существует обычная практика группирования нескольких серверов, физических и / или виртуальных. Эти группы серверов называются кластерами. Формируя кластеры, центры обработки данных предоставляют приложениям возможность работать в более крупном масштабе. Более того, те приложения, которые работают на нескольких машинах, называются распределенными приложениями.

Часто кластеры запускают разные приложения друг от друга. Из-за этого бывают случаи, когда требуется переводить машины из одного кластера в другой, когда возникает потребность в увеличении вычислительной мощности. Процесс переноса машин из одного кластера в другой тоже не доставляет удовольствия.

Apache Mesos

Обзор

Apache Mesos - это распределенный, высокодоступный и отказоустойчивый кластерный менеджер с открытым исходным кодом, первоначально разработанный в Калифорнийском университете в Беркли.

Подобно Kubernetes, Apache Mesos предоставляет простой способ разработки распределенных приложений.

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

Mesos - это уровень абстракции, который абстрагирует как виртуальные, так и физические машины.

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

Различные распределенные системы и приложения - например, Spark и Jenkins - могут легко потреблять ресурсы кластера посредством взаимодействия с Mesos.

Отметим, что в Mesos распределенные приложения также называются фреймворками.

Концепции

Mesos построены на концепциях, называемых предложениями ресурсов, двухуровневым планированием и изоляцией ресурсов.

Предложения ресурсов - это описания доступных на данный момент ресурсов ЦП, памяти и хранилища данной машины в кластере Mesos.

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

Очень удобно, что модуль распределения представляет собой подключаемый компонент. Его можно заменить настраиваемым алгоритмом разделения ресурсов, который лучше подходит для конкретного сценария. Алгоритм планирования по умолчанию для модуля распределения - это алгоритм справедливости доминирующих ресурсов, который направлен на максимизацию минимальной доминирующей доли среди всех пользователей. Он подходит для большинства случаев использования.

Короче говоря, DRF стремится максимизировать минимальную доминирующую долю среди всех пользователей. Например, если пользователь A выполняет задачи с высокой загрузкой ЦП, а пользователь B выполняет задачи с высокой загрузкой памяти, DRF пытается уравнять долю ЦП пользователя A с долей памяти пользователя B. В случае с одним ресурсом DRF сводится к максимальному и минимальному уровню справедливости для этого ресурса . - Мезос в действии Роджера Игнацио

Изоляция ресурсов - это механизм, который предоставляет виртуальные пространства для процессов, которые защищают их от злонамеренного выхода и попыток вторжения в другие процессы на том же хосте или в общей инфраструктуре. Используя такие методы изоляции, физическая инфраструктура может гарантировать, что несколько процессов могут работать в одной и той же инфраструктуре без какого-либо негативного воздействия друг на друга. Это позволяет нескольким приложениям работать одновременно на одном компьютере. Mesos позволяет приложениям работать в изолированной среде с помощью контейнеров Docker или контрольных групп Linux.

Эти характеристики заставляют Mesos действовать в точности как операционная система - операционная система, предназначенная для управления кластерами машин. Подобно тому, как операционные системы предоставляют изолированное виртуальное пространство для выполнения процессов, Mesos обеспечивает изоляцию своих приложений. Более того, так же, как в операционной системе есть планировщик, который дает процессам необходимое время использования ЦП, в Mesos есть алгоритм планирования, который предоставляет соответствующие ресурсы кластера для запущенных приложений. Наконец, точно так же, как операционная система устанавливает общую инфраструктуру и общие API-интерфейсы для взаимодействия процессов, Mesos предоставляет общий набор API-интерфейсов, которые могут использовать приложения.

Архитектура

Как и большинство других менеджеров кластеров, Mesos состоит из машин с контроллером и агентом.

Машины-агенты - это машины, на которых запущен демон агента Mesos. Этот демон агента периодически измеряет ресурсы компьютера, на котором они в настоящее время работают, и отправляет эти измерения контроллеру Mesos в форме предложения ресурсов. Из-за этого контроллер Mesos точно знает, сколько доступных ресурсов доступно в кластере. Позже эти доступные ресурсы передаются различным приложениям, которым необходимо использовать ресурсы кластера.

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

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

Мезо в действии

На рисунке выше проиллюстрированы все упомянутые концепции: предложения ресурсов, двухуровневое планирование, изоляция ресурсов, машины с агентами и контроллерами, а также фреймворки.

Шаг первый. Во-первых, мы видим, что машина агента отправляет предложение ресурса машине контроллера.

Шаг второй. После этого модуль распределения ресурсов машины-контроллера выбирает структуру, которой будут предлагаться эти ресурсы. Предлагаемые ресурсы могут быть приняты или отклонены в зависимости от того, есть ли у выбранной платформы какие-то задания для выполнения или нет.

Шаг третий. Допустим, у выбранной платформы нет никаких заданий для выполнения; поэтому предложение ресурса отклоняется. После того, как предложение ресурса отклонено, модуль распределения контроллера Mesos предлагает эти ресурсы другой платформе.

Шаг четвертый. Теперь предположим, что фреймворк получает задание, которое необходимо выполнить. В этом случае платформа ожидает предложения ресурсов от контроллера Mesos, удовлетворяющего рабочей нагрузке.

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

Когда использовать Mesos

Требование масштабной работы в настоящее время является обязательным практически для каждой компании-разработчика программного обеспечения.

Кластер Mesos может помочь масштабировать и более эффективно управлять центром обработки данных.

Mesos лучше всего подходит для больших систем и рассчитан на максимальное резервирование.

Mesos рекомендуется, если у вас есть существующие рабочие нагрузки, такие как Hadoop, Kafka и т. Д. Это дает вам структуру, которая позволяет чередовать эти рабочие нагрузки друг с другом.

Это очень устойчивая платформа, но она слишком сложна для небольших систем от десяти до двадцати машин. Вот почему Mesos обычно рекомендуется и лучше всего подходит для компаний, которые используют мультиоблачные и мультирегиональные кластеры, такие как Airbnb, Netflix, Twitter или Uber.

Желательно, чтобы Mesos запускал только приложения без сохранения состояния, которые могут легко завершаться или загружаться без каких-либо негативных последствий.

Заключение

Apache Mesos получает название «Операционная система для вашего центра обработки данных». Этого более чем достаточно для мощности и удобства, которые может принести Mesos.

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

Ресурсы