Ich habe einen kleinen Mesos-Cluster und ich benutze Marathon, um eine Reihe lang andauernder Dienste mit einer variablen Anzahl von Instanzen zu verwalten.
Ich möchte in der Lage sein, neue Knoten zu starten oder einige von ihnen zu beenden, je nach den Geschäftsanforderungen. Beim Beenden eines Knotens erkannte ich jedoch ein potentielles Problem: Wenn ich einen Mesos-Slave herunterfahre, fällt die Anzahl der Instanzen einiger Dienste vorübergehend unter die definierte minimumHealthCapacity
. Dies kann zu Ausfallzeiten führen, wenn beispielsweise die zu stoppende Maschine einen Service mit nur einer Instanz ausführt.
Betrachten Sie das folgende vereinfachte Szenario: Knoten 1 führt Dienst A aus, Knoten 2 führt Dienst B aus, und Knoten 3 führt Dienst C aus.% code% für alle Dienste ist 1. Ich möchte Knoten 1 beenden und nur 2 verlassen und 3 läuft. Ich möchte keine Ausfallzeit auf Service A. Ein Beispiel für beabsichtigtes Verhalten wäre, Service A auf 2 zu skalieren und dann Knoten 1 sicher zu beenden.
Was kann ich tun, um sicherzustellen, dass kein Service unter minimumHealthCapacity
fällt?
Idealerweise hätte ich dafür einen Rolling-update-inspirierten Prozess - Ersatz wird auf separaten Maschinen gestartet, gefolgt von der Beendigung der Dienste in der Maschine, die heruntergefahren werden sollen. Dafür hätte ich zumindest einen automatisierten Prozess, so dass ein Scale Down ein einfaches Skript ist. Ich benötige keine Zeit dafür, d. H. Ich kann den Mesos-Slave nur herunterfahren, nachdem ich sicher bin, dass die Marathon-Migration abgeschlossen und erfolgreich ist.
Das Mesos-Entwicklerteam arbeitet derzeit an "Maintenance Primitives", so dass ein Bediener angeben kann, dass ein bestimmter Computer zu einem bestimmten Zeitpunkt (oder ASAP) heruntergefahren werden soll. Dabei werden Nachrichten an jedes Framework gesendet, die ihn über die beabsichtigte Nichtverfügbarkeit informieren Fenster. Ein Framework wie Marathon könnte dann entscheiden, seine Aufgaben von diesem Knoten weg zu migrieren, so dass es ohne Service-Ausfallzeiten sicher beendet werden kann.
Weitere Informationen / Patches finden Sie Ссылка .