Home » Виртуализация » Hyper-V » Установка и настройка apcupsd на Hyper-V Server

Установка и настройка apcupsd на Hyper-V Server

Ранее я уже рассказывал об использовании утилиты управления упсами компании APC на примере гипервизоров Xenserver. Сейчас хочу рассказать о том, как установить и настроить apcupsd на Hyper-V Server. Это бесплатный гипервизор компании Microsoft без графической оболочки. Вся трудность только в этом, процесс установки на обычный сервер не представляет никаких проблем. Хотя тут тоже все просто, но может показаться кому-то не очевидным.

Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.

Введение

Ранее я рассказывал об устновке и настройке apcupsd на XenServer. Вся теоретическая часть есть там в начале и в конце статьи. В данном случае я предлагю использовать apcupsd в качестве клиента, который получает информацию об электропитании по сети от сервера, в которому подключен ups напрямую. Сам же сервер hyperv подключен к другому ups, который никак не мониторится и не управляется.

После отключения электричества гипервизор hyperv подождет момента, когда заряд батареи упса, подключенного к основному серверу упадет до уровня 50% или время работы от батареи будет ниже 20 минут и начнет завершение своей работы.

Установка apcupsd на hyper-v

Я буду считать, что вы установили и настроили бесплатный гипервизор Hyper-V по моей статье. Если это не так, то ориентируйтесь сами по ходу дела. Сначала нам нужно скачать программу под windows c официального сайта. Скачанный файл положите в любую папку на гипервизоре. В моем случае это папка C:\soft. Подключайтесь к гипервизору по rdp и с помощью командной строки переходите в эту папку:

Запуск установки apcupsd на Hyper-V

Запускайте через командную строку установочный файл. Запустится стандартный инсталлятор:

Setup Wizard

Нажимаете Next и переходите к пункту выбора компонентов. Так как к моему серверу упс не подключается, мне не нужны драйвера, достаточно только службы, поэтому я вибираю только ее. Если планируете упс подключить к гипервизору, установите еще и драйвера:

Выбираем компоненты для установки

Выбираете пункт Install Apcupsd as a Service, запускать ее пока не надо

Установить apcupsd как службу

Если все прошло успешно, в конце увидите сообщение:

Успешная установка

На этом установка apcupsd на бесплатный гипервизор hyper-v закончена. Переходим к настройке.

Настройка apcupsd

На компьютере, с которого происходит управление гипервизором открываете папку на серере, куда установили apcupsd. В моем случае это c:\apcupsd. Дальше в папке \etc\apcupsd располагается конфигурационный файл apcupsd.conf, открываете его и редактируете. Не копируйте мой файл полностью, а укажите необходимые параметры у себя. В моем случае конфиг получился такой:

## apcupsd.conf v1.1 ##
# 
# for apcupsd release 3.14.14 - win32-mingw
#
# "apcupsd" POSIX config file

UPSCABLE ether
UPSTYPE net
DEVICE 192.168.0.1:3551
SCRIPTDIR c:\apcupsd\etc\apcupsd
PWRFAILDIR c:\apcupsd\etc\apcupsd
NOLOGINDIR c:\apcupsd\etc\apcupsd
ONBATTERYDELAY 6
BATTERYLEVEL 50
MINUTES 20
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER off
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE c:\apcupsd\apcupsd.events
EVENTSFILEMAX 100
UPSCLASS standalone
UPSMODE disable
STATTIME 10
STATFILE c:\apcupsd\apcupsd.status
LOGSTATS off
DATATIME 0

Теперь можно запустить службу Apcupsd UPS Monitor в списке служб гипервизора. Сделать это можно с машины, которая настроена на управление гипервизором. В случае успешного запуска в папке c:\apcupsd появятся 2 файла:

  • apcupsd.events
  • apcupsd.status

В первом файле будет информация о старте сервиса:

2016-09-12 15:59:40 +0300  apcupsd 3.14.14 (31 May 2016) mingw startup succeeded

Во втором информация об UPS:

APC : 001,027,0701
DATE : 2016-09-12 16:28:58 +0300 
HOSTNAME : xm-hyperv
VERSION : 3.14.14 (31 May 2016) mingw
UPSNAME : xm-xen02
CABLE : Ethernet Link
DRIVER : NETWORK UPS Driver
UPSMODE : ShareUPS Master
STARTTIME: 2016-09-12 15:59:40 +0300 
MASTERUPD: 2016-09-12 16:28:58 +0300 
MASTER : 192.168.0.1:3551
MODEL : Smart-UPS C 1500 
STATUS : ONLINE SLAVE 
BCHARGE : 100.0 Percent
TIMELEFT : 75.0 Minutes
MBATTCHG : 50 Percent
MINTIMEL : 20 Minutes
MAXTIME : 0 Seconds
BATTV : 27.3 Volts
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x07000408
SERIALNO : AS1525211660
NOMBATTV : 24.0 Volts
FIRMWARE : UPS 10.0 / ID=1005
END APC : 2016-09-12 16:28:58 +0300

На этом настройка apcupsd закончена. При наступлении времени выключения, гипервизор завершит работу всех виртуальных машин и выключится сам. Главное правильно подобрать время, чтобы сам гипервизор успел выключиться и не высохли батареи того упса, к которому подключен он сам. Ставьте приличный запас на всякий случай.

Обязательно нужно проверить, что на всех виртуальных машинах установлены службы интеграции, чтобы гипервизор мог корректно выключать виртуальные машины. Я не проверял, что будет, если службы интеграции не установлены. Может быть два варианта - либо принудительно завершит работу, либо вообще не завершит работу ни виртуалки, ни себя, а потом аварийно выключится, когда заряд батарей закончится.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Вопрос корректного завершения работы гипервизоров при подключении к UPS достаточно актуальный. Я не однократно сталкивался с такими вопросами в итернете. Какого-то надежного и популярного решения для этого я не встречал. В случае с XenServer или Hyper-V все решается относительно просто с помощью apcupsd. С VMware будет посложнее, но тоже возможно. Там UPS пробрасывают в виртуалку, настраивают apcupsd и с помощью скриптов по ssh отправляют команду на выключение на гипервизор. Я как-то пробовал так сделать, сходу не получилось, а отладить решение не было возможности. В итоге не стал разбираться. Данная схема мной уже проверена на практике и успешно работает.

Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

17 комментариев

  1. Здравствуйте Владимир! Спасибо за знакомство с apcupsd
    Сервер с двумя блоками питания, один в розетку, второй через ИБП APC серии Back-UPS. После сбоя электричества ИБП не включился.
    В диспетчере устройств Hyper-V ибп отображается на порту USB и живое.
    Можно ли при помощи apcupsd включить ИБП? В apcupsd.conf не нашел подходящего параметра.

    • Не знаю, не видел такой возможности. УПСы по идее только с кнопки включаются, если они совсем обесточены.

      • Кнопкой его не выключали. Он разрядился, а после появления электричества, а так полагаю зарядился и доступен по USB

  2. Александр

    Доброе.
    А email-уведомления не пробовали настривать? есть какие-то подводные там?...
    Я отредактировал два файла on|offbattery, но что-то писем не шлет...

    • Не пробовал. Я все уведомления замыкаю на мониторинг Zabbix. Статус apcupsd я там же наблюдаю.

      • Александр

        У меня уведомления заработали на другом сервере, который подключен к этому hyper-v УПСу. А из под самого гипервизора уходить не хотят. Не понятно пока что режет, но не файер.

      • Александр

        Разобрался. В Hyper-v server нет встроенных CDO библиотек для исполнения этого скрипта.
        Но их установка тот еще головняк, просто dll не зарегистрировать, у нее куча других связей.

  3. Виталий

    Здравствуйте. А как сделать так, что бы, после выключения компа, отключался блок розеток, а когда электричество появлялось - то Ups включался и подавал питание на розетки?

    • Не знаю. Это зависит от возможностей самого упса.

      • Виталий

        Еще такой момент, когда система выключается, выходит сообщение system halted, а комп не отключается, то есть, вентиляторы крутятся. Poweroff - все норм, отключается полностью.

  4. Михаил

    Здравствуйте. А не подскажите, правильно ли я сделал, хочется реализовать данную функцию, на Windows Server 2012 R2, но UPS подключены по USB APC 1500 и 1000.

    Получилось:

    UPSNAME Smart-UPS1
    UPSCABLE usb
    UPSTYPE usb
    DEVICE
    ONBATTERYDELAY 6
    BATTERYLEVEL 5
    MINUTES 3
    TIMEOUT 0
    ANNOY 0
    ANNOYDELAY 60
    NOLOGON disable
    NETSERVER on
    EVENTSFILE /var/log/apcupsd.events
    EVENTSFILEMAX 100
    UPSCLASS standalone
    UPSMODE disable
    STATTIME 60
    STATFILE /var/log/apcupsd.status
    LOGSTATS on
    DATATIME 60

    • Не понял, в чем вопрос? Формат конфига apcupsd на всех системах одинаковый.

      • Михаил

        Вопрос в коде, все верно ли написано, потому что ругается, что не видит UPSы, но при этом в Диспетчере они есть

      • "31.08.2018 at 13:07
        Здравствуйте. А не подскажите, правильно ли я сделал, хочется реализовать данную функцию, на Windows Server 2012 R2, но UPS подключены по USB APC 1500 и 1000."

        Тоже самое, оборудование такое же Windows Server 2012 R2 и USB APC 1500

  5. один из вариантов установки apcupsd требует замены драйверов на те, что идут в комплекте с apcupsd, делается это командой
    pnputil -i -a c:\apcupsd\driver\apcupsd.inf
    потом вылезет окошко, на которое надо согласиться.

    • При ручном обновлении драйвера из диспетчера устройств ни в какую не хотел стартовать драйвер. Благодарю за совет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar