Документация по ОС FreeBSD Среда, 01.05.2024, 22:31
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Использование apcupsd в гетерогенных сетях
Предистория
 
На 1 из обьектов, в серверную, был приобретен UPS APC Smart-UPS 1000 RM. Куплен он был для обслуживания 2ух серверов, один из которых на базе Windows 2003 (ip 10.0.0.2), второй - на базе FreeBSD 5.3. (ip 10.0.0.1).
 
Оба сервера требовалось подключить к данному UPS, обеспечив корректное завершение работы системы в случае окончания срока работы батарей. Также требовалось оповещение пользователей домена AD о проблемах с питанием в серверной.
 
UPS имеет интерфейс USB и COM, но в комплекте прилогался только USB шнур. Сначала я попытался использовать родное ПО данного UPS. И вскоре убедился, что оно совершенно не предназначено для нормальной работы.
 
Основные проблемы встроенного ПО:
 
* Непозволяетназначатьдействия (например, запуск внешних  программ) на возникащие события.
 
* Монстроидально.Данныйшедевр разработчики APC написали на  Java+Win32 API. Причем ПО разбито на Агента (сбор данных) + Сервер (работа с агентами) + Консоль (управление сервером). Кроме того при этом я получил не отключаемый web server и 40 Mb отожранной памяти (сервер+агент).
 
* Отсутствие поддержки BSD. Из поддержки OSS систем есть только поддержка Linux (причем ТОЛЬКО агент и тоже на Java+JNI!), работа по стандартным протоколам (snmp) отсутствует.
 
Apcupsd
 
Убедившись в невозможности встроенного ПО решить поставленную задачу я решил воспользоваться программой Apcupsd (http://www.apcupsd.com/). Начиная с версии 3.10.17 в ней реализована работа с USB UPS в BSD системах. Также доступна win32 версия программы (на базе cygwin). Apcupsd позволяет работать в режиме клиент/сервер, что и требуется для данной задачи.
 
Установка APCUPSD на FreeBSD
 
Так как в APCUPSD/WIN32 не реализована работа с USB, подключаем UPS к FreeBSD серверу. Устанавливаем apcupsd из портов:
 
#cd /usr/ports/sysutils/apcupsd/;make install clean
 
В диалоге опций выбираем работу с USB. После этого:
 
# cd /usr/local/etc/rc.d;cp apcupsd.sh.sample apcupsd.sh
 
Теперь правим конфигурацию apcupsd (/usr/local/etc/apcupsd/apcupsd.conf).
 
Пример конфигурации apcupsd на FreeBSD:
 
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/spool/lock
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 10.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS netmaster
UPSMODE net
NETPORT 6666
#ip адрес windows машины
slave 10.0.0.2
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
 
Для корректной работы usb ups с apcupsd необходимо закомментировать в файле конфигурации ядра устройство uhid и пересобрать ядро. После установки ядра перезагружаем машину. UPS должен быть виден в системе как устройство /dev/ugen0.
 
Для проверки работоспособности набираем apcaccess - это должно выдать нам статистику UPS. Если всё работает - самое время перейти к настройке windows.
 
Установка APCUPSD на Windows 2003
 
Скачав на сайте скомпиленный win32 бинарник, я распаковал архив в папку c:\apcupsd. После чего запустил c:\apcupsd\bin\setup.bat для создания win32 сервиса. Конфигурация apcupsd/win32 находится в файле \apcupsd\etc\apcupsd\apcupsd.conf.
 
Пример конфигурации apcupsd на Windows:
 
UPSCABLE ether
UPSTYPE apcsmart
DEVICE
LOCKFILE /apcupsd/etc/apcupsd
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 10.0.0.2
NISPORT 3551
EVENTSFILE /apcupsd/etc/apcupsd/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS netslave
UPSMODE net
NETPORT 6666
# IP BSD сервера
MASTER 10.0.0.1
STATTIME 0
STATFILE /apcupsd/etc/apcupsd/apcupsd.status
LOGSTATS off
DATATIME 0
Запускаемapcupsd командой net start apcupsd. Проверяем работу запуском apcaccess. Через некотое время сервис должен присоединиться к серверу (у меня почему-то этот процесс проходит больше минуты). В файле \apcupsd\etc\apcupsd\apccontrol расположены команды, выполняемые при срабатывании событий. В секцию onbattery я добавил строку
 
/windows/system32/net.exe send /DOMAIN "WARNING: Server running on UPS battaries"
 
для оповещения пользователей домена о проблемах. По непонятной мне причине, будучи запущенным от пользвателя system, сервис не выполнял оповещение. После изменения пользователя сервиса оповещения стали рассылаться.
 
Итог
 
Все работает так как и требовалось изначально. При желании к apcupsd можно прикрутить web интерфейс, mrtg и прочие рюшечки и свистелки.
 
 
Автор: Alex Samorukov
Категория: Net | Добавил: oleg (14.11.2007)
Просмотров: 967 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024