Iya itu mungkin. Berikut ini detail pengaturan serupa saya.
Konfigurasi perangkat keras:
APC Smart-UPS 1500 terhubung ke ESXi 5.1 Host via USB. Mesin virtual Linux yang berjalan pada host ESXi ini. UPS terhubung ke VM ini menggunakan opsi USB pass ESXi.
Konfigurasi perangkat lunak:
master NUT (Network UPS Tools) berjalan di VM, dan slave NUT ESXi asli berjalan pada host ESXi.
Shutdown logic:
VM menjalankan usbhid-up driver UPS yang bertanggung jawab untuk komunikasi dengan UPS melalui USB. Proses upsd terhubung ke UPS melalui driver usbhid-up dan memonitor keadaan UPS. Proses master upsmon yang berjalan pada mesin yang sama terhubung ke upsd dan memulai shutdown. Host ESXi menjalankan instance upsmon ke-2 yang juga menghubungkan ke VM upsd yang sama melalui jaringan internal.
Pada kegagalan daya, urutan berikut terjadi:
- UPS melalui laporan usbhid-up untuk UPS tentang kegagalan daya.
- (opsional, berguna jika Anda ingin mematikan dalam beberapa menit, bukan Baterai Rendah) peringatan pada VM memulai waktu 5 menit. Timer dibatalkan jika daya dipulihkan.
- Ketika timer menyala atau ketika UPS melaporkan Baterai Rendah, upsmon menaikkan bendera FSD (shutdown paksa) menjadi upd.
- Dalam konfigurasi NUT yang berdiri sendiri flag FSD akan mematikan mesin. Tapi di sini perintah shutdown digantikan oleh logging sederhana seperti "Saya harus mematikan sekarang tetapi saya sedang menunggu tuan rumah sebagai gantinya". Dan tidak melakukan apa pun.
- Bendera FSD juga dibaca oleh ESXi upsmon, yang memulai shutdown host ESXi.
- Host ESXi mematikan semua mesin virtual satu per satu. Yang penting adalah bahwa VM yang menjalankan upsd harus shutdown terakhir (menggunakan ESXi startup / konfigurasi urutan shutdown).
- Penting: VM ini harus menginstal alat vmware. Ketika menerima perintah shutdown tamu dari tuan rumah, skrip shutdown vmware-tools sedang dimulai. Skrip ini memeriksa tanda / etc / killpower . Jika tidak ada flag, ia tidak melakukan apa-apa (ini berarti pengguna mengaktifkan linux shutdown, bukan acara UPS). Tetapi jika flag itu ada (FSD aktif), maka skrip ini mengirim ke UPS perintah powerdown tertunda (katakanlah, dalam 3 menit).
- Setelah menjalankan skrip vmware-tools guest VM dimatikan.
- ESXi melihat status poweroff VM terakhir dan turun sendiri (dibutuhkan sekitar 1 menit karena tidak ada mesin lain yang berjalan sekarang).
- Dalam 2 menit tersisa UPS memutus aliran listrik.
- Ketika daya dipulihkan, ESXi memulai dan menghidupkan semua VM. Mesin pemantau UPS harus dimulai lebih dulu (konfigurasi yang sama seperti untuk urutan pematian).
Unduhan:
NUT untuk Linux dapat diinstal dari paket.
Klien NUT asli untuk server ESXi dapat diunduh menggunakan tautan terakhir di halaman ini: http://www.networkupstools.org/download.html
Beberapa skrip dan file conf saya ada di sini (hanya baris yang diubah yang ditampilkan): http://pastebin.com/KkEeanK1
Catatan:
Tentu saja ada lebih banyak detail, dan butuh beberapa waktu bagi saya untuk membuat ini berfungsi sebagaimana mestinya. Tapi sekarang kinerjanya sangat baik. Sistem ini bertanggung jawab atas kasus-kasus ketika Anda baru saja mematikan VM pemantauan dari dalam (skrip vmware-tools tidak dijalankan), atau jika host ESXi yang memulai VM shutdown (tidak ada bendera etc / killpower, jadi tidak ada muatan UPS), atau jika itu ESXi shutdown (sama). Satu-satunya yang penting adalah membuat VM ini menjalankan ASAP setelah boot host, dan mematikannya terakhir (sehingga waktu host down dapat diprediksi - seperti yang dikatakan di atas, sekitar 1 menit untuk saya dan 2 menit lagi saya cadangan untuk berjaga-jaga).
UPS saya yang memantau Linux VM juga merupakan server berbagi Samba / NFS untuk penyimpanan cadangan, server NAT / DHCP untuk VM, dan beberapa layanan ringan lainnya. Dibutuhkan sekitar 22MHz bagian ESXi CPU dan sekitar 10MB RAM aktif saat idle. Karena menggunakan NUT, Anda dapat memberi daya lebih banyak perangkat dari UPS yang sama jika diperlukan, dan semua itu dapat dimatikan dengan anggun. Tidak diperlukan PowerChute dan / atau Kartu Monitor Jaringan yang mahal.