Nous sommes actuellement en train de concevoir l'architecture de notre nouvelle configuration cloud Apache Mesos. L'objectif est d'unifier nos systèmes en déplaçant différentes piles sur la même architecture. Les principales charges de travail sont l'analyse des mégadonnées utilisant Apache Spark et notre infrastructure d'entreprise, y compris les serveurs Web, les serveurs de messagerie, etc.
L'idée est d'exécuter nos services Web dans des conteneurs Docker fonctionnant au-dessus de l'un des planificateurs disponibles pour Mesos (Marathon / Chronos, Aurora ou Singularity). Ce serait donc le premier groupe cadre Mesos. A côté, nous aurions le framework Apache Spark et plusieurs frameworks de base de données pour le stockage des données. Ce serait le deuxième groupe de frameworks Mesos. Nous choisirons les détails après les avoir tous exécutés en parallèle pour les tests.
Nous avons toutefois du mal à décider sur quelle base exécuter Mesos lui-même. Idéalement, nous voulons l'exécuter le plus près possible du métal. Nous voulons également utiliser une solution d'orchestration pour nous assurer que les démons Mesos et framework sont toujours en cours d'exécution / redémarrés en cas d'échec. Les options que nous envisageons sont les suivantes:
1) Exécution de Mesos et des frameworks en tant que conteneurs Docker dans un système d'exploitation minimal. À cet égard, nous nous tournons actuellement vers CoreOS et Fleet.
2) Exécuter Mesos et les frameworks directement sur les serveurs Ubuntu / Debian. Pour cette option, nous nous penchons vers Foreman et Puppet.
Quant à la question, nous cherchons à identifier la solution qui, par ordre d'importance:
- est le moins complexe à configurer
- est le plus facile à entretenir et à tenir à jour
- a le moins de frais généraux
Nous n'avons jamais travaillé avec CoreOS auparavant, mais c'est l'option vers laquelle nous nous dirigeons. Un gros problème (subjectif) que j'ai avec ceci est que nous exécutons Mesos sur des conteneurs Docker puis nous exécutons des conteneurs Docker sur Mesos. Cela me semble "impur" et mal. Cette considération est-elle sans mérite?
Une pensée similaire concerne la redondance entre les couches. Pour expliquer d'où je viens, je préférerais que Mesos soit un véritable système d'exploitation qui fonctionne juste au-dessus du métal. Il semble que peu importe la base que vous utilisez, vous vous retrouvez avec la même fonctionnalité prévue sur plus d'une couche de l'architecture (c'est-à-dire CoreOS & Fleet & SystemD == Mesos & Marathon & Chronos). Est-ce inévitable?
Y a-t-il d'autres bonnes options pour exécuter la couche sous Mesos que nous n'avons pas envisagées, en gardant à l'esprit nos critères?