Service Fabric Deaktivieren (Pause) vs. Deaktivieren (neustarten)?

8

Wenn ich mich beim Service Fabric Explorer anmelde und versuche, einen Knoten für ein Betriebssystem-Upgrade zu deaktivieren, werden mir zwei Optionen angezeigt:

  • Deaktivieren (Pause)
  • Deaktivieren (neu starten)

Kann mir jemand den Unterschied sagen?

    
Turowicz 16.12.2015, 09:51
quelle

1 Antwort

23

Service Fabric verfügt über APIs, mit denen Sie Knoten verwalten können (in C # sind dies DeactivateNodeAsync und ActivateNodeAsync, in PS sind sie Enable / Disable-ServiceFabricNode). Zuallererst handelt es sich dabei um Übernahmen aus der Zeit, als die Benutzer ihre eigenen Cluster verwalteten, und sie sollten in der Umgebung des Azure Hosted Service Fabric-Clusters häufiger verwendet werden als bei der Ausführung eigener Cluster. In jedem Fall gibt es beim Deaktivieren eines Knotens verschiedene Optionen, die wir Intents nennen.

Sie können sich diese als zunehmend schwerwiegende Operationen auf den Knoten vorstellen, die Sie in verschiedenen Situationen verwenden würden, und Sie verwenden diese, um mit Service Fabric zu kommunizieren, was mit dem Knoten geschieht.

Die vier verschiedenen Optionen sind:

  1. Pause - unterbricht den Knoten effektiv: Dienste auf ihm werden weiterhin ausgeführt, aber keine Dienste sollten sich in den Knoten hinein- oder herausbewegen, wenn sie nicht selbst ausfallen oder wenn ein Dienst auf den Knoten verschoben wird ist notwendig, um Ausfall oder Inkonsistenz zu vermeiden.
  2. Neustart - Dadurch werden alle statusbehafteten und zustandslosen Dienste im Speicher des Knotens verschoben und anschließend alle persistenten Dienste heruntergefahren (geschlossen) (falls dies möglich ist, wenn nicht, werden wir es tun) Ersatzteile erstellen).
  3. RemoveData - Dies schließt alle Dienste auf dem Knoten und baut erneut Ersatzteile auf, wenn dies aus Sicherheitsgründen erforderlich ist. Der Benutzer ist dafür verantwortlich, dass der Knoten, wenn er zurückkommt, leer ist.
  4. RemoveNode - Dies schließt alle Dienste auf dem Knoten und baut bei Bedarf erneut Ersatzteile auf, wenn dies aus Sicherheitsgründen erforderlich ist. In diesem Fall, obwohl Sie SF ausdrücklich mitteilen, dass dieser Knoten nicht zurückkommt. SF führt eine zusätzliche Überprüfung durch, um sicherzustellen, dass der Knoten, der entfernt wird, kein SeedNode ist (einer der Knoten, der derzeit für die Verwaltung des zugrunde liegenden Clusters verantwortlich ist). Ansonsten ist dies das Gleiche wie RemoveData.

Lasst uns jetzt darüber reden, wann ihr welche benutzen würdet. Pause ist am häufigsten, wenn Sie einen bestimmten Dienst, einen bestimmten Prozess, eine Maschine usw. debuggen möchten und möchten, dass er (soweit möglich) nicht geändert wird, während Sie ihn betrachten. Es wäre ein bisschen peinlich, wenn Sie ein Verhalten eines Dienstes diagnostizieren würden, nur um festzustellen, dass wir es gerade auf Sie übertragen haben. Neustart (was am gebräuchlichsten ist, wird hier verwendet) wird verwendet, wenn Sie aus irgendeinem Grund alle Arbeitslasten vom Knoten entfernen möchten. Beispiel: Service Fabric verwendet dies selbst beim Aktualisieren der Service Fabric-Bits auf dem Knoten. Zuerst deaktivieren wir den Knoten mit Intent-Neustart, und dann warten wir, bis das abgeschlossen ist (also wissen wir, dass Ihre Dienste nicht ausgeführt werden), bevor wir herunterfahren und upgraden unser eigener Code auf diesem Knoten. RemoveData ist der Punkt, an dem Sie wissen, dass der Knoten deprovisioniert wird und nicht mehr zurückkommt (sagen Sie, dass die Festplatten ausgelagert werden oder die Hardware komplett entfernt wird), oder Sie wissen, dass wenn Knoten kommt zurück, es wird speziell leer sein (sagen Sie, dass Sie die Maschine neu abbilden). Der Unterschied zwischen Restart und RemoveData besteht darin, dass wir wissen, dass der Knoten zum Neustart zurückkehrt, sodass wir das Wissen über die Replikate auf diesem Knoten behalten. Bei persistenten Replikaten bedeutet dies, dass wir die Replikate nicht sofort neu erstellen müssen. Aber für RemoveData wissen wir, dass die Replikate nicht zurückkommen, und daher müssen alle Ersatzkomponenten unmittelbar vor der Bestätigung, dass der Knoten sicher neu gestartet werden kann, erstellt werden. RemoveNode baut oben auf RemoveData auf und ist ein zusätzlicher Hinweis, dass Sie keine speziellen Pläne haben, diesen Knoten zurück zu bringen. Da es wichtig ist, die SeedNodes aufrecht zu erhalten, schlägt SF den Aufruf fehl, wenn der zu entfernende Knoten derzeit ein Seed ist. Wenn Sie diesen bestimmten Knoten wirklich entfernen möchten, können Sie den Cluster neu konfigurieren, um einen anderen Knoten als Seed zu verwenden. Ein Beispiel dafür, wann Sie RemoveData vs. RemoveNode verwenden sollten, ist, dass Sie, wenn Sie einen Cluster verkleinern, explizit RemoveNode aufrufen, da Sie nicht möchten, dass die Knoten zurückkommen und sicherstellen möchten, dass Sie Nehmen Sie die richtigen weg, damit der zugrunde liegende Cluster nicht zusammenbricht.

Sobald die Operation (was auch immer es ist) durchgeführt wurde und Sie den Knoten wieder aktivieren möchten, ist der entsprechende Aufruf Aktivieren / Aktivieren. Durch den Neustart eines Knotens wird dieser nicht automatisch wieder aktiviert. Wenn Sie also mit dem Software-Patch fertig sind (oder was immer Sie zum Beispiel dazu veranlasst haben, Intent-Neustart zu verwenden), und Sie möchten, dass Dienste erneut auf dem Knoten platziert werden, würden Sie Enable / Activate mit dem entsprechenden Knoten Name aufrufen.

Ein Beispiel für den Aufruf zum Deaktivieren / Deaktivieren finden Sie in der PS-API-Dokumentation hier

    
masnider 16.12.2015, 20:31
quelle

Tags und Links