Un server, due UPS APC su alimentatori ridondanti: come attivare l'arresto?


10

Ho un server in rack e i suoi alimentatori ridondanti sono collegati a due APC Smart-UPS 3000 XLM. Ogni UPS è collegato a due diverse fonti di alimentazione.

Sono in esecuzione due istanze di apcupsd, ciascuna connessa al proprio UPS. Entrambi possono rilevare quando un UPS è alimentato a batteria e ciascun UPS può quindi attivare uno spegnimento sul server.

La domanda è: come NON spegnersi se SOLO UN UPS si esaurisce la batteria?

Nota: Smart-UPS 3000 XLM ha una funzione "Power Sync" in grado di connettersi al suo peer e di rilevarne lo stato. Ma quando ho staccato la spina da una di esse, l'ordine di spegnimento è stato inviato comunque. Sto pensando di modificare gli script di spegnimento per verificare con "apcaccess" se gli altri up sono inattivi. Qualsiasi esperienza su questo sarebbe apprezzata!

Risposte:


13

Attualmente quando uno dei due UPS muore, viene attivato l' evento doshutdown ed esegue lo script predefinito tramite apccontrol . Lo script doshutdown ignora il secondo UPS, poiché non sono collegati agli eventi e procedono normalmente allo spegnimento.

Per avere un po 'connessi gli eventi di doshutdown , le due istanze di apcupsd necessitano di un file di configurazione specificamente personalizzato. La differenza risiederà nella directory da cui devono essere eseguiti gli script degli eventi.

Proprietà principali dei primi piani, in /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

E per gli up1, in /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

Ogni scriptdir dovrebbe ottenere una copia degli script predefiniti.
Vogliamo personalizzare lo script doshutdown , che non spegne direttamente la macchina, ma deve verificare se l'altro UPS è ancora acceso o è in modalità di spegnimento.

Nella parte superiore dello script di doshutdown , potremmo aggiungere qualcosa di simile

per ups0

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

per ups1

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

lo stato 99 ha un significato speciale, che dice ad apccontrol di fermare l'azione in corso. Le cinque righe controllano se è stato creato l'altro file down-UPS; in caso contrario , il file down viene creato per gli up down e viene chiuso. Se , nel senso che l'altro UPS è inattivo, anche questo si sta scaricando, quindi lo script dovrebbe continuare e spegnere la macchina.

I file /tmp/usp[01].is.downindicano se l'up [01] è attualmente inattivo.

Importante: lo script init.d start di apcupsd dovrebbe rimuovere questi file, se sono stati creati in una sessione precedente:

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

Infine, le directory create sopra, / etc / apcupsd / ups [01] dovrebbero avere accesso all'utente apcupsd (o a qualsiasi utente rilevante che esegue le istanze).

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

Dai un'occhiata alla documentazione dettagliata .

modifica fissa i /tmp/ups[01].is.downnomi, .ismancava.


1
e gli utenti regolari possono arrestare il server con touch /tmp/ups1.is.down; toccare /tmp/ups0.is.down: D Quindi sarebbe meglio usare / var / run per esempio. Btw. se qualcuno taglia e incolla la soluzione, rm -f /tmp/usp[01[.is.down è un errore di battitura. E a proposito, dovresti eliminare /tmp/ups[01[.is.down dal caso di batteria scarica di apccontrol, quando viene ripristinata l'alimentazione.
Harka Gyozo,

1
Suggerirei di toccare il tuo file is.down PRIMA di controllare l'altro - così com'è adesso, penso che ci sia una piccola finestra sulle condizioni della gara se entrambi gli up escono esattamente nello stesso momento.
Michael Kohne,

4

Guarda NUT. Gestisce bene questo. Definire il numero di alimentatori da ciascun UPS e il numero di alimentatori richiesti. L'arresto non verrà attivato finché non sono presenti alimentatori sufficienti non su UPS.

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.