Wie kann ich Cloud-Speicherserver automatisch in den Ruhezustand versetzen?

13

Ich verwende Cloud-Speicher-Rechenzentren mit Ubuntu 16.04 lts und NextCloud / OwnCloud, die nicht rund um die Uhr verfügbar sein müssen und Power-Management-Lösungen benötigen. Server sind Dell PowerEdge 1950 Gen II und Dell PowerEdge 2950 Gen II

Gesamtziel

Überwachen Sie Cloud-Speicherserver nach einer Leerlaufzeit von beispielsweise 20 Minuten im Ruhezustand und deaktivieren Sie sie mit WOL, um 6272,09 Kilogramm Kohlendioxid pro Jahr zu reduzieren, was allein in unserem Rechenzentrum 6680 kW entspricht. Dies wurde durch ein detailliertes Energie-Audit erreicht.

Ineffektive Lösung ausprobiert

Landschaft

Landscape on Premises / Cron Jobs bieten nur planmäßige Starts und Shutdowns und sind daher für uns nicht realisierbar.

Power Nap

Powernap scheint der richtige Weg zu sein, aber der Dienst startet nicht unter Ubuntu 16.04

XXXXXXX ~ $ sudo Service-Powernap-Status
● powernap.service - PowerNap
   Geladen: Geladen (/lib/systemd/system/powernap.service; deaktiviert; Herstellervoreinstellung
   Aktiv: inaktiv (tot)

ponwernap scheint veraltete Dienste wie network.service zu verwenden, die in Ubuntu 16.04 nicht mehr verfügbar sind

Erreichbare Ziele

Wake on LAN (WOL)

Das Aktivieren von WOL ist unkompliziert, indem Sie die manuelle Einrichtung über diesen Link ausführen . oder mit dem Einsatz von Powewake

Server-Ruhezustand

Bisher habe ich es nur geschafft, die Server mit sudo systemctl hibernateund in den Ruhezustand zu versetzensudo systemctl hibernate-sleep

  1. powernap - Ich archiviere Fehlerberichte, um verbrauchte Abhängigkeiten zu entfernen
  2. systemctl - könnte irgendwohin führen
  3. pm-utils - könnte auch irgendwohin führen

Hardware-Upgrades

Ich habe die CPUs des Dell 1950 Gen II Dual Xeon E5335 mit Xeon X5365-CPUs aufgerüstet. Der X5365 aktiviert die Energieverwaltung und legt die Energieverwaltung über das BIOS fest. Ganz ehrlich, ich habe mich nicht für ein solches Upgrade ausgesprochen, da das X5365 70 Watt pro CPU mehr verbraucht als das E5335, sondern für einen Winterschlaf-Test.

Update 1

In diesem Moment pm-utilsist die einzige Möglichkeit, sich von der Einstellung wolauf das NIC zu lösen. Momentan suche ich nach der optimalen Konfiguration, um einen Stromhaken für Wechselstromeinstellungen für die Leerlaufzeit zu erstellen.

Irgendwelche Empfehlungen bitte.

Fab
quelle
1
Willkommen bei Ask Ubuntu. Bitte, was ist deine Frage? Bitte seien Sie genauer .
MadMike
Hibernate Cloud-Server nach einer Leerlaufzeit und haben solche mit WOL de-hibernated. Das zusätzliche Detail besteht darin, ein Beispiel für ein Arbeitsszenario anzugeben.
Fab
1
Ich konnte nicht verstehen, was Ihre Stolpersteine ​​sind. Was hast du ausprobiert, das nicht funktioniert und / oder was brauchst du speziell um zu verstehen?
Zanna
3
Ist der Winterschlaf nicht unpraktisch? Abhängig von Ihrer RAM-Größe und der Lese- / Schreibgeschwindigkeit des Datenträgers kann der Ruhezustand und die Wiederaufnahme des Betriebs einige Minuten dauern. Wie werden Anfragen in dieser Zeit bearbeitet? Wollen Ihre Benutzer so lange warten? Ein einfaches Anhalten ist möglicherweise ein besserer Kompromiss, um Energie zu sparen und gleichzeitig agiler zu bleiben. Vielleicht kann auch die Virtualisierung Ihrer Server und das Hosten auf einem leistungsstarken Computer oder einem Cluster, mit dem Sie Teile anhalten / fortsetzen und gleichzeitig die Last auf andere verteilen können, zum Energiesparen beitragen. Beachten Sie, dass ich keine Erfahrung mit großen Serversystemen habe, nur Vermutungen.
Byte Commander
1
Ich stimme Byte Commander zu. Für Eingaben von Personen mit tatsächlicher Erfahrung im Rechenzentrumsbetrieb sollten Sie sich wahrscheinlich an Server Fault wenden .
David Foerster

Antworten:

0

Ich habe ein kleines Skript zusammengestellt, das Sie alle 15 Minuten in einem Cronjob oder mit System-Timern ausführen können:

#/bin/bash

NActiveUsers=$(who -q | awk -F'#' '{printf $2}' | awk -F'=' '{printf $2}')
AvgLoad15Min=$(cat /proc/loadavg | awk -F' ' '{print $3}')

ActiveUsersThresh=2
AvgLoadThresh=0.15

if [ "$NActiveUsers" -lt "$ActiveUsersThresh" ]
then
    LoadBelowThresh=$(echo $AvgLoad15Min'<'$AvgLoadThresh | bc -l)
    if [ "$LoadBelowThresh" -eq 1 ]
    then
        systemctl hibernate
    fi
fi

Zunächst wird die Anzahl der am System angemeldeten Benutzer und die durchschnittliche Auslastung in den letzten 15 Minuten ermittelt. Sie sollten in der Lage sein, die durchschnittliche Systemlast im Leerlauf mithilfe von zu ermitteln cat /proc/loadavg. Die dritte Gleitkommazahl gibt den Durchschnitt der letzten 15 Minuten an. Dieser Wert ist hilfreich, um einen in der Variablen festgelegten Schwellenwert zu definieren AvgLoadThresh. Dies muss auf jeden Fall angepasst werden. Sie können auch festlegen, wie viele Benutzer angemeldet sein dürfen und das System trotzdem in den Ruhezustand wechselt. Dies ist eingestellt in ActiveUsersThresh. Nur um sicherzustellen, dass das System bei Wartungsarbeiten oder Ähnlichem nicht immer in den Ruhezustand wechselt.

Ich denke, man könnte sich intelligentere Schecks einfallen lassen, also sehen Sie es als einen ersten einfältigen Ansatz. Ich weiß zum Beispiel nicht, welche Datenbank oder welcher Webserver in Ihrer eigenen Cloud-Installation verwendet wird, aber Sie könnten versuchen, sie vor dem Befehl hibernate ordnungsgemäß zu stoppen, damit niemand plötzlich die Verbindung verliert.

romed
quelle