Come posso ibernare automaticamente i server di archiviazione cloud?


13

Ho dei data center di cloud storage con Ubuntu 16.04 lts e NextCloud / OwnCloud che non hanno bisogno di essere disponibili 24 ore su 24, 7 giorni su 7 e hanno bisogno di soluzioni di gestione dell'alimentazione. I server sono Dell PowerEdge 1950 Gen II e Dell PowerEdge 2950 Gen II

Obiettivo generale

Sospendi i server di archiviazione cloud dopo un periodo di inattività di 20 minuti, ad esempio 20 minuti di letargo con WOL per ridurre 6272,09 kg di anidride carbonica all'anno a soli 6680 kw dal nostro data center, metriche ottenute nel corso di un audit energetico dettagliato.

Soluzione inefficace tentata

Paesaggio

I lavori in orizzontale / locale offrono solo l'avvio e l'arresto programmati, quindi inefficaci per i nostri risultati.

PowerNap

powernap sembra la strada da percorrere ma il servizio non si avvia su Ubuntu 16.04

XXXXXXX ~ $ sudo service powernap status
● powernap.service - PowerNap
   Caricato: caricato (/lib/systemd/system/powernap.service; disabilitato; preimpostazione fornitore
   Attivo: inattivo (morto)

ponwernap sembra utilizzare servizi deprezzati come network.service che non sono più disponibili in Ubuntu 16.04

Obiettivi raggiungibili

Wake on LAN (WOL)

L'abilitazione di WOL è semplice seguendo l'impostazione manuale su questo link . o con l'uso di powewake

Ibernazione del server

Fino ad ora, sono riuscito a ibernare i server solo usando sudo systemctl hibernateesudo systemctl hibernate-sleep

  1. powernap - Sto presentando segnalazioni di bug per rimuovere le dipendenze esaurite
  2. systemctl - potrebbe portare da qualche parte
  3. pm-utils - potrebbe portare anche da qualche parte

Aggiornamenti hardware

Ho aggiornato le CPU della Dell 1950 Gen II dual Xeon E5335 con CPU Xeon X5365. L'X5365 abilita la gestione dell'alimentazione e imposta la gestione dell'alimentazione dal BIOS. In tutta onestà, non ero a favore di tale aggiornamento poiché l'X5365 consumava 70 watt per CPU in più rispetto all'E5335, ma lo facevo a favore dei test di ibernazione.

Aggiornamento 1

In questo momento pm-utilsè l'unico modo per andare oltre l'impostazione woldel nic. Attualmente sto esplorando la configurazione ottimale per creare un gancio di alimentazione per le impostazioni CA per i tempi di inattività.

Eventuali raccomandazioni per favore.


1
Benvenuti in Ask Ubuntu. Per favore, qual è la tua domanda? Sii più specifico .
MadMike,

Sospendi i server cloud dopo un tempo di inattività e sono stati disattivati ​​con WOL. Il dettaglio aggiuntivo è quello di fornire un esempio di scenario di lavoro.
Fab

1
Non riesco proprio a capire quali siano i tuoi ostacoli. Che cosa hai provato che non funziona e / o che cosa hai bisogno di aiuto per capire?
Zanna,

3
Il letargo non è pratico? A seconda delle dimensioni della RAM e della velocità di lettura / scrittura del disco, il letargo e la ripresa possono richiedere fino a pochi minuti. Come vengono gestite le richieste durante quel periodo? I tuoi utenti vorranno aspettare così a lungo? La semplice sospensione potrebbe essere un compromesso migliore per risparmiare energia rimanendo più agili. E forse la virtualizzazione dei server e l'hosting su una macchina potente o un cluster che consente di sospendere / riprendere le parti bilanciando il carico su altri potrebbe anche aiutare a risparmiare energia. Si noti che non ho esperienza con i sistemi server su larga scala, solo supponendo.
Byte Commander

1
Concordo con Byte Commander. Per input da parte di persone con esperienza effettiva nel funzionamento del data center, è consigliabile chiedere informazioni su Server Fault .
David Foerster,

Risposte:


0

Ho messo insieme un piccolo script che potresti eseguire in cronjob ogni 15 minuti o usando i timer di systemd:

#/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

In primo luogo ottiene il numero di utenti che hanno effettuato l'accesso al sistema e il carico medio negli ultimi 15 minuti. Dovresti essere in grado di scoprire il carico medio del sistema inattivo utilizzando cat /proc/loadavg. Il terzo numero in virgola mobile indica la media degli ultimi 15 minuti. Questo valore è utile per definire una soglia impostata nella variabile AvgLoadThresh. Questo avrà sicuramente bisogno di essere messo a punto. L'altra cosa che puoi definire è la quantità di utenti autorizzati ad accedere e il sistema va comunque in letargo. Questo è impostato in ActiveUsersThresh. Solo per assicurarsi che il sistema non sia sempre in letargo durante la manutenzione o qualcosa del genere.

Immagino che si possano inventare controlli più intelligenti, quindi vederlo come un primo approccio semplice. Ad esempio, non so quale database o server Web sia utilizzato nella propria installazione di owncloud ma potresti provare a fermarli con grazia prima del comando di ibernazione, quindi nessuno perderebbe improvvisamente la connessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.