Настройка apcupsd centos 7

Обновлено: 03.07.2024

После установки пакет запускается автоматически с настройками по умолчанию.

Настройка сервиса

Конфигурационные файлы пакета хранятся в каталоге /etc/apcupsd .

После установки пакет запускается автоматически с настройками по умолчанию,
а именно в предположении, что ИБП подключен через интерфейс USB.
Параметры конфигурации сервиса задаются в файле /etc/apcupsd/apcupsd.conf .
Файл снабжен подробными комментариями по значениям параметров.
После изменения файла конфигурации служба должна быть перезапущена:

Настройка реакции на события

Стандартная реакция сервиса apcupsd на события, о которых сообщает ИБП, определяется в файле /etc/apcupsd/apccontrol .

Файл представляет собой сценарий для интерпретатора /bin/sh.

В файле предусмотрены общепринятые действия на стандартные ситуации с ИБП.

Изменять файл /etc/apcupsd/apccontrol не рекомендуется, так как он может быть перезаписан при обновлении пакета.

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

Пользовательские сценарии автоматически выполняются перед действиями основного сценария,
причем, если пользовательский сценарий окончится с кодом завершения 99, действие основного сценария выполнено не будет.

Пользовательские сценарии так же, как и основной сценарий, представляют собой обычные сценарии /bin/sh.

По умолчанию предусмотрены следующие сценарии:

  • changeme — пользовательский сценарий реакции на необходимость замены батареи ИБП
  • commfailure - пользовательский сценарий реакции на потерю связи с ИБП
  • commok - пользовательский сценарий реакции на восстановление связи с ИБП
  • killpower - пользовательский сценарий реакции на аварийное отключение ИБП. Вызывается перед тем, как ИБП отключит питание компьютера.
  • offbattery - пользовательский сценарий реакции восстановление основного электропитания
  • onbattery - пользовательский сценарий реакции на потерю основного электропитания

В пакет apcupsd входят:

    инструмент командной строки apcaccess, позволяющий получать информацию о состоянии ИБП;

инструмент командной строки apctest, позволяющий выполнять настройки ИБП. Перед использованием этого инструмента необходимо остановить службу apcupsd, после использования - запустить:

sudo systemctl stop apcupsd
sudo apctest
sudo systemctl start apcupsd

В пакете apcupsd имеется встроенная возможность получения информации о состоянии ИБП по сети.

  1. осуществляется с помощью сценариев CGI;
  2. осуществляется без авторизации;
  3. при использовании в Astra Linux SE сервер apache2 должен быть переключен в режим "AstraMode off".

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

Понадобилось настроить автоматическое выключение двух гипервизоров Xenserver 6.5 при отключении электроэнергии с помощью apcupsd. Информация уже не очень актуальная, так как сейчас вышел новый гипервизор под версией 7, но тем не менее, хочу зафиксировать свой опыт, может еще кому-нибудь пригодится. Подсказу для XenServer 7 тоже приведу. Был приобретен один UPS APC Smart-UPS SC 1500VA/865W и подключен по USB порту к одному из xenserver.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

Идея решения заключается в том, что мы ставим демон управления упсом apcupsd на один из xenserver, а второй получает состояние упса по сети с первого сервера. Когда пропадет электричество, первый гипервизор напрямую получает информация от упса о том, что надо выключиться, а второй на пару минут раньше получает эту информацию от первого гипервизора. В итоге они оба благополучно завершают свою работу.

Идея не нова, утилиту apcupsd я постоянно использую в тех или иных случаях. Она очень удобна и функциональна. Позволяет настроить завершение работы на целом парке всевозможных систем при наличии всего одного упса, подключенного по usb к какому-нибудь серверу. Это достигается благодаря кросплатформенности утилиты. Конкретно в моем случае, слушать состояние упса будут еще и другие серверы на базе линукс и windows. Но в рамках данной статьи я рассмотрю вариант с двумя серверами. По аналогии вы можете добавить сколько угодно серверов.

Устанавливаем apcupsd на XenServer

У меня 2 гипервизора, соответственно установку нужно будет произвести на оба. Отличия будут позже в конфигурационных файлах. Работать будем на следующих версиях:

В зависимости от установленных обновлений, какие-то пакеты вам будут не нужны. Я приведу полный набор пакетов, которые нужно установить. Мне, к примеру, пакет glibc-common не понадобился, уже был установлен. Устанавливаем необходимые пакеты:

Скачиваем остальные пакеты. Если ссылки со временем умрут, поищите в гугле по названию пакета:

Установка apcupsd закончена. Все достаточно просто и быстро. Я сделаю подсказку для тех, кто пападет сюда в поиске информации по установке apcupsd на XenServer 7. У меня нет возможности проверить, но скорее всего все заработает, если вы просто установите пакеты для версии centos 7, а не 5, как в моем примере. XenServer базируется на дистрибутиве CentOS, поэтому пакеты подходят. Попробуйте установить apcupsd по этой ссылке, а mailx из пакетов в стандартном репозитории и у вас должно все заработать:

Двигаемся дальше и настроим apcupsd в соответсвии с нашими задачами.

Настройка apcupsd

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

Я не буду приводить описание параметров, они очень хорошо прокомментированы разработчиками, там все понятно. Обращаю внимание на адрес 192.168.0.1. В данном случае это адрес сервера, на котором установлен apcupsd. По этому адресу к нему будут обращаться остальные серверы за состоянием упса.

Редактируем конфигурационный файл на клиенте:

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

Теперь запускаем на обоих серверах службу:

Проверяете лог событий и файл состояния упса. В логе должны увидеть информацию о том, что сервис запущен, в файле состояния информацию от упса. На сервере и клиенте она будет разная.

apcupsd server status

apcupsd client status

Одно важное замечание. Не забудьте открыть необходимые порты на фаерволе. Лично у меня на гипервизоре был включен фаервол и клиентаская утилита apcupsd не смогла подключиться к серверу и прочитать состояние упса. Исправляем это:

Я не знаю, по tcp или udp работает apcupsd, поэтому открыл оба порта на вход и выход. После этого клиент успешно подключился к серверу и получил состояние упса. В завершение настройки, убедившись, что все работает, добавляем apcupsd в автозагрузку:

В случае с Xenserver 7 команда будет такая:

Заключение

Данная инструкция подойдет практически для любой ситуации использования apcupsd. Она кросплатформенная, конфиги легко переносятся с одной системы в другую. Будут отличия только в командах установки и запуска, в расположении лог файлов. В случае с линуксом, даже этих отличий почти не будет. Изменить пути в конфигурационном файле придется при переносе конфига с linux на windows.

Я рекомендую эту утилиту к использованию. Сам пользуюсь ей повсеместно. Лучшего решения по управлению упсами и безопасному завершению работы в разнородных сетях я не знаю. Обычно мое применение выглядит следующим образом. Я покупаю один УПС компании APC и подключаю его к одному серверу. Дальше приобретается сколько угодно упсов любой фирмы для любого количества серверов. Сервера подключаются по питанию к различным упсам, а информацию о состоянии электросети берут с сервера, к которому подключен APC. Когда пропадает свет, серверы по команде с этого упса завершают свою работу.

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

Купив источник бесперебойного питания от APC (а именно — APC Back-UPS ES 550VA ), я с удивленьем обнаружил, что «из коробки» он не может похвастаться тесной дружбою с Linux. Конечно, XFCE Power Manager, входящий в состав XFCE 4.6, подхватил и разпознал UPS, но всё, на что он оказался способен — отображение в трее уровня заряда. Какие-либо настройки отсутствовали начисто, нельзя было даже задать выключение ПК при достижении определённого уровня заряда.

Обратившись за консультацией в гугл, я узнал о существовании замечательного демона apcupsd, чья роль заключается в — никогда не поверите — управлении ИБП от APC. Но, как оказалось, практически все руководства по его начальной настройке были откровенно устаревшими — включая, как ни странно, официальный мануал. Споткнуться приходилось уже в самом начале о «cat /proc/bus/usb/devices». Поговорив с гуглом серьёзным и доверительным тоном, я добился от него ссылки на действующий мануал, художественным переводом коего с дополнениями из иных источников сия статья и является.

Итак, начнём с установки самого apcupsd:

sudo apt-get install apcupsd

Разумеется, вышесказанное справедливо для Debian и его производных, включая Ubuntu. Если в вашем дистрибутиве не используется apt-get — думаю, вы всё равно знаете, как поставить необходимый пакет. Надеюсь на это.

Теперь мы отредактируем конфигурационный файл apcupsd:

sudo gedit /etc/apcupsd/apcupsd.conf

В данном случае нас интересуют всего три параметра:

Сохраняем изменённый конфигурационный файл, открываем следующий:

sudo gedit /etc/default/apcupsd

Заменяем ISCONFIGURED=no на ISCONFIGURED=yes, сохраняем, закрываем. Отныне apcupsd будет знать, что мы не забыли его настроить.

Теперь достаточно запустить apcupsd:
sudo /etc/init.d/apcupsd start

Если он уже был запущен — вместо start нам, разумеется, надо будет писать restart.

Всё, ваш ПК теперь связан с новеньким ИБП прочными узами дружбы.

А теперь немножко о том, что мы можем настроить в обширном /etc/apcupsd/apcupsd.conf:

ONBATTERYDELAY — время (в секундах), определяющее задержку между обнаружением сбоя электропитания и отсылкой события onbattery. По умолчанию — 6
BATTERYLEVEL — уровень заряда батареи (в процентах), при котором инициируется выключение компьютера. По умолчанию — 5
MINUTES — расчётное время остаточной работы (в минутах), при достижении которого инициируется выключение компьютера. По умолчанию — 3
TIMEOUT — параметр актуален для старых ИБП, неспособных определять свой уровень заряда. Задаёт время (в секундах) между сбоем электропитания и отключением компьютера. Для современного ИБП параметр стоит оставить на 0, но выставление иного значения может быть удобно для тестирования работы ИБП. Например, если выставить 30 и выдернуть шнур из розетки, уже через полминуты apcupsd продемонстрирует своё умение выключать компьютер

Выполнения одного из условий (BATTERYLEVEL, MINUTES или TIMEOUT) достаточно для выключения компьютера. Более тонкая настройка не описывается, ибо её необходимость для домашнего пользователя весьма сомнительна.

Долго сказка сказывается, да недолго дело делается: полагаю, описанные действия пользователь произведёт за пару минут. Надеюсь, данная статья поможет кому-нибудь подружить его ИБП APC с Linux, сэкономив время и не завязнув в устаревших мануалах.

APCUPSd (APC UPS Daemon) — пакет программ для управления ИБП фирмы APC.

Работ под управлением Linux и MS Windows (в том числе 64-битные версии 1) ), MacOS X.

В пакет входят следующие программы:

Дополнительно можно установить документацию и APC UPS Power Management (web interface):

BATTERYLEVEL

Уровень заряда батарей в процентах (%).

Если указано значение BATTERYLEVEL , то во время отключения электроэнергии, apcupsd выдаст команду на завершение выключение системы, когда уровень заряда батареи упадет ниже заданного значения.

Значение по умолчанию: 5

Значение для отключения этого параметра: -1

MINUTES

Время работы от батарей, в минутах.

Если указано значение MINUTES, то во время отключения электроэнергии, apcupsd выдаст команду на завершение выключение системы, когда оставшиеся время работы от батарей (рассчитанное ИБП ) будет меньше заданного времени.

Значение по умолчанию: 3

Расчетное время работы от батарей TIMELEFT может быть получено в результате выполнения команды apcaccess

Если значение равно нулю или неправдоподобное, то ИБП , вероятно, сломан.

Значение для отключения этого параметра: -1

Следует отметить, что некоторые могут выдавать неверное значение, когда аккумулятор полностью заряжен.

TIMEOUT

Время в секундах.

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

Чтобы отключить этот параметр установите его значение -1

Для получения дополнительной информации см. apctest.

Этот таймер может быть также полезно, если вы хотите, чтобы некоторые рабом машины остановки до другой машины для экономии энергии батареи. Это также полезно для тестирования apcupsd потому что вы можете заставить быстрого выключения, установив небольшой стоимости (например 60) и потянув за вилку к ИБП .

TIMEOUT, BATTERYLEVEL, and MINUTES can be set together without problems. apcupsd will react to the first case or test that is valid. Normally SmartUPS users will set TIMEOUT to zero so that the system is shutdown depending on the percentage battery charge remaining (BATTERYLEVEL) or the remaining battery runtime (MINUTES).

ANNOY

Время в секундах.

Этот счётчик запускается только тогда, когда ИБП работает от батареи.

Значение по умолчанию это 300 секунд (5 минут).

Настройка сети в CentOS 7

Сетевые настройки — первое, что нужно сделать после создания сервера для его взаимодействия с внешним миром. В этой статье детально рассмотрим как настраивать сеть в CentOS 7.

Сетевые настройки в CentOS могут выполняться как в графическом интерфейсе, так и через командную строку. Ниже разберем настройку сетевых компонентов путем ввода команд в терминале.

Для примера используем выделенный сервер. Выделенные серверы заказываются в представлении «Серверы и оборудование».


После нажатия на кнопку «Заказать сервер» появится представление с характеристиками заказываемого сервера. Можно настроить свои параметры или выбрать готовую конфигурацию. Для демонстрации выберем готовую конфигурацию.


После выбора готового сервера останется выбрать устанавливаемую операционную систему. Настройку сети будем выполнять в CentOS 7.


О включении сервера можно узнать при получении письма с параметрами доступа или в интерфейсе веб-консоли управления Selectel. Созданный сервер имеет приведенные ниже характеристики.


Теперь можно подключиться к серверу по SSH и просмотреть сетевые интерфейсы, созданные по умолчанию. В выводе команды ip address получим нумерованный список интерфейсов.

Внешний сетевой интерфейс, через который было выполнено текущее SSH-подключение, имеет порядковый номер 2 и называется eno1. Интерфейсу для примера был присвоен статический ip-адрес 82.148.21.49.

Далее мы расскажем об изменении конфигурации сети в CentOS 7.

Статический IP-адрес в CentOS 7

Конфигурация сетевого интерфейса хранится в /etc/sysconfig/network-scripts в соответствующем файле с префиксом ifcfg (там же конфигурационные файлы других интерфейсов). Посмотрим на него.

Что можно понять из этих характеристик? Ниже расскажем о каждом параметре.

  • NAME — имя сетевого адаптера, оно такое же, как и имя в операционной системе.
  • ONBOOT — указание на тип запуска сетевого интерфейса. При текущих настройках сетевой интерфейс запускается автоматически. В случае со значением no интерфейс нужно будет запускать вручную.
  • BOOTPROTO — указание на тип назначения IP-адреса. В текущих настройках static, но возможны опции dhcp, none или пустое значение.
  • HWADDR — переменная, хранящая MAC-адрес.
  • IPADDR — установленный на интерфейсе IP-адрес.
  • NETMASK — установленная на интерфейсе маска подсети.
  • GATEWAY — указание на шлюз.
  • TYPE — тип интерфейса. В нашем случае — Ethernet.

Отредактируем значение поля IPADDR:

После внесения изменений перезагрузим сетевой сервис. Иначе изменения применятся только после рестарта сервера.

После выполнения этой команды сетевое подключение отключится. Снова выполняем подключение по SSH по новому IP-адресу и проверяем новые настройки:

Статический IP-адрес настроен, сервер доступен по новому адресу.

Настройки DHCP в CentOS 7

Чтобы настроить получение анонсов по DHCP, в /etc/sysconfig/network-scripts/ifcfg-eno1 необходимо удалить переменные IPADDR, NETMASK, GATEWAY, а в BOOTPROTO указать значение «dhcp».

Перезагружаем сетевой сервис:

Сетевое соединение по SSH отключится. Чтобы посмотреть новый IP-адрес сервера, подключимся к нему через веб-консоль KVM Selectel. Нажимаем на иконку консоли.


В новой вкладке браузера вводим учетные данные сервера и выполняем уже знакомую команду ip address. В выводе команды напротив интерфейса eno1 будет его динамический IP-адрес.


Теперь можно подключаться по SSH по новому IP-адресу.

Настройки DNS в CentOS 7

Чтобы настроить DNS, изменим /etc/sysconfig/network-scripts/ifcfg-eno1 и пропишем туда переменную DNS1 (если нужно добавить дополнительные DNS-серверы, допускается добавление переменных DNS2, DNS3 и т.д.)

Следом перезагрузим сеть:

По итогам перезагрузки адрес DNS-сервера должен автоматически оказаться в /etc/resolv.conf:

Наличие в файле заданного DNS-сервера говорит о корректности его настройки.

Перезапуск сетевого сервиса в CentOS 7

Перезапуск сети выполняется одной командой:

После изменения сетевых настроек и для вступления их в силу необходимо выполнить эту команду.

Изменение имени сервера (hostname) в CentOS 7

После создания сервера через панель управления Selectel ему присваивается имя localhost.localdomain, при аренде выделенного сервера в Selectel имя ему присвоено автоматически:

Сверим примененные настройки:

Имя хоста изменено.

Настройки шлюза в CentOS 7

За соответствующие настройки отвечает переменная GATEWAY в /etc/sysconfig/network-scripts/ifcfg-eno1. Чтобы изменить адрес шлюза, достаточно изменить значение этой переменной и перезагрузить сетевую службу:

Вызов команды netstat -nr вернет актуальный адрес используемого шлюза:

Таким образом, мы задали адрес сетевого шлюза.

Настройки сети из консоли

Кроме модификации файлов с конфигурацией, настройки сети могут быть изменены командами в консоли. Консольные настройки выполняются для проведения тестов и будут работать только до перезагрузки системы. Для выполнения всех консольных сетевых настроек используется уже известная команда ip address (или ее сокращенная версия ip a).

Применим к eno2 новый IP-адрес и проверим:

Изменим маску подсети и снова проверим:

Добавим маршрут по умолчанию:

Удалим маршрут по умолчанию:

Удалим привязанный ранее IP-адрес и проверим:

Еще раз обращаем внимание, что все приведенные в этом разделе настройки действуют до перезагрузки сервера.

Исключение IPv6 в CentOS 7

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

Начнем настройку с изменений в файле /etc/sysctl.conf. Внесем в него две дополнительных строки:

Следующий шаг — применение конфигурационных изменений:

В /etc/sysconfig/network прибавим 2 строки:

В конфигурационный файл /etc/default/grub к концу строки GRUB_CMDLINE_LINUX нужно добавить ipv6.disable=1

После выполнения изменений нужно сохранить файл и обновить GRUB:

Далее — перезагрузка сервера:

После перезагрузки проверим конфигурацию, значения с префиксом inet6 должны пропасть:

Протокол IPv6 успешно отключен.

Несколько IP адресов на одном интерфейсе в CentOS 7

Для настройки нескольких IP-адресов на одном интерфейсе внесем изменения в /etc/sysconfig/network-scripts/ifcfg-eno1, добавив переменные IPADDR1 и IPADDR2 и удалив IPADDR:

После перезагрузки сетевого сервиса изменения вступят в силу:

Еще один IP-адрес может понадобиться для поддержки нескольких сервисов в рамках одного сервера.

Настройки нескольких сетевых интерфейсов в CentOS 7

Команда ip a вернет состояние всех имеющихся сетевых интерфейсов:

В этом выводе можно видеть три интерфейса: служебный lo, а также интерфейсы eno1 и eno2.

В /etc/sysconfig/network-scripts в соответствующих файлах хранится конфигурация каждого интерфейса:

Для управления каждым из них вносятся значения переменных в соответствующий конфигурационный файл:

Чтобы добавить новый интерфейс, достаточно создать в этой же директории соответствующий конфигурационный файл, внести в него настройки и выполнить перезапуск сетевой службы:

Таким образом, мы создали дополнительный интерфейс.

Настройки интерфейсов в CentOS 7 через Network Manager (утилиты nmtui и nmcli)

Еще одним способом настроить сеть в CentOS 7 является настройка через утилиту Network Manager. Она может выполняться в GUI и через CLI. Для вызова графического интерфейса необходимо выполнить команду nmtui. Откроется псевдо-GUI интерфейс, в котором можно выполнять те же настройки, что и в командной строке:


Network Manager через CLI управляется при помощи утилиты nmcli. Ниже приведены команды для изменения IP-адреса, шлюза и DNS-сервера для сетевого интерфейса eno1:

Утилита Network Manager имеет широкий функционал и может использоваться как полная замена штатным инструментам для настройки сети в CentOS 7.

Заключение

Мы рассказали о различных подходах к настройке сети в CentOS 7. Этого достаточно для базовой настройки коммуникации сервера с внешними устройствами.

При заказе сервера у облачного провайдера важно проверить сетевые настройки и иметь понимание структуры конфигурационных файлов и их содержимого. Это будет полезно для тонкой настройки сетевых компонентов сервера на базе CentOS 7 для решения поставленных задач.

Читайте также: