Vâng nó có thể. Dưới đây là chi tiết về thiết lập tương tự của tôi.
Cấu hình phần cứng:
APC Smart-UPS 1500 được kết nối với ESXi 5.1 Host qua USB. Một máy ảo Linux chạy trên máy chủ ESXi này. UPS được kết nối với VM này bằng tùy chọn chuyển qua USB ESXi.
Cấu hình phần mềm:
NUT (Network UPS Tools) chính đang chạy trong VM và nô lệ ESXi NUT gốc chạy trên máy chủ ESXi.
Tắt logic:
VM đang chạy trình điều khiển usbhid-up của trình điều khiển UPS , chịu trách nhiệm liên lạc với UPS qua USB. Các upsd quá trình kết nối với UPS thông qua trình điều khiển usbhid-up và màn hình trạng thái UPS. Các upsmon quá trình tổng thể chạy trên sẽ kết nối cùng một máy với upsd và tu tắt máy. Máy chủ ESXi đang chạy phiên bản upsmon thứ 2 cũng kết nối với cùng một upsd VM thông qua mạng nội bộ.
Khi mất điện, trình tự sau đây diễn ra:
- UPS thông qua các báo cáo usbhid-up cho upsd về sự cố mất điện.
- (tùy chọn, hữu ích nếu bạn muốn tắt máy trong vài phút thay vì Pin yếu) upsmon trên VM khởi tạo bộ đếm thời gian 5 phút. Hẹn giờ bị hủy bỏ nếu nguồn được phục hồi.
- Khi bộ hẹn giờ kích hoạt hoặc khi UPS báo lỗi Pin yếu, thợ nâng sẽ tăng cờ FSD (buộc phải tắt máy) lên upsd.
- Trong cấu hình NUT độc lập, cờ FSD sẽ tắt máy. Nhưng ở đây, lệnh tắt máy được thay thế bằng cách đăng nhập đơn giản như "Tôi nên tắt máy ngay bây giờ nhưng tôi đang chờ máy chủ thay thế". Và không làm gì cả.
- Cờ FSD cũng được đọc bởi ESXi upsmon, khởi tạo tắt máy chủ ESXi.
- Máy chủ ESXi tắt tất cả các máy ảo từng cái một. Điều quan trọng là VM chạy upsd nên được tắt lần cuối (sử dụng cấu hình trình tự khởi động / tắt máy ESXi).
- Quan trọng: VM này phải có các công cụ vmware được cài đặt. Khi nó nhận được lệnh tắt máy khách từ máy chủ, tập lệnh tắt công cụ vmware đang được bắt đầu. Kịch bản lệnh này kiểm tra cờ / etc / killpower . Nếu không có cờ, nó không làm gì cả (điều này có nghĩa là người dùng đã kích hoạt tắt máy linux, không phải là sự kiện của UPS). Nhưng nếu cờ tồn tại (FSD hoạt động), thì tập lệnh này sẽ gửi cho UPS lệnh tắt nguồn bị trì hoãn (giả sử trong 3 phút).
- Sau khi chạy tập lệnh vmware-tools, VM khách sẽ tắt.
- ESXi thấy trạng thái tắt nguồn VM cuối cùng và tự tắt (mất khoảng 1 phút vì hiện tại không có máy nào khác đang chạy).
- Trong 2 phút còn lại, UPS sẽ cắt điện.
- Khi nguồn được phục hồi, ESXi khởi động và cấp nguồn cho tất cả các máy ảo. Máy giám sát UPS phải được khởi động trước (cùng cấu hình với lệnh tắt máy).
Tải xuống:
NUT cho Linux có thể được cài đặt từ gói.
Có thể tải xuống ứng dụng khách NUT gốc cho máy chủ ESXi bằng liên kết cuối cùng trên trang này: http://www.networkupstools.org/doad.html
Một số tập lệnh và tập tin conf của tôi có ở đây (chỉ hiển thị các dòng thay đổi): http://pastebin.com/KkEeanK1
Ghi chú:
Tất nhiên có nhiều chi tiết hơn, và tôi phải mất một thời gian để làm cho nó hoạt động như bình thường. Nhưng bây giờ nó thực hiện rất độc đáo. Hệ thống này giải thích cho các trường hợp khi bạn tắt máy ảo giám sát từ bên trong (tập lệnh vmware-tools không chạy) hoặc nếu máy chủ ESXi khởi tạo tắt máy VM (không có cờ / etc / killpower, do đó không tắt UPS), hoặc nếu đó là tắt máy ESXi (giống nhau). Điều quan trọng duy nhất là để VM này chạy ASAP sau khi khởi động máy chủ và tắt nó lần cuối (vì vậy thời gian lưu trữ là có thể dự đoán được - như đã nói ở trên, đó là khoảng 1 phút đối với tôi và 2 phút nữa tôi chỉ dự trữ trong trường hợp).
UPS của tôi giám sát Linux VM cũng là máy chủ chia sẻ Samba / NFS để lưu trữ sao lưu, máy chủ NAT / DHCP cho VM và một số dịch vụ nhẹ khác. Phải mất khoảng 22 MHz chia sẻ CPU ESXi và khoảng 10 MB RAM hoạt động khi không hoạt động. Do sử dụng NUT, bạn có thể cấp nguồn cho nhiều thiết bị hơn từ cùng một UPS nếu được yêu cầu và tất cả chúng có thể được tắt một cách duyên dáng. Không yêu cầu PowerChute và / hoặc Card màn hình mạng đắt tiền.