В настоящее время мы находимся в процессе разработки архитектуры нашей новой облачной установки 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, которые мы не рассмотрели, учитывая наши критерии?