2015-12-16 29 views

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 Überbleibsel aus der Zeit, zu der die Benutzer ihre eigenen Cluster verwaltet haben. Sie sollten weniger sein, die in der Umgebung von Azure Hosted Service Fabric Cluster häufig verwendet werden, als wenn Sie eigene Cluster ausführen. So oder so, wenn ein Knoten Deaktivierung gibt es verschiedene Optionen, die wir Intents nennen.

Sie können sich diese als zunehmend schwerwiegende Vorgänge 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 drei verschiedenen Optionen sind:

  1. Pause - effektiv „Pausen“ der Knoten: Dienste auf dem es läuft weiter, aber keine Dienste sollten in den oder aus dem Knoten verschieben, wenn sie nicht auf scheitern ihre eigenen, oder es ist notwendig, einen Dienst auf den Knoten zu verschieben, um Ausfall oder Inkonsistenz zu vermeiden.
  2. Neustart - dies wird alle im Speicher befindlichen statusbehafteten und zustandslosen Dienste vom Knoten entfernen und dann alle dauerhaften Dienste herunterfahren (schließen) (wenn dies sicher ist, werden wir keine Ersatzteile erstellen)).
  3. removeData - dies wird nur alle Dienste auf dem Knoten schließen, wieder den Aufbau Ersatzteile zuerst, wenn es aus Sicherheitsgründen notwendig ist. Der Benutzer ist dafür verantwortlich sicherzustellen, dass, wenn der Knoten zurückkommt, er leer ist.

Jetzt reden wir darüber, wann Sie jedes verwenden würden. Pause häufigste ist, wenn Sie etc einen bestimmten Dienst, Prozess, Maschine debuggen möchten, und möchte es nicht (in dem Maße möglich) geändert werden, während man es suchen. Es wäre ein wenig umständlich sein, wenn Sie nur ein bestimmtes Verhalten eines Dienstes zu diagnostizieren ging zu gehen, um festzustellen, dass wir es auf die Sie gerade bewegt hatte. Neustart (was die gebräuchlichste ist, die wir verwenden) wird verwendet, wenn Sie aus irgendeinem Grund alle Arbeitslasten vom Knoten verschieben 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, wo Sie wissen, dass der Knoten deprovisioniert wird und nicht zurückkommen wird (sagen Sie, dass die Festplatten ausgelagert werden oder die Hardware vollständig entfernt wird). 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.

Sobald die Operation (was auch immer es ist) ausgeführt wird und Sie den Knoten erneut 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, den 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.

Als Beispiel für die deactivate/deaktivieren Aufruf, die PS-API-Dokumentation für die detaillierte Erklärung here

+0

Dank Check-out !!! – viperguynaz

+0

Es würde keine Antwort ohne eine Frage geben, wähle es! ;) – Turowicz

+0

ok also sag, ich habe Speicherleck und bevor der Fixspeicher fast voll wird - was könnte ich verwenden, um Dienste neu zu starten? Ich habe gerade Neustart versucht, und es hat keine Dienste beendet und neu gestartet, da der Speicher immer noch hoch ist. Ich habe Angst, "RemoveData" zu tun, wie du sagtest "Knoten wird deprovisioniert und wird ** nicht zurückkommen **" - ich will, dass es zurückkommt, ich brauche es nur, um die Dienste neu zu starten, damit sie das frei machen Erinnerung. – MajkeloDev