ใช่มันเป็นไปได้ นี่คือรายละเอียดของการตั้งค่าที่คล้ายกันของฉัน
การกำหนดค่าฮาร์ดแวร์:
APC Smart-UPS 1500 เชื่อมต่อกับโฮสต์ ESXi 5.1 ผ่าน USB เครื่องเสมือน Linux ที่ทำงานบนโฮสต์ ESXi นี้ UPS เชื่อมต่อกับ VM นี้โดยใช้ตัวเลือกการส่งผ่าน ESXi USB
การกำหนดค่าซอฟต์แวร์:
ต้นแบบ NUT (เครื่องมือของ UPS เครือข่าย) ที่ทำงานอยู่ใน VM และ ESXi NUT สลาฟดั้งเดิมทำงานบนโฮสต์ ESXi
ตรรกะการปิดระบบ:
VM กำลังเรียกใช้ไดรเวอร์ยูเอสบียูดีอัพซึ่งรับผิดชอบการสื่อสารกับ UPS ผ่าน USB upsdกระบวนการเชื่อมต่อกับ UPS ผ่านไดรเวอร์ usbhid อัพและจอภาพรัฐยูพีเอส upsmonกระบวนการหลักที่ทำงานบนเครื่องเดียวกันเชื่อมต่อกับupsdและเริ่มต้นการปิด โฮสต์ ESXi กำลังเรียกใช้อินสแตนซ์ที่ 2 ของupsmonซึ่งเชื่อมต่อกับ VM upsdเดียวกันผ่านเครือข่ายภายใน
เมื่อไฟฟ้าขัดข้องลำดับต่อไปนี้เกิดขึ้น:
- ยูพีเอสผ่าน usbhid-ups รายงานเพื่ออัพเกี่ยวกับไฟฟ้าขัดข้อง
- (เป็นทางเลือกมีประโยชน์ถ้าคุณต้องการปิดเครื่องในเวลาไม่กี่นาทีแทนที่จะเป็น Low Battery) upsmon บน VM จะเริ่มจับเวลา 5 นาที ตัวจับเวลาจะถูกยกเลิกหากมีการเรียกคืนพลังงาน
- เมื่อตัวจับเวลาเริ่มทำงานหรือเมื่อ UPS รายงานแบตเตอรี่ต่ำตัวอัพมอนจะยกค่าสถานะ FSD (บังคับให้ปิดระบบ) เป็นอัปเดต
- ในการกำหนดค่า NUT แบบสแตนด์อโลนธง FSD จะปิดเครื่อง แต่ที่นี่คำสั่ง shutdown ถูกแทนที่ด้วยการบันทึกอย่างง่ายเช่น "ฉันควรปิดตอนนี้ แต่ฉันกำลังรอโฮสต์แทน" และไม่ทำอะไรเลย
- การตั้งค่าสถานะ FSD นั้นยังอ่านโดย ESXi upsmon ซึ่งเริ่มต้นการปิดโฮสต์ ESXi
- โฮสต์ ESXi ปิดเครื่องเสมือนทั้งหมดหนึ่งต่อหนึ่ง สิ่งสำคัญคือ VM ที่ใช้งาน upsd ควรจะปิดเครื่องล่าสุด (ใช้การกำหนดค่าลำดับการเริ่มต้น / ปิดเครื่อง ESXi)
- สำคัญ: VM นี้ต้องติดตั้งเครื่องมือ vmware เมื่อได้รับคำสั่ง guest shutdown จากโฮสต์สคริปต์การปิดระบบ vmware-tools กำลังเริ่มทำงาน สคริปต์นี้ตรวจสอบแฟล็ก / etc / killpower หากไม่มีการตั้งค่าสถานะมันไม่ทำอะไรเลย (ซึ่งหมายความว่าผู้ใช้เปิดใช้งานการปิดระบบ linux ไม่ใช่เหตุการณ์ของ UPS) แต่ถ้ามีการตั้งค่าสถานะ (ใช้งาน FSD) สคริปต์นี้จะส่งไปยัง UPS คำสั่ง powerdown ล่าช้า (พูดใน 3 นาที)
- หลังจากรันสคริปต์ vmware-tools VM guest จะปิดตัวลง
- ESXi เห็นสถานะ poweroff ของ VM ล่าสุดและหยุดทำงานเอง (ใช้เวลาประมาณ 1 นาทีเนื่องจากไม่มีเครื่องจักรอื่นทำงานอยู่ในขณะนี้)
- ใน 2 นาทีที่เหลือ UPS จะตัดไฟ
- เมื่อไฟฟ้าถูกเรียกคืน ESXi จะเริ่มทำงานและเปิดใช้งานบน VMs ทั้งหมด เครื่องตรวจสอบของ UPS จะต้องเริ่มต้นก่อน (การกำหนดค่าเดียวกับการสั่งปิดเครื่อง)
ดาวน์โหลด:
NUT สำหรับ Linux สามารถติดตั้งได้จากแพ็คเกจ
NUT ไคลเอ็นต์ดั้งเดิมสำหรับเซิร์ฟเวอร์ ESXi สามารถดาวน์โหลดได้โดยใช้ลิงก์สุดท้ายในหน้านี้: http://www.networkupstools.org/download.html
ไฟล์สคริปต์และไฟล์ conf ของฉันบางส่วนอยู่ที่นี่ (แสดงเฉพาะบรรทัดที่เปลี่ยนแปลง): http://pastebin.com/KkEeanK1
หมายเหตุ:
แน่นอนว่ามีรายละเอียดเพิ่มเติมและต้องใช้เวลาพอสมควรสำหรับฉันที่จะทำงานได้ตามที่ควร แต่ตอนนี้มันทำงานได้ดีมาก ระบบนี้บัญชีสำหรับกรณีที่เมื่อคุณเพิ่งปิด VM การตรวจสอบจากภายใน (สคริปต์ vmware-tools ไม่ได้ทำงาน) หรือถ้ามันเป็นโฮสต์ ESXi เริ่มต้นการปิด VM VM (ไม่มีการตั้งค่าสถานะ / etc / killpower ดังนั้นไม่มี UPS โหลด) หรือ ถ้ามันเป็น ESXi ปิด (เหมือนกัน) สิ่งสำคัญเพียงอย่างเดียวคือการให้ VM นี้ทำงานโดยเร็วหลังจากโฮสต์บูตและปิดระบบล่าสุด (ดังนั้นเวลาที่ใช้ในการโฮสต์จะสามารถคาดการณ์ได้ - ดังที่ได้กล่าวไว้ข้างต้นใช้เวลาประมาณ 1 นาทีสำหรับฉันและอีก 2 นาทีที่ฉันจองไว้)
การตรวจสอบ UPS ของฉัน Linux VM ยังเป็นเซิร์ฟเวอร์การแชร์ Samba / NFS สำหรับการจัดเก็บสำรองข้อมูลเซิร์ฟเวอร์ NAT / DHCP สำหรับ VM และบริการอื่น ๆ ที่มีน้ำหนักเบา ใช้ ESXi CPU ประมาณ 22MHz และ RAM ที่ใช้งานอยู่ประมาณ 10MB เมื่อไม่ได้ใช้งาน เนื่องจากการใช้ NUT คุณสามารถเพิ่มพลังงานให้กับอุปกรณ์ได้มากขึ้นจาก UPS เดียวกันหากจำเป็นและทั้งหมดสามารถปิดได้อย่างสวยงาม ไม่จำเป็นต้องใช้ PowerChute และ / หรือการ์ดตรวจสอบเครือข่ายที่มีราคาแพง