Auswahl von Cluster Manager / Job Scheduling-Software

Wir möchten Microservices bereitstellen, die in einer Cloud ausgeführt werden (die Cloud ist zu diesem Zeitpunkt noch unbekannt).

Die Microservices müssen skalierbar sein, daher denken wir darüber nach, sie mit einem Stapel von Containern zu implementieren.

Ich suche nach Software (vorzugsweise Open Source), die auf der Cloud ausgeführt wird und diese Microservices verwaltet und die Möglichkeit bietet, Knoten zu/von jedem Microservice hinzuzufügen oder zu entfernen, wenn dies erforderlich ist.

Da jeder Microservice mithilfe eines Stapels von Containern implementiert wird, müssen wir außerdem in der Lage sein, Jobs/Aufgaben zwischen den Knoten zu verteilen und einen aktualisierten Status jeder Aufgabe zu haben. Wir müssen in der Lage sein, den Status dieser Aufgaben bereitzustellen – ob der Status „ERFOLGREICH“ oder „FEHLER“ ist. Wir brauchen einen Wiederholungsmechanismus für Aufgaben. Wir brauchen Fehlertoleranz – falls ein Knoten, der eine Aufgabe ausführt, abgestürzt ist, sollte die Aufgabe von einem anderen Knoten übernommen werden.

Außerdem benötigen wir eine Job-Scheduling-Funktion, was bedeutet, dass basierend auf einem Zeitplan eine Aufgabe/ein Job generiert und an einen der Knoten eines Microservice gesendet wird. Die Ausführung jeder Iteration kann jedoch vom Status der vorherigen abhängen Wiederholung.

Ich habe mir viele Frameworks angesehen, aber ich habe mich verlaufen, da alles meinen Bedürfnissen zu entsprechen scheint (Mesos, Kubernetes, Ignite und mehr)

Was würden Sie angesichts all dieser Anforderungen (oder einiger dieser Anforderungen) empfehlen, und kann die Entscheidung unabhängig von der Cloud getroffen werden, auf der der Cluster ausgeführt wird, oder stellen einige Clouds diese Funktionen selbst bereit, und es wäre nicht sinnvoll Entscheidung trennen?

oben auf der Wolke Das ist extrem vage. Von welchen Cloud-Anbietern und/oder Betriebssystemen sprechen Sie?

Antworten (1)

Dies ist eine kurze Antwort, die auf meinem aktuellen Wissen über die wichtigsten Cloud-Anbieter basiert. Ich gehe davon aus, dass Sie entweder auf AWS, GCP oder Azure bereitstellen werden. Ich weiß, dass Sie auf Azure und GCP eine automatische Bereitstellung für Apache Mesos haben. Für Kubernetes ist GKE (Google Container Engines) eigentlich ein Kubernetes-Cluster. Wenn Ihr Cluster klein ist (<= 5 Knoten), fallen keine zusätzlichen Kosten für den Master an. Azure wird in Kürze auch eine Schnellinstallation für K8s bereitstellen. Ich weiß nicht, ob AWS diese einfachen Installationen anbietet, aber da es einer der am häufigsten verwendeten Cloud-Anbieter ist, gibt es viele Beispiele für die Einrichtung eines Clusters.

Für die andere Anforderung „Wir benötigen auch eine Job-Scheduling-Funktion, was bedeutet, dass basierend auf einem Zeitplan eine Aufgabe/ein Job generiert und an einen der Knoten eines Microservice gesendet wird, aber die Ausführung jeder Iteration davon abhängig sein kann den Status der vorherigen Iteration." Auf Mesos haben Sie Chronos, um Aufgaben zu planen, aber es deckt nur den Startteil ab. Was Sie benötigen, wird nicht vom Clustermanager abgedeckt, sondern sollte von einem Framework wie beispielsweise Spring Batch erledigt werden.