Mendeteksi ketika server beroperasi dengan baterai UPS

24

Saya memiliki server rumah (HP Proliant ML310 G4) yang saya beli dari majikan saya sekitar sebulan yang lalu. Server menjalankan Debian Linux dan saya menggunakannya untuk hampir semuanya. Saya dapat melakukan hal ini karena kebutuhan saya tidak terlalu menuntut sehingga server jarang di bawah beban berat pada waktu tertentu. Server ini memiliki array RAID1 2 TB (dengan satu cadangan panas) yang dikelola oleh mdadm yang saya gunakan untuk berbagi file melalui jaringan saya melalui Samba. Saya menjalankan OS dari hard drive yang lebih kecil yang bukan bagian dari array.

Saya memiliki server yang ditenagai melalui UPS 255-watt kecil karena saya membutuhkannya untuk menahan fluktuasi daya kecil tanpa turun. Ini sangat penting karena shutdown yang tiba-tiba najis (disebabkan oleh penurunan daya atau pemadaman) dapat mengacaukan array RAID, yang telah terjadi pada satu kesempatan.

Jika terjadi kegagalan daya, saya memperkirakan UPS hanya memiliki daya 10-15 menit di dalamnya. Mungkin ada lebih banyak tetapi saya tidak ingin secara otomatis menganggap ada. Ini cukup untuk melewati pemadaman yang berlangsung beberapa menit atau kurang. Namun, jika daya mati selama beberapa jam, saya perlu server untuk mematikan dirinya sendiri secara otomatis sebelum daya UPS mati. Mudah-mudahan ini akan menjaga integritas RAID agar tidak disembunyikan dalam situasi tersebut.

Hal semacam ini mudah dilakukan pada laptop b / c, ia memiliki sensor bawaan untuk menentukan kapan baterai beroperasi dengan daya baterai, tetapi server ini tidak (sejauh yang saya tahu). Saya memiliki pengaturan jaringan yang tidak biasa di mana modem DSL saya terpisah dari router saya. Router juga ada di UPS, yang memungkinkan saya untuk masuk SSH melalui laptop saya dan mematikan server jika terjadi kegagalan daya. Sayangnya, ini hanya berfungsi jika saya ada di sana untuk melakukannya. Saya membutuhkan solusi yang selalu berfungsi apakah saya ada untuk campur tangan atau tidak.

Karena modem DSL saya tidak pada UPS, itu akan turun dengan segala yang lain jika daya gagal Saya mengaturnya seperti itu dengan sengaja karena saya mempunyai ide tentang bagaimana menyelesaikan masalah ini: Saya sedang berpikir untuk menulis sebuah skrip yang akan melakukan ping google.com atau situs lain dengan lalu lintas tinggi / ketersediaan tinggi. Jika ping selesai dengan sukses, server akan terus berjalan. Jika ping gagal (karena modem mati), skrip akan berpikir daya dimatikan dan akan memberitahu server untuk dimatikan. Saya akan menambahkan skrip ke Cron dan menjalankannya setiap 5 menit. Mudah-mudahan itu akan memberi server cukup waktu untuk dimatikan sebelum UPS kehabisan daya.

Sebelum saya kesulitan menulis naskah, saya ingin tahu apakah ada cara yang lebih baik untuk melakukan apa yang saya butuhkan. Terima kasih sebelumnya atas bantuannya.

Will Kraft
sumber
15
Anda tidak boleh melakukan ping situs eksternal, tetapi ping IP modem DSL Anda.
LawrenceC
1
@ultrasawblade ... terdengar seperti jawaban, berbau seperti jawaban ... itu adalah jawaban!
Pureferret
1
Seperti @ultrasawblade menyebutkan, JANGAN PERNAH bergantung pada sumber luar untuk pengaturan internal. Misalnya, jika internet Anda tiba-tiba gagal, Anda kehilangan konektivitas dan server Anda mati. Jika Google.com memutuskan untuk mengubah nama mereka karena alasan apa pun, server Anda akan mati. Jika Anda mem-ping mereka menggunakan IP dan server pertanian tertentu turun, server Anda juga turun. ini adalah kasus dengan sumber luar. Kecuali Anda 100% yakin bahwa server Anda HARUS HANYA hidup ketika server lain itu tersedia, Anda tidak ingin bergantung pada server lain itu dengan alasan apa pun.
Nzall
Apakah tidak ada jawaban yang sesuai untuk Anda?
Dave

Jawaban:

34

Ada cara lama tetapi terbukti: Gunakan modem analog lama. Begini caranya

  • Hubungkan modem ke server melalui port serial (mis. TtyS0)
  • Colokkan catu daya modem tidak ke UPS, tetapi langsung di listrik
  • JANGAN colokkan apa pun ke saluran telepon modem

Sekarang jajak pendapat modem setiap beberapa detik pengiriman ATZ[Enter]dan harapkan OK[Enter]- jika modem tidak menjawab, Anda dapat menganggap itu tidak memiliki daya, berarti UPS pada baterai.

Edit

Poin utamanya adalah, bahwa jika koneksi Internet Anda jatuh karena alasan lain, server tidak akan mati, sebagaimana seharusnya.

Edit 2

Dari komentar:

  • Tentu Anda harus menjaga beberapa negara dari satu cek ke yang berikutnya, hanya mematikan setelah cek N gagal. Saya tidak menyebutkan ini, karena berlaku untuk semua kemungkinan pemeriksaan, tidak hanya modem
  • Perbedaan antara menggunakan modem dan menggunakan apa pun yang ada hubungannya dengan jaringan adalah, bahwa hilangnya konektivitas jaringan sementara akan terjadi: Anda tidak ingin diganggu dengan "Login dinonaktifkan, server pada USV", jika Anda mem-boot ulang sebuah saklar atau mengkonfigurasi ulang VLAN. Dalam pengalaman saya, garis serial sekuat yang didapatnya.
Eugen Rieck
sumber
1
Jawaban yang bagus, tapi saya sarankan menambahkan pengaman di mana ia memeriksa beberapa kali sebelum benar-benar dimatikan. (jadi Anda tidak perlu mematikan selama 5 menit brown out) Dan saya pikir ping swich juga akan cukup (hanya tidak ada di luar jaringan Anda).
HTDutchy
@ HTDutchy Lihat hasil edit saya!
Eugen Rieck
Saya tahu, tetapi karena dia mungkin tidak memiliki koneksi serial atau modem lama yang berkeliaran di perangkat keras rumah akan menjadi hal terbaik berikutnya. dan jika sakelar akan berhenti bekerja, server akan tetap muncul.
HTDutchy
22

Up biasanya dilengkapi dengan konektor USB atau COM1. Ketika Anda menghubungkan ini ke server Anda, Anda kemudian dapat mulai memantau UPS.

Di lingkungan windows, tanpa menginstal perangkat lunak, pesan sudah terdaftar, dan itu akan mematikan server untuk Anda. Saya tidak tahu bagaimana ini bekerja di linux, tapi saya yakin ada beberapa paket perangkat lunak yang tersedia untuk berinteraksi dengan UPS Anda.

LPChip
sumber
Saya baru saja memeriksa UPS saya dan sayangnya tidak ada yang seperti itu. Ini hanya memiliki 8 colokan daya (4 pada baterai dan 4 tanpa) dan jack line-in dan line-out untuk kabel telepon.
Will Kraft
27
Kemudian dapatkan UPS yang dapat berkomunikasi dengan komputer.
Ramhound
@Ramhound Itu mungkin bukan pilihan, UPS bisa sangat mahal, dan ada cara yang lebih murah.
Vality
Saya tidak setuju ada cara lain untuk mendeteksi Anda menggunakan baterai up yang bahkan tidak dapat Anda deteksi pada level is
Ramhound
1

Jika Anda menggunakan Debian, coba cari menggunakan NUT (alat UPS jaringan). Saya menggunakan NUT untuk melakukan apa yang Anda jelaskan pada Synology NAS saya (yang menjalankan busybox) dan pada server web rumah yang menjalankan Ubuntu 12,04 LTS. Saya memiliki NAS terhubung melalui USB ke UPS untuk alasan yang sama seperti Anda, potensi hilangnya semua file saya.

Saya percaya kacang daemon menanyakan UPS setiap detik untuk menentukan status. Ketika UPS berada dalam mode baterai, UPS dapat dikonfigurasikan untuk dimatikan dengan baik atau menunggu X menit terlebih dahulu, dll. Anda juga dapat mengatur banyak klien untuk terhubung ke daemon mur yang Anda jalankan di server Anda. Jadi server Anda dapat memberi tahu banyak PC di jaringan Anda untuk mematikan dengan baik. Untuk eksekusi shutdown, Anda dapat menyediakan skrip Anda sendiri untuk layanan shutdown dengan cara tertentu, atau Anda dapat menggunakan skrip internal yang hanya memanggil shutdown-h, jika saya ingat dengan benar.

Situs web NUT

Ada situs yang lebih baik untuk menemukan info, tetapi saya tidak dapat mengingatnya sekarang. Konfigurasi bisa jadi menyebalkan, tetapi jika Anda berbicara tentang kemungkinan kehilangan RAID Anda, periksa! Bergantung pada kebutuhan Anda, Anda mungkin tidak membutuhkan seluruh rangkaian NUT, Anda mungkin dapat bertahan hanya dengan porsi UPSMON. Saya pikir Anda bisa mendapatkan ini dalam paket Ubuntu "nut-client".

Ada juga klien NUT untuk Windows, tetapi pada Windows Anda mungkin lebih baik menggunakan sesuatu seperti PowerChute, atau yang serupa.

zako42
sumber
Seperti yang dikatakan sebelumnya, OP's UPS tidak memiliki cara untuk berkomunikasi dengan komputer, tidak ada USB atau jaringan.