Wie kann ich Clusterknoten bei geringer Auslastung herunterfahren (ausschalten)?

Wie kann ich Clusterknoten bei geringer Auslastung herunterfahren (ausschalten)?

Ich entwickle Software für das Energieberatungsgeschäft und habe bei der Überwachung des Energieverbrauchs in Rechenzentren festgestellt, dass das typische elektrische Lastmuster eines Rechenzentrums nur eine gerade Linie ist, da alle Geräte rund um die Uhr laufen. Wenn Sie dies mit dem tatsächlichen Nutzungsmuster (Netzwerklast, CPU-Auslastung usw.) vergleichen, was wir getan haben, haben Sie regelmäßig lange Zeiträume mit geringer Nutzung, aber voller verfügbarer Kapazität.

Diese Muster sind in vielen Fällen sehr vorhersehbar und um Energie zu sparen, wäre es toll, einen Teil der Geräte (Server, Switches, Speicher) regelmäßig oder bei geringer Auslastung abzuschalten. Allerdings fallen mir mehrere Aspekte ein, die man sich anschauen müsste, darunter

  • Bewältigung von Spitzenlasten oder plötzlichen Lastspitzen
  • Datenkonsistenz zwischen Knoten
  • lange Startzeiten (und möglicherweise auch Synchronisierungszeiten) im Vergleich zur durchschnittlichen Betriebszeit eines Knotens

Es gibt wahrscheinlich noch mehr. Gibt es Software, die ein solches Szenario bewältigt, und worauf sollte man sonst noch achten? Ist das ein brauchbarer Vorschlag?

Für meine Zwecke würde ein Cluster nicht unbedingt bedeuten, Maschinen auf Betriebssystemebene zu clustern, identische Hosts, die Anfragen über einen Load Balancer erhalten (also Clustering auf Anwendungsebene), würden ebenfalls zählen. Ich bin nicht sicher, wie MySQL-Cluster oder ähnliches funktionieren, aber ich würde diese wahrscheinlich auch zählen.

Ich suche Ratschläge für alle Betriebssysteme.

Siehe auch meineBeitrag zum Thema Energieeffizienzbei Stack Overflow, wo diese Frage aufgeworfen wurde.

Antwort1

Leistung

VerwendenGeschaltete PDUsdamit Sie Server und Switches außerhalb des Bandes ein- und ausschalten können. Dies ist betriebssystem- und geräteunabhängig, was die Konfiguration und Logik zum Ein- und Ausschalten erheblich vereinfacht. Wenn alle Ihre Server über netzwerkfähige IPMI-Schnittstellen verfügen, können Sie diese stattdessen verwenden. Ich würde davon abraten, zu versuchen, Dinge mit höherstufigen Dingen wie Wake-on-LAN ein- und auszuschalten.

Ein-/Ausschaltlogik

Dies kann viele Formen annehmen. Einige Clustering-Software (wieMoab) hat hierfür eine Lösung eingebaut. Alternativ können Sie ein Skript mit dem folgenden Pseudocode schreiben:

  1. Überprüfen der gesamten Clusterlast
  2. Wenn die Clusterlast > Schwellenwert 1 ist, schalten Sie einige Knoten ein
  3. Wenn die Clusterlast < Schwellenwert 2 ist, schalten Sie einige Knoten aus

Setzen Sie das in Cron ein und lassen Sie es jede halbe Stunde ausführen.

Clustering-Software-Stack

Natürlich müssen Sie sicherstellen, dass Ihr Clustering-Software-Stack mit dem ständigen Ein- und Ausschalten dieser Geräte zurechtkommt. Führen Sie hier viele Tests durch, berücksichtigen Sie obskure Timing-Probleme (das Booten dauert) und alle Race Conditions, die in der von Ihnen verwendeten Ein-/Ausschaltlogik auftreten können.

Antwort2

VMware

Die neueste Version ihres Unternehmensprodukts, VSphere 4, kann Hosts, die nicht benötigt werden, herunterfahren und bei Bedarf wieder aktivieren, indem die virtuellen Maschinen in Echtzeit verteilt werden. Kombinieren Sie dies mit den Strom-/Energieeinsparungen, die Sie durch die Konsolidierung Ihrer Hardware auf einer virtualisierten Plattform erzielen, und Sie können erhebliche Energieeinsparungen erzielen.

Antwort3

Dies wurde erst heute auf Planet Ubuntu erwähnt. Den Beitrag finden SieHier. Es geht um die Entwicklung einer praktischen Lösung zum Ein- und Ausschalten von Maschinen bei Bedarf in einer Cloud mithilfe vonPower Nap.

Antwort4

Nun, für Server kann der Befehl SHUTDOWN.EXE verwendet werden, um eine Windows-Box remote herunterzufahren. Dasselbe könnte unter Unix problemlos mit einem Telnet/SSH-Skript erledigt werden.

Das größere Problem wäre, sie wieder in Gang zu bringen. Man müssteWake on LANoder etwas ähnliches dafür.

Der schwierige Teil dabei ist, sicherzustellen, dass die heruntergefahrenen Maschinen nicht tatsächlich etwas Wichtiges tun. Wie bei diesem Cron-Job, bei dem niemand wirklich sicher war, wohin er sollte, also haben sie ihn einfach auf einen der geclusterten Webserver gelegt. Jetzt fahren Sie diese Maschine herunter und der Job läuft nicht mehr wie vorgesehen.

Wenn die Umgebung jedoch streng kontrolliert wird und Sie genau wissen, was jede Maschine tut, wäre dies sehr sinnvoll.

verwandte Informationen