Jesteśmy w trakcie projektowania architektury naszej nowej konfiguracji chmury Apache Mesos. Celem jest ujednolicenie naszych systemów poprzez przeniesienie różnych stosów na tę samą architekturę. Głównymi obciążeniami są analizy dużych zbiorów danych przy użyciu Apache Spark i naszej infrastruktury korporacyjnej, w tym serwerów sieciowych, serwerów pocztowych itp.
Chodzi o to, aby uruchomić nasze usługi sieciowe w kontenerach Docker działających na jednym z dostępnych harmonogramów dla Mesos (Marathon / Chronos, Aurora lub Singularity). Byłaby to zatem pierwsza grupa ramowa Mesos. Oprócz tego mielibyśmy platformę Apache Spark i kilka struktur baz danych do przechowywania danych. Byłaby to druga grupa frameworków Mesos. Wybierzemy szczegóły po uruchomieniu ich wszystkich równolegle do testowania.
Nie możemy jednak zdecydować, na jakiej podstawie uruchomić samego Mesos. Idealnie chcielibyśmy uruchomić go jak najbliżej metalu. Chcemy również użyć rozwiązania do aranżacji, aby upewnić się, że demony Mesos i frameworka zawsze działają / restartują w przypadku awarii. Opcje, które rozważamy, są następujące:
1) Uruchamianie Mesos i frameworków jako kontenerów dokerów w minimalnym systemie operacyjnym. Pod tym względem opieramy się obecnie na CoreOS i Fleet.
2) Uruchamianie Mesos i frameworków bezpośrednio na serwerach Ubuntu / Debian. W przypadku tej opcji skłaniamy się do Brygadzisty i Lalek.
Jeśli chodzi o pytanie, staramy się znaleźć rozwiązanie, które według ważności:
- jest najmniej skomplikowany do skonfigurowania
- jest najłatwiejszy do utrzymania i aktualizacji
- ma najmniejszy koszt
Nie współpracowaliśmy wcześniej z CoreOS, ale wydaje się, że jest to opcja, do której zmierzamy. Mam jeden duży (subiektywny) problem z tym, że uruchamiamy Mesos na kontenerach Docker, a następnie uruchamiamy kontenery Docker na Mesos. Wydaje mi się to „nieczyste” i złe. Czy to rozważanie jest bezcelowe?
Podobna myśl dotyczy redundancji między warstwami. Aby wyjaśnić, skąd pochodzę, wolałbym, aby Mesos był rzeczywistym systemem operacyjnym, który działałby wprost na metal. Wygląda na to, że bez względu na to, z jakiej podstawy korzystasz, uzyskujesz tę samą zamierzoną funkcjonalność na więcej niż jednej warstwie architektury (tj. CoreOS & Fleet & SystemD == Mesos & Marathon & Chronos). Czy to nieuniknione?
Czy istnieją inne dobre opcje uruchomienia warstwy poniżej Mesos, których nie wzięliśmy pod uwagę, biorąc pod uwagę nasze kryteria?