Question Un serveur, deux onduleurs APC sur des alimentations redondantes: comment déclencher un arrêt?


J'ai un serveur en rack et ses blocs d'alimentation redondants connectés à deux APC Smart-UPS 3000 XLM. Chaque UPS est connecté à deux sources d’alimentation différentes.

Deux instances d'apcupsd sont en cours d'exécution, chacune étant connectée à son propre onduleur. Ils peuvent tous deux détecter quand un onduleur est sur batterie et chaque onduleur peut alors déclencher un arrêt du serveur.

La question est: Comment ne PAS arrêter si UN SEUL onduleur n'a plus de batterie?

Remarque: Smart-UPS 3000 XLM dispose d'une fonction "Power Sync" capable de se connecter à son homologue et de détecter son état. Mais quand j'ai débranché l'un d'entre eux, l'ordre d'arrêt a quand même été envoyé. Je songe à modifier les scripts d'arrêt pour vérifier avec "apcaccess" si les autres mises à niveau sont hors service. Toute expérience sur ce serait apprécié!


10
2018-01-15 09:37


origine




Réponses:


Actuellement, quand l’un des deux UPS décède, le doshutdown L'événement est déclenché et exécute le script par défaut via apccontrol. le doshutdown Le script ignore le second onduleur, car ils ne sont pas connectés à un événement, et procède normalement à l'arrêt.

Afin d'avoir le doshutdown événements un peu connectés, les deux instances d’apcupsd ont besoin d’un fichier de configuration spécifiquement personnalisé. La différence réside dans le répertoire à partir duquel les scripts d'événements doivent être exécutés.

Principales propriétés des premiers ups, en /etc/apcupsd/apcupsd.ups0.conf 

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

Et pour les 1, en /etc/apcupsd/apcupsd.ups1.conf 

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

Chaque scriptdir devrait obtenir une copie des scripts par défaut.
Nous voulons personnaliser le doshutdown Ce script n’arrête pas directement la machine mais doit vérifier si l’autre UPS est toujours allumé ou en mode veille.

Au sommet de la doshutdown script, nous pourrions ajouter quelque chose comme

pour ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

pour ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

le statut 99 a une signification particulière, qui dit apccontrol arrêter l'action en cours. Les cinq lignes vérifient si l'autre fichier UPS-down-down a été créé. si non, le fichier descendant est créé pour les montées et descendantes. Si Oui, ce qui signifie que l’autre onduleur est en panne, celui-ci est également en panne, le script doit donc continuer et éteindre la machine.

Les fichiers /tmp/usp[01].is.down indique si les ups [01] sont actuellement en panne.

Important: le script init.d start de apcupsd doit supprimer ces fichiers, s'ils ont été créés lors d'une session précédente:

rm -f /tmp/usp[01].is.down

Enfin, les répertoires créés ci-dessus, / etc / apcupsd / ups [01] devraient avoir accès au répertoire apcupsd utilisateur (ou à n'importe quel utilisateur exécutant les instances).

chown -R apcupsd /etc/apcupsd/ups[01]

S'il vous plaît jeter un oeil à la documentation détaillée.

modifier fixé le /tmp/ups[01].is.down les noms, les .is manquait.


13
2018-01-15 12:34



et les utilisateurs réguliers peuvent arrêter votre serveur avec touch /tmp/ups1.is.down; touch /tmp/ups0.is.down: D Il serait donc préférable d’utiliser / var / run par exemple. Btw. si quelqu'un coupe et colle la solution, le fichier rm -f /tmp/usp[01].is.down est une faute de frappe. Et au fait, vous devriez supprimer le fichier /tmp/ups[01].is.down de la casse offbattery de apccontrol, lorsque le courant reviendra. - Harka Gyozo
Je suggérerais de toucher votre propre fichier AVANT de vérifier l’autre fichier - comme c’est le cas à l’heure actuelle, je pense qu’il ya une toute petite fenêtre d’état de concurrence si les deux mises à jour sortent exactement au même moment. - Michael Kohne


Regardez NUT. Il gère cela bien. Définissez le nombre d'alimentations de chaque onduleur et le nombre d'alimentations requises. L'arrêt ne se déclenchera pas tant qu'il y a suffisamment de sources d'alimentation non sur l'onduleur.


4
2018-01-15 21:39