Comment mettre en veille automatique les serveurs de stockage cloud?

13

J'ai des centres de données de stockage cloud exécutant Ubuntu 16.04 lts et NextCloud / OwnCloud qui n'ont pas besoin d'être disponibles 24h / 24 et 7j / 7 et ont besoin de solutions de gestion de l'alimentation. Les serveurs sont Dell PowerEdge 1950 Gen II et Dell PowerEdge 2950 Gen II

Objectif global

Les serveurs de stockage en cloud d'hibernation ont dépassé un temps d'inactivité, par exemple 20 minutes, et ont ainsi déshiberné avec WOL pour réduire de 6 272,09 kilos de dioxyde de carbone par an à 6680 kW de notre seul centre de données, des mesures obtenues tout au long d'un audit énergétique détaillé.

Solution inefficace essayée

Paysage

Les travaux de paysage sur site / cron n'offrent que des démarrages et des arrêts planifiés, ce qui est inefficace pour notre réalisable.

Powernap

powernap semble la voie à suivre, mais le service ne démarre pas sur Ubuntu 16.04

XXXXXXX ~ Statut powernap du service $ sudo
● powernap.service - PowerNap
   Chargé: chargé (/lib/systemd/system/powernap.service; désactivé; préréglage du fournisseur
   Actif: inactif (mort)

ponwernap semble utiliser des services dépréciés tels que network.service qui ne sont plus disponibles dans Ubuntu 16.04

Objectifs réalisables

Wake on LAN (WOL)

L'activation de WOL est simple en suivant la configuration manuelle sur ce lien . ou avec l'utilisation de powewake

Hibernation du serveur

Jusqu'à présent, je n'ai réussi qu'à mettre en veille prolongée les serveurs en utilisant sudo systemctl hibernateetsudo systemctl hibernate-sleep

  1. powernap - Je dépose des rapports de bogues pour supprimer les dépendances épuisées
  2. systemctl - pourrait conduire à quelque part
  3. pm-utils - pourrait aussi mener à quelque part

Mises à niveau matérielles

J'ai mis à niveau les CPU du Dell 1950 Gen II dual Xeon E5335 avec les CPU Xeon X5365. Le X5365 permet la gestion de l'alimentation et définit la gestion de l'alimentation à partir du BIOS. En toute honnêteté, je n'étais pas en faveur d'une telle mise à niveau car le X5365 consomme 70 watts par processeur de plus que le E5335, mais je l'ai fait en faveur des tests d'hibernation.

Mise à jour 1

En ce moment, pm-utilsc'est la seule façon de s'écarter de la mise wolen place du nic. Actuellement, j'explore la configuration optimale pour créer un crochet d'alimentation pour les paramètres de courant alternatif pour le temps d'inactivité.

Toutes recommandations s'il vous plaît.

Fab
la source
1
Bienvenue sur Ask Ubuntu. S'il vous plaît, quelle est votre question? Veuillez être plus précis .
MadMike
Hiberner les serveurs cloud après une période d'inactivité et les avoir déshibernés avec WOL. Le détail supplémentaire est de donner un exemple de scénario de travail.
Fab
1
Je ne pouvais pas vraiment comprendre ce que sont vos pierres d'achoppement. Qu'avez-vous essayé qui ne fonctionne pas et / ou qu'est-ce que vous avez besoin d'aide pour comprendre?
Zanna
3
La mise en veille prolongée n'est-elle pas pratique? Selon la taille de votre RAM et la vitesse de lecture / écriture du disque, l'hibernation et la reprise peuvent prendre jusqu'à quelques minutes. Comment les demandes sont-elles traitées pendant cette période? Vos utilisateurs voudront-ils attendre aussi longtemps? Une simple suspension peut être un meilleur compromis pour économiser de l'énergie tout en restant plus agile. Et peut-être que virtualiser vos serveurs et les héberger sur une machine puissante ou un cluster qui vous permet de suspendre / reprendre des pièces tout en équilibrant la charge sur d'autres pourrait également aider à économiser de l'énergie. Notez que je n'ai aucune expérience avec les systèmes de serveurs à grande échelle, je suppose.
Byte Commander
1
Je suis d'accord avec Byte Commander. Pour obtenir des commentaires de personnes ayant une expérience réelle du fonctionnement du centre de données, vous devriez probablement vous renseigner sur Server Fault .
David Foerster

Réponses:

0

J'ai mis en place un petit script que vous pouvez exécuter dans un cronjob toutes les 15 minutes ou en utilisant des minuteries 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

Il obtient d'abord le nombre d'utilisateurs connectés au système et la charge moyenne au cours des 15 dernières minutes. Vous devriez être en mesure de connaître votre charge système moyenne inactive à l'aide de cat /proc/loadavg. Le troisième nombre à virgule flottante donne la moyenne des 15 dernières minutes. Cette valeur est utile pour définir un seuil défini dans la variable AvgLoadThresh. Cela nécessitera certainement un réglage. L'autre chose que vous pouvez définir est le nombre d'utilisateurs autorisés à se connecter et le système passe de toute façon en veille prolongée. C'est réglé ActiveUsersThresh. Juste pour vous assurer que le système n'hiberne pas toujours lorsque vous effectuez une maintenance ou quelque chose.

Je suppose que l'on pourrait proposer des contrôles plus intelligents, alors voyez-le comme une première approche simple. Par exemple, je ne sais pas quelle base de données ou serveur Web est utilisé dans votre installation owncloud mais vous pouvez essayer de les arrêter gracieusement avant la commande hibernate, afin que personne ne perde soudainement la connexion.

romed
la source