===== Установка агента ИБП APC для автоматического выключения ОС Debian GNU/Linux 10 (Buster) - APC PowerChute Network Shutdown 4.3 ===== {{:unix-linux:debian:stretch:pasted:20180416-102315.png }} В случае если физические серверы на базе **Debian GNU**/**Linux 10** "**Buster**" подключены к ИБП **APC**, и эти ИБП имеют контроллеры управления **APC Network Management Card** (**NMC**), мы можем настроить автоматическое штатное выключение ОС Linux в случае проблем с электропитанием. Для этого на стороне Linux-сервера нам потребуется установить и настроить специального программного агента, управляемого о стороны ИБП - **APC PowerChute Network Shutdown** (**PCNS**). Здесь приведён пример установки последней актуальной версии агента **APC PCNS 4.3 for Linux** на сервер **Debian Linux 9.3**. \\ ==== Устанавливаем поддержку Java ==== Программный пакет PCNS для своей работы требует предустановленной среды **Java Runtime Environment** (**JRE**). Хотя устанавливать его предварительно и не обязательно, так как JRE имеется в составе основного дистрибутива PCNS, однако стоит учесть то обстоятельство, что поставляемая в составе PCNS версия JRE не будет в дальнейшем автоматически обновляться в системе (например на неё не будут накладываться исправления безопасности), что само по себе не всегда допустимо. Поэтому мы установим сводобный аналог JRE - **OpenJDK Runtime Environment** из официальных репозиториев Debian. Это позволит нам в дальнейшем получать обновления безопасности для данного ПО из репозиториев Debian.
# apt-get update
# apt-get install default-jre
Посмотрим текущую установленную версию Java:
# java -version

openjdk version "11.0.3" 2019-04-16 OpenJDK Runtime Environment (build 11.0.3+1-Debian-1) OpenJDK 64-Bit Server VM (build 11.0.3+1-Debian-1, mixed mode, sharing)
Посмотрим какой путь к исполняемым файлам Java используется в системе на данный момент:
# update-alternatives --display java
java - auto mode link best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java link java is /usr/bin/java slave java.1.gz is /usr/share/man/man1/java.1.gz /usr/lib/jvm/java-11-openjdk-amd64/bin/java - priority 1111 slave java.1.gz: /usr/lib/jvm/java-11-openjdk-amd64/man/man1/java.1.gz
Как видим, фактический путь к исполняемым файлам java: ''/usr/lib/jvm/java-11-openjdk-amd64/bin/java''. Запомним этот путь, так как он потребуется нам в дальнейшем при установке PCNS. \\ ==== Устанавливаем APC PowerChute Network Shutdown ==== Загружаем пакет ''pcns430Linux-x86-64.tar.gz'' с [[http://www.apc.com/shop/ru/ru/categories/PowerChute-Network-Shutdown/_/N-auzzn7|официального сайта APC]] и распаковываем во временный каталог.
# mkdir ~/APC
# cd ~/APC
# gunzip pcns430Linux-x86-64.tar.gz
# tar -xf pcns430Linux-x86-64.tar
# cd ~/APC/Linux_x64/
В распакованном каталоге ''../Linux_x64'' можем найти несколько файлов, в числе которых скрипт установки ''install.sh''. Этот скрипт установки в рассматриваемой нами версии **PCNS 4.3** устроен таким образом, что в случае, если установка выполняется на **Linux**-системе, то скриптом будет предпринята попытка использовать **JRE** из поставляемого архива (''jre-11.0.1_linux-x64_bin.tar.gz''), который расположен рядом со скриптом установки. Даже не смотря на то, что в Linux-системе уже установлена такая же или более новая версия JRE. Для того, чтобы использовать вместо этой старой версии JRE более свежую, установленную нами ранее версию **Java 11.0.3**, достаточно просто произвольно переименовать архив со старой бандловой версией JRE, например, следующим образом: :
# mv ./jre-11.0.1_linux-x64_bin.tar.gz ./jre-11.0.1_linux-x64_bin.tar.gz.block
{{ :unix-linux:debian:buster:pasted:20190620-072311.png }} Теперь можем запускать скрипт установки:
# ./install.sh
На первый запрос скрипта установки жмём любую клавишу, например **Enter**, чтобы ознакомиться с лицензионным соглашением: {{ :unix-linux:debian:buster:pasted:20190620-072459.png }} Просмотрев лицензионное соглашение набираем **yes**, чтобы принять его положения: {{ :unix-linux:debian:buster:pasted:20190619-172627.png }} Соглашаемся с установкой в каталог по умолчанию ''/opt/APC/PowerChute'' Далее скрипт установки предложит нам указать путь к исполняемым файлам **Java**, так как ранее мы изменили имя файла с архивом JRE из поставки и скрипт не обнаружил предопределённое в его константах имя. Укажем путь к каталогу согласно ранее установленной нами версии Java: ''/usr/lib/jvm/java-11-openjdk-amd64/bin''. {{ :unix-linux:debian:buster:pasted:20190620-072854.png }} Если бы в нашей системе не было установленной версии **Java** и мы не меняли бы имя файла с архивом JRE (''jre-11.0.1_linux-x64_bin.tar.gz''), то скрипт установки PowerChute не стал бы задавать лишних вопросов и сразу бы выполнил установку PCNS с привязкой к собственной версии **JRE 11.0.1**, которую он автоматически распаковал бы из архивного файла в подкаталог ''/opt/APC/PowerChute/jre-11.0.1''. В нашем же случае скрипт должен обнаружить в указанном нами каталоге более новую версию **Java 11.0.3** и прописать её в настройках среды исполнения устанавливаемой версии PCNS. В завершении работы скрипта мы получим сообщение о том, что дальнейшую настройку установленного агента PCNS можно провести через веб-интерфейс, доступный по адресу ''https://ServerName:6547'' {{ :unix-linux:debian:buster:pasted:20190620-074111.png }} В процессе установки в систему будет установлена и запущена служба **systemd** c именем **PowerChute.service**. Эта служба будет использоваться для автоматического запуска службы **PowerChute** в процессе запуска системы. Проверим текущий статус службы и убедимся в том, что она работает, настроена на автоматический запуск, а также то, что используется указанная нами версия Java:
# systemctl status PowerChute.service
{{ :unix-linux:debian:buster:pasted:20190620-075142.png }} Убедимся в том, что в нашей Linux-системы появились TCP-прослушиватели, созданные процессом **java**:
# ss -lnptu | sort | grep java

tcp LISTEN 0 50 0.0.0.0:3052 0.0.0.0:* users:(("java",pid=4724,fd=55)) tcp LISTEN 0 50 0.0.0.0:6547 0.0.0.0:* users:(("java",pid=4724,fd=53)) udp UNCONN 0 0 0.0.0.0:3052 0.0.0.0:* users:(("java",pid=4724,fd=52)) udp UNCONN 0 0 0.0.0.0:60077 0.0.0.0:* users:(("java",pid=4724,fd=51))
Теперь нам нужно добавить правила в брандмауэр **Debian Buster**, разрешающие доступ к портам PowerChute. Обратите внимание на то, что в ходе работы скрипта установки PowerChute, этим скриптом предпринимается попытка создать правила брандмауэра, разрешающие подключения к портам PowerChute. Поэтому, во избежание некорректно созданных правил, после окончания выполнения скрипта установки PowerChute, рекомендуется проверить действующие правила брандмауэра. Как минимум, доступ к портам PowerChute **TCP**/**UDP 3052** необходимо открыть из сети, в которой находятся контроллеры управления ИБП **APC NMC**. Кроме того, может потребоваться открыть доступ к веб-странице PowerChute **TCP 6547** для сети администраторов, которые будут выполнять удалённую настройку PowerChute на нашем сервере. В случае, если управление брандмауэром выполняется через "модный" фреймворк **nftables**, то разрешающие правила могут выглядеть следующим образом:
# nft add rule ip filter INPUT ct state related,established counter accept
# nft add rule ip filter INPUT iifname "eth0" ip saddr 10.1.2.0/24 \
ct state new tcp dport 3052 counter accept \
comment \"Allow access to APC PowerChute Network Shutdown service from UPS NMC\"
# nft add rule ip filter INPUT iifname "eth0" ip saddr 10.1.2.0/24 \
ct state new udp dport 3052 counter accept \
comment \"Allow access to APC PowerChute Network Shutdown service from UPS NMC\"
# nft add rule ip filter INPUT iifname "eth0" ip saddr 10.1.1.0/24 \
ct state new tcp dport 6547 counter accept \
comment \"Allow access to APC PowerChute Network Shutdown Web UI over HTTPS\"
В том случае, если управление брандмауэром выполняется через **iptables**, то разрешающие правила могут выглядеть следующим образом
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -s 10.1.2.0/24 -i eth0 -p udp \ 
 -m state --state NEW -m udp --dport 3052 -m comment \
 --comment "Allow access to APC PowerChute Network Shutdown service from UPS NMC" -j ACCEPT
# iptables -A INPUT -s 10.1.2.0/24 -i eth0 -p tcp \ 
 -m state --state NEW -m tcp --dport 3052 -m comment \ 
 --comment "Allow access to APC PowerChute Network Shutdown service from UPS NMC" -j ACCEPT
# iptables -A INPUT -s 10.1.1.0/24 -i eth0 -p tcp \
 -m state --state NEW -m tcp --dport 6547 -m comment \ 
 --comment "Allow access to APC PowerChute Network Shutdown Web UI over HTTPS" -j ACCEPT
Теперь попробуем перейти к веб-странице управления агентом PCNS, которая должна быть доступна по адресу ''https://ServerName:6547''. Мы должны увидеть приглашение мастера первоначальной настройки PCNS: {{ :unix-linux:debian:stretch:pasted:20180416-095230.png }} Пройдём шаги мастера по подключению PCNS к контроллерам управления NMC от источников бесперебойного питания, к которым подключен наш Linux-сервер. В нашем примере выполнено отказоустойчивое подключение (**Redundant**) сразу к двум контроллерам NMC с разных ИБП, к которым подключен сервер разными блоками питания: {{ :unix-linux:debian:stretch:pasted:20180416-095405.png }} Обратите внимание на то, что если ранее не были открыты порты **TCP**/**UDP 3052**, то попытки подключения контроллеров NMC к агенту PCNS будут завершаться ошибками. По завершению процедуры первичного подключения к контроллерам управления ИБП мы получим доступ к основному веб-интерфейсу ПО PowerChute Network Shutdown, где сможем произвести дополнительные настройки реагирования на события связанные с изменением режима электропитания: {{ :unix-linux:debian:buster:pasted:20190619-191133.png }} Перезагрузим сервер, чтобы убедиться в том, что автоматический запуск службы **PowerChute** успешно работает после запуска ОС. \\ ==== Удаление APC PowerChute Network Shutdown ==== В случае возникновения необходимости удаления APC PowerChute Network Shutdown из Linux-системы, можно воспользоваться вызовом скрипта:
# /opt/APC/PowerChute/uninstall
{{ :unix-linux:debian:buster:pasted:20190619-193621.png }} ---- Дополнительные источники информации: * [[https://www.schneider-electric.com/en/download/document/APC_PMAR-9HBK44_EN/|Installation Guide PowerChute Network Shutdown v4.3 (APC_PMAR-9HBK44_EN)]] ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ |Debian GNU/Linux Duster 10.0 | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 19.06.2019 17:01 {{tag>Linux Debian "Debian 10" "Debian Buster" Networking UPS NMC APC PowerChute PCNS Java JRE OpenJDK}} ~~DISCUSSION~~