В настоящее время мы разрабатываем архитектуру нашей новой облачной установки Apache Mesos. Цель состоит в том, чтобы унифицировать наши системы, перемещая разные стеки в одну архитектуру. Основные рабочие нагрузки - это анализ больших данных с помощью Apache Spark и нашей корпоративной инфраструктуры, включая веб-серверы, почтовые серверы и т. Д.
Идея состоит в том, чтобы запускать наши веб-службы в контейнерах Docker, работающих поверх одного из доступных планировщиков для Mesos (Marathon / Chronos, Aurora или Singularity). Таким образом, это будет первая группа фреймворков Mesos. Рядом с ним у нас будет фреймворк Apache Spark и несколько фреймворков баз данных для хранения данных. Это будет вторая группа фреймворков Mesos. Мы выберем детали после их параллельного запуска для тестирования.
Однако мы не можем решить, на каком основании запускать сам Mesos. В идеале мы хотим работать как можно ближе к металлу. Мы также хотим использовать решение для оркестрации, чтобы гарантировать, что демоны Mesos и framework всегда работают / перезапускаются в случае сбоя. Мы рассматриваем следующие варианты:
1) Запуск Mesos и фреймворков как докер-контейнеров в минимальной ОС. В этом отношении мы сейчас склоняемся к CoreOS и Fleet.
2) Запуск Mesos и фреймворков непосредственно на серверах Ubuntu / Debian. В этом варианте мы склоняемся к Форману и Марионетке.
Что касается вопроса, мы ищем решение, которое в порядке важности:
Раньше мы не работали с CoreOS, но, похоже, мы идем к этому варианту. Одна большая (субъективная) проблема, с которой я столкнулся, заключается в том, что мы запускаем Mesos в контейнерах Docker, а затем мы запускаем контейнеры Docker в Mesos. Мне это кажется «нечистым» и неправильным. Это соображение безосновательно?
Аналогичная мысль касается избыточности между слоями. Чтобы объяснить, откуда я пришел, я бы предпочел, чтобы Mesos была настоящей ОС, которая просто работала бы поверх металла. Кажется, что независимо от того, какую основу вы используете, вы получаете одну и ту же предполагаемую функциональность на нескольких уровнях архитектуры (например, CoreOS & Fleet & SystemD == Mesos & Marathon & Chronos). Это неизбежно?
Есть ли другие хорошие варианты запуска слоя ниже Mesos, которые мы не рассмотрели, учитывая наши критерии?
Настройка и запуск сервисов в Mesos может быть сложной или простой операцией, и вы должны сначала определить схему сервисов, которые вы хотите запускать под ней, в зависимости от ваших потребностей и целей, чтобы получить желаемую душу.
Я запускаю настройку более 70 машин и различных сервисов под HAProxy для динамической балансировки нагрузки с Mesos-DNS и Marathon, шлюзом Api, Chronos, Jenkins, Docker, Collectd и Graphite, ...
А теперь отвечу на ваши прямые вопросы:
Итак, мой лучший ответ для вас - использовать ваш любимый дистрибутив Linux и установить Mesos, или, если вы хотите узнать что-то новое и, возможно, быстро и легко, используйте (с открытым кодом) DCOS и CoreOS.