Установка и Настройка Network UPS Tools (NUT) на AlmaLinux 9: Подробное Руководство
Обеспечение Бесперебойного Питания и Управления Системными Завершениями
В современном мире, где надежность инфраструктуры является ключевым фактором, обеспечение бесперебойного питания для серверов и критически важного оборудования имеет первостепенное значение. Network UPS Tools (NUT) — это мощный, открытый инструмент для мониторинга источников бесперебойного питания (ИБП) и управления ими. Он позволяет автоматизировать действия, такие как корректное завершение работы системы при отключении электроэнергии, предотвращая потерю данных и повреждение оборудования. Это руководство предоставит вам всеобъемлющие инструкции по установке и настройке NUT на AlmaLinux 9, обеспечивая стабильность и безопасность вашей системы.
Основные Выводы
- AlmaLinux 9 представляет собой надежную и стабильную альтернативу RHEL, что делает ее отличным выбором для развертывания критически важных сервисов, включая NUT.
- Network UPS Tools (NUT) является универсальным решением для мониторинга и управления ИБП, поддерживающим сотни моделей устройств и различные операционные системы, включая Linux, macOS и BSD.
- Установка NUT на AlmaLinux 9 включает в себя настройку сервера (
upsd) для связи с ИБП и клиента (upsmon) для мониторинга состояния ИБП и выполнения предопределенных действий, таких как корректное завершение работы.
Понимание Network UPS Tools (NUT)
Network UPS Tools (NUT) — это комплекс программного обеспечения, предназначенный для взаимодействия с устройствами питания, такими как ИБП, блоки распределения питания (PDU) и контроллеры солнечной энергии. Его основная цель — обеспечить поддержку этих устройств, позволяя системам безопасно завершать работу в случае сбоя питания. NUT может работать как в автономном режиме, так и в клиент-серверной конфигурации, что делает его идеальным для различных сценариев, от домашнего использования до корпоративных дата-центров.
Архитектура NUT: Сервер и Клиент
Архитектура NUT обычно включает два основных компонента: сервер и клиент. Сервер NUT, обычно называемый upsd, подключается непосредственно к ИБП (обычно через USB или серийный порт) и собирает данные о его состоянии. Затем он делает эту информацию доступной для клиентов в сети. Клиент NUT, upsmon, мониторит сервер upsd и инициирует действия, такие как отправка уведомлений или завершение работы системы, когда условия питания достигают определенных пороговых значений.
Основные Компоненты NUT
- Драйверы ИБП: Программы, которые взаимодействуют непосредственно с ИБП. NUT поддерживает широкий спектр драйверов для различных марок и моделей ИБП.
- upsd (UPS Daemon): Серверный процесс, который собирает данные от драйвера ИБП и предоставляет их клиентам по сети.
- upsmon (UPS Monitor): Клиентский процесс, который мониторит состояние ИБП через
upsdи выполняет предопределенные действия (например, завершение работы) при наступлении событий питания. - upscmd: Утилита командной строки для отправки команд ИБП через
upsd. - upsrw: Утилита для чтения и записи переменных конфигурации ИБП.
Подготовка AlmaLinux 9 к Установке NUT
Прежде чем приступить к установке NUT, важно убедиться, что ваша система AlmaLinux 9 готова. AlmaLinux 9 — это бесплатная и открытая операционная система, созданная на основе исходного кода Red Hat Enterprise Linux (RHEL), что обеспечивает ее стабильность и совместимость. Перед началом установки необходимо выполнить несколько предварительных шагов.
Установка AlmaLinux 9
Если у вас еще не установлена AlmaLinux 9, вы можете загрузить ISO-образ с официального сайта AlmaLinux. Процесс установки AlmaLinux 9 интуитивно понятен и включает в себя выбор языка, настройку часового пояса, создание пользователей и разбиение диска. Для создания загрузочного USB-накопителя можно использовать такие инструменты, как Fedora Media Writer или Rufus. После установки рекомендуется выполнить начальные настройки системы и обновить все пакеты.
Рабочий стол AlmaLinux 9, демонстрирующий современный интерфейс.
Обновление Системы
Всегда начинайте с обновления вашей системы, чтобы убедиться, что у вас установлены последние пакеты и исправления безопасности. Откройте терминал и выполните следующую команду:
sudo dnf update -y
Установка Необходимых Зависимостей
Хотя NUT обычно поставляется с большинством необходимых зависимостей, убедитесь, что у вас есть основные инструменты для сборки и управления пакетами. Для установки NUT из исходного кода могут потребоваться дополнительные инструменты, такие как git, gcc, make и библиотеки разработки.
sudo dnf install -y git gcc make libusb-devel systemd-devel
Установка Network UPS Tools (NUT) на AlmaLinux 9
Установка NUT на AlmaLinux 9 может быть выполнена двумя основными способами: из стандартных репозиториев DNF или путем сборки из исходного кода. Для большинства пользователей рекомендуется использовать DNF, так как это проще и обеспечивает лучшую управляемость зависимостями.
Установка NUT через DNF
Самый простой способ установить NUT на AlmaLinux 9 — это использовать менеджер пакетов DNF. Пакеты NUT доступны в стандартных репозиториях AlmaLinux.
sudo dnf install nut nut-client nut-server -y
Эта команда установит все необходимые компоненты NUT, включая драйверы, серверный демон (upsd) и клиентский демон (upsmon).
Установка NUT из Исходного Кода (для опытных пользователей)
Для пользователей, которым требуется новейшая версия NUT или специфические опции компиляции, можно собрать NUT из исходного кода. Этот процесс требует немного больше усилий, но дает полный контроль над сборкой.
- Клонирование репозитория NUT:
cd /tmp git clone https://github.com/networkupstools/nut.git cd nut - Генерация файлов сборки:
./autogen.sh - Настройка сборки:
Вы можете настроить опции сборки с помощью команды
./configure. Например, для установки в стандартное расположение:./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/varДля USB-ИБП, убедитесь, что драйвер
usbhid-upsвключен. Обычно он включен по умолчанию, если установлены необходимые библиотеки. - Компиляция и Установка:
make -j$(nproc) sudo make installПосле установки необходимо обновить кэш системных демонов:
sudo systemctl daemon-reload
Настройка Network UPS Tools (NUT)
После установки NUT необходимо настроить конфигурационные файлы для взаимодействия с вашим ИБП и определения поведения системы при сбоях питания. Основные файлы конфигурации NUT находятся в каталоге /etc/nut/.
Настройка ups.conf
Файл /etc/nut/ups.conf определяет ваш ИБП и используемый драйвер. Вам нужно добавить новую секцию для вашего ИБП.
Пример для ИБП, подключенного по USB (например, CyberPower CP1500PFCLCD, который использует драйвер usbhid-ups):
sudo nano /etc/nut/ups.conf
Добавьте следующие строки, заменив myups на желаемое имя для вашего ИБП и /dev/usb/hiddev0 на соответствующий путь к USB-устройству (или auto для автоматического определения):
[myups]
driver = usbhid-ups
port = auto
desc = "My Home UPS"
Чтобы найти правильный драйвер для вашего ИБП, вы можете обратиться к списку совместимости оборудования NUT.
Настройка upsd.conf
Файл /etc/nut/upsd.conf управляет поведением сервера upsd, включая адреса, на которых он прослушивает подключения, и параметры доступа.
sudo nano /etc/nut/upsd.conf
Для автономной установки или для прослушивания только локального хоста (что является настройкой по умолчанию), вы можете оставить его следующим образом:
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
Если вы хотите, чтобы другие системы в вашей сети могли подключаться к этому серверу NUT, вам нужно добавить IP-адрес сетевого интерфейса, на котором upsd должен прослушивать соединения. Например, если ваш сервер имеет IP-адрес 192.168.1.100:
LISTEN 192.168.1.100 3493
Настройка upsd.users
Файл /etc/nut/upsd.users определяет пользователей, которые могут подключаться к upsd, их пароли и разрешения. Это критически важно для безопасной работы.
sudo nano /etc/nut/upsd.users
Добавьте пользователя, которого upsmon будет использовать для мониторинга, и пользователя, который может выполнять команды выключения. Например:
[admin]
password = mysecurepassword
actions = SET
actions = FSD
instcmds = ALL
upsmon master
[upsmonitor]
password = anothersecurepassword
upsmon slave
admin: Пользователь с полными правами, который может инициировать завершение работы (FSD) и отправлять другие команды (SET,ALL).upsmonitor: Пользователь для клиентов, которые только мониторят ИБП.
Настройка upsmon.conf
Файл /etc/nut/upsmon.conf определяет, как клиент upsmon будет мониторить ИБП и какие действия он будет выполнять при сбоях питания. Этот файл должен быть настроен как на сервере (для мониторинга собственного ИБП), так и на любых клиентских машинах.
sudo nano /etc/nut/upsmon.conf
Для сервера, который непосредственно подключен к ИБП (режим Master):
MONITOR myups@localhost 1 admin mysecurepassword master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/nut/powerdown.flg
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL
NOTIFYFLAG COMMOK SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL
Ключевые директивы:
MONITOR myups@localhost 1 admin mysecurepassword master: Указываетupsmonмониторить ИБП с именемmyupsна локальном хосте (localhost) с одним устройством (1), используя пользователяadminс указанным паролем и в режимеmaster.SHUTDOWNCMD "/sbin/shutdown -h +0": Команда, которая будет выполнена для корректного завершения работы системы.NOTIFYFLAG: Определяет, какие уведомления отправлять и каким образом (например, в системный журнал, на все терминалы или выполнять внешнюю команду).
Настройка nut.conf
Файл /etc/nut/nut.conf определяет, какой режим NUT будет работать (standalone, netserver, netclient).
sudo nano /etc/nut/nut.conf
Для сервера, к которому подключен ИБП, установите:
MODE=standalone
Или, если у вас несколько клиентов, которые будут подключаться к этому серверу, установите:
MODE=netserver
Для клиентских машин, которые будут подключаться к удаленному серверу NUT, установите:
MODE=netclient
Запуск и Тестирование NUT
После настройки всех конфигурационных файлов вы можете запустить службы NUT и проверить их работу.
Запуск Служб NUT
Сначала запустите драйвер ИБП, затем upsd и, наконец, upsmon.
sudo systemctl start nut-driver
sudo systemctl start nut-server
sudo systemctl start nut-monitor
Включите службы NUT для автоматического запуска при загрузке системы:
sudo systemctl enable nut-driver
sudo systemctl enable nut-server
sudo systemctl enable nut-monitor
Проверка Статуса NUT
Вы можете проверить статус каждой службы, чтобы убедиться, что они работают корректно:
sudo systemctl status nut-driver
sudo systemctl status nut-server
sudo systemctl status nut-monitor
Проверка Подключения к ИБП
Используйте команду upsc для получения информации о вашем ИБП. Замените myups на имя, которое вы указали в ups.conf:
upsc myups
Вы должны увидеть подробную информацию о состоянии вашего ИБП, включая уровень заряда батареи, входное и выходное напряжение и т.д.
Если вы столкнулись с ошибками, такими как "Can't connect to UPS", убедитесь, что драйвер ИБП выбран правильно и ИБП подключен. Проверьте логи системы для получения дополнительной информации:
sudo journalctl -u nut-driver
sudo journalctl -u nut-server
sudo journalctl -u nut-monitor
Оценка эффективности конфигурации NUT на AlmaLinux 9.
Расширенная Конфигурация и Мониторинг
После базовой настройки NUT можно рассмотреть более продвинутые функции и методы мониторинга.
Настройка Клиентов NUT
Если у вас несколько систем, подключенных к одному ИБП, вы можете настроить их как клиенты NUT. На клиентских машинах также необходимо установить пакеты nut-client и настроить upsmon.conf, но в режиме slave.
Пример upsmon.conf для клиента:
MONITOR myups@192.168.1.100 1 upsmonitor anothersecurepassword slave
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL
NOTIFYFLAG COMMOK SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL
Здесь 192.168.1.100 — это IP-адрес сервера NUT.
Интеграция с Системными Уведомлениями
NUT предоставляет широкие возможности для отправки уведомлений. Вы можете настроить upsmon для отправки электронных писем, выполнения скриптов или записи событий в системный журнал при изменении состояния ИБП.
Для более сложных сценариев можно использовать upssched, который позволяет выполнять команды или скрипты на основе событий, таких как низкий заряд батареи или длительное отсутствие питания.
sudo nano /etc/nut/upssched.conf
Пример правила в upssched.conf для отправки уведомления по электронной почте:
CMDSCRIPT /usr/local/bin/ups_notify.sh
PIPEFN /var/run/nut/upssched.pipe
LOCKFN /var/run/nut/upssched.lock
AT ONBATT * EXECUTE onbatt-notify
AT LOWBATT * EXECUTE lowbatt-shutdown
Создайте скрипт /usr/local/bin/ups_notify.sh (убедитесь, что он исполняемый):
#!/bin/bash
# Скрипт для отправки уведомлений
case $1 in
onbatt-notify)
echo "UPS is on battery power!" | mail -s "UPS Alert" your_email@example.com
;;
lowbatt-shutdown)
echo "UPS battery is low, shutting down!" | mail -s "UPS Critical Alert" your_email@example.com
/sbin/shutdown -h +0
;;
esac
Мониторинг Через Веб-Интерфейс
Для визуализации данных NUT существуют сторонние решения, такие как PeaNUT — небольшой дашборд для Network UPS Tools. Это может быть полезно для централизованного мониторинга нескольких ИБП в домашней лаборатории или малом офисе.
Сводка Конфигурационных Файлов NUT
В этой таблице представлена сводка основных конфигурационных файлов NUT и их назначение, что поможет вам лучше ориентироваться в настройках.
| Файл | Описание | Ключевые Директивы |
|---|---|---|
/etc/nut/ups.conf |
Определяет параметры ИБП, включая драйвер и порт подключения. | [ups_name], driver, port, desc |
/etc/nut/upsd.conf |
Конфигурация сервера upsd, управление доступом и адресами прослушивания. |
LISTEN, MAXAGE, ACL |
/etc/nut/upsd.users |
Определяет пользователей, которые могут подключаться к upsd, их пароли и разрешения. |
[username], password, actions, instcmds, upsmon |
/etc/nut/upsmon.conf |
Определяет поведение клиента upsmon, включая мониторинг ИБП и команды завершения работы. |
MONITOR, SHUTDOWNCMD, NOTIFYFLAG, POLLFREQ |
/etc/nut/nut.conf |
Устанавливает режим работы NUT (standalone, netserver, netclient). | MODE |
/etc/nut/upssched.conf |
Планировщик команд для выполнения скриптов на основе событий ИБП. | CMDSCRIPT, AT |
Видео-руководство: Установка NUT Server
Для наглядности процесса установки и настройки NUT Server, особенно на Linux, вы можете ознакомиться с видео-руководством от Techno Tim. Хотя видео демонстрирует установку на Raspberry Pi, основные принципы и конфигурационные шаги применимы и к AlmaLinux 9, поскольку NUT универсален для различных дистрибутивов Linux.
"Network UPS Tools (NUT Server) Ultimate Guide" от Techno Tim, показывающий установку и настройку NUT Server.
Это видео детально описывает процесс установки NUT, настройку сервера на Linux и подключение клиентов, а также рассматривает продвинутые функции, такие как визуализация данных NUT и настройка мониторинга и оповещений. Обратите внимание на разделы, посвященные конфигурации файлов ups.conf, upsd.conf, upsd.users и upsmon.conf, так как они являются ключевыми для успешной настройки на AlmaLinux 9.
Часто Задаваемые Вопросы (FAQ)
Как проверить, какой драйвер ИБП использовать?
dmesg или lsusb, чтобы определить производителя и модель, а затем искать соответствующий драйвер в документации NUT.Что делать, если ИБП не определяется после настройки NUT?
/dev/usb/hiddev0 или /dev/ttyS0). Убедитесь, что пользователь, под которым запущен драйвер NUT, имеет к нему доступ. Также проверьте системные журналы (journalctl -u nut-driver) на наличие ошибок.Можно ли управлять несколькими ИБП с одного сервера NUT?
/etc/nut/ups.conf с уникальным именем и соответствующим драйвером/портом.Как настроить отправку уведомлений по электронной почте?
upssched в комбинации со скриптом, который вызывает команду mail или sendmail для отправки писем при наступлении определенных событий ИБП.Можно ли использовать NUT для завершения работы виртуальных машин?
Заключение
Установка и настройка Network UPS Tools (NUT) на AlmaLinux 9 — это важный шаг к повышению надежности и безопасности вашей серверной инфраструктуры. Независимо от того, управляете ли вы одним сервером или комплексной средой с несколькими устройствами, NUT предоставляет гибкое и мощное решение для мониторинга ИБП и автоматического завершения работы системы. Следуя этому подробному руководству, вы сможете успешно развернуть NUT, защитив свои данные и оборудование от неожиданных сбоев питания.
Рекомендуемые Запросы
- Настройка оповещений NUT через электронную почту на AlmaLinux
- Управление несколькими ИБП с помощью NUT на одной системе
- Интеграция Network UPS Tools с Proxmox VE
- Решение проблем с драйверами USB-ИБП в NUT