Satu server, Dua APC UPS pada catu daya redundan: Bagaimana memicu shutdown?

10

Saya memiliki server yang rusak dan catu daya yang berlebihan terpasang dalam dua APC Smart-UPS 3000 XLM. Setiap UPS terhubung ke dua sumber listrik utama.

Dua contoh apcupsd sedang berjalan, masing-masing terhubung ke UPS-nya sendiri. Keduanya dapat mendeteksi ketika UPS menggunakan Baterai, dan setiap UPS kemudian dapat memicu shutdown pada server.

Pertanyaannya adalah: Bagaimana TIDAK mematikan jika HANYA SATU UPS kehabisan baterai?

Catatan: Smart-UPS 3000 XLM memiliki Fungsi "Power Sync" yang dapat terhubung dengan rekannya dan mendeteksi statusnya. Tetapi ketika saya mencabut steker dari salah satunya, perintah Shutdown tetap dikirim. Saya sedang berpikir tentang memodifikasi skrip shutdown untuk memeriksa dengan "apcaccess" jika up lainnya turun. Pengalaman apa pun tentang ini akan dihargai!

Falken
sumber

Jawaban:

13

Saat ini ketika salah satu dari dua UPS mati, peristiwa doshutdown dipicu, dan mengeksekusi skrip default melalui apccontrol . The doshutdown Script mengabaikan UPS kedua, karena mereka tidak event-terhubung, dan lanjutkan normal dengan shutdown.

Untuk membuat acara doshutdown agak terkoneksi, kedua instance dari apcupsd memerlukan file konfigurasi khusus yang disesuaikan. Perbedaannya akan berada di direktori tempat skrip acara harus dieksekusi.

Properti utama dari orang pertama, di /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

Dan untuk ups1, 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

Setiap skrip harus mendapatkan salinan skrip default.
Kami ingin menyesuaikan skrip doshutdown , yang tidak akan mematikan mesin secara langsung, tetapi harus memeriksa apakah UPS lain masih menyala, atau dalam mode mati.

Di bagian atas skrip doshutdown , kita dapat menambahkan sesuatu seperti

untuk ups0

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

untuk ups1

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

status 99 memiliki makna khusus, yang memberitahu apccontrol untuk menghentikan tindakan yang sedang berlangsung. Lima baris memeriksa apakah file UPS-down lainnya telah dibuat; jika tidak , file down dibuat untuk up yang turun, dan keluar. Jika ya , artinya UPS yang lain mati, yang ini juga turun, jadi skrip harus melanjutkan dan mematikan mesin.

File-file tersebut /tmp/usp[01].is.downmengindikasikan jika kenaikan [01] saat ini turun.

Penting: skrip init.d start dari apcupsd harus menghapus file-file ini, jika sudah dibuat di sesi sebelumnya:

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

Akhirnya, direktori yang dibuat di atas, / etc / apcupsd / ups [01] harus diberikan akses ke pengguna apcupsd (atau kepada pengguna yang relevan yang menjalankan instance).

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

Silakan lihat dokumentasi terperinci .

sunting memperbaiki /tmp/ups[01].is.downnama, yang .ishilang.

Dering Ø
sumber
1
dan pengguna biasa dapat menghentikan server Anda dengan menyentuh /tmp/ups1.is.down; sentuh /tmp/ups0.is.down: D Jadi akan lebih baik menggunakan / var / run misalnya. Btw. jika seseorang memotong dan menempelkan solusinya, rm -f /tmp/usp[01[.is.down adalah kesalahan ketik. Dan omong-omong, Anda harus menghapus /tmp/ups[01[.is.down dari case offbattery apccontrol, ketika daya kembali.
Harka Gyozo
1
Saya akan menyarankan menyentuh file is.down Anda sendiri SEBELUM memeriksa yang lain - seperti sekarang, saya pikir ada jendela kondisi ras kecil jika keduanya naik pada waktu yang sama.
Michael Kohne
4

Lihatlah NUT. Ini menangani ini dengan baik. Tentukan jumlah catu daya dari setiap UPS dan jumlah catu daya yang diperlukan. Shutdown tidak akan dipicu selama ada catu daya yang cukup tidak pada UPS.

BillThor
sumber