Перейти к основному содержимому
Версия: v2.2.x

Развертывание кластера AxelNAC

В рамках данной лабораторной работы мы расскажем как развернуть кластер AxelNAC, что для этого необходимо, как выполнить проверку работоспособности кластера и разберем наиболее часто встречающиеся проблемы. Длительность выполнения лабораторной работы — 2 часа.

Как работает кластер AxelNAC

Кластерное исполнение AxelNAC может состоять из нечетного количества узлов и представляет собой отказоустойчивый кластер. Отказоустойчивые кластеры — это группы серверов, которые спроектированы в соответствии с методиками обеспечения высокой доступности и которые гарантируют работу кластера в целом при отказе одного или нескольких его узлов. Без кластеризации, если сервер, на котором запущен AxelNAC, выходит из строя, система будет недоступна до тех пор, пока не будет устранена неполадка на сервере. Отказоустойчивый кластер исправляет эту ситуацию, обнаруживая аппаратные и программные сбои и немедленно перенаправляя трафик на другие узлы, не требуя вмешательства администратора. Кластер AxelNAC может содержать до девяти узлов в разных L2-сегментах, такой кластер называется катастрофоустойчивым.

к сведению

Кластер AxelNAC может содержать от 3 до 9 узлов.

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

Кластер AxelNAC будет сохранять полную работоспособность при соблюдении обязательного кворума — более 50% узлов кластера должны быть доступны. При потере кворума, AxelNAC сохраняет частичную работоспособность, переходя в режим только для чтения. В данном режиме изменяется логика основных элементов системы:

  • Аутентификация RADIUS MAC: продолжит работу и будет возвращать атрибуты RADIUS, связанные с ролью, зарегистрированной в базе данных. Если к этому устройству можно применить фильтры VLAN или RADIUS, они будут применены, но любое изменение роли не будет сохранено;
  • Аутентификация RADIUS 802.1X: продолжит работу, и если включена функция Dot1x переопределяет роль с портала, она будет вычислять роль с использованием доступных источников аутентификации, но не будет сохранять ее в базе данных в конце запроса. Если этот параметр отключен, он будет вести себя так же, как аутентификация по MAC-адресу. Фильтры VLAN и RADIUS по-прежнему будут применяться к подключениям, но любое изменение роли не будет сохранено. Если какие-либо из ваших источников аутентификации являются внешними (LDAP, AD, RADIUS, …​), они должны быть доступны для успешного выполнения запроса:
    • Аутентификация существующих в системе пользователей по протоколам PEAP и EAP-TLS будет выполняться в штатном режиме;
    • Реуатентификация существующих в системе пользователей по таймеру, установленному на коммутаторе, будет выполняться в штатном режиме;
    • Реуатентификация существующих в системе пользователей по периоду реаутентификации, установленному в системе, будет выполняться в штатном режиме;
    • Для новых пользователей, соответствующих правилам, установленным в системе, будет выполняться аутентификация, но новая запись в базе данных системы создаваться не будет.
  • Captive-портал: будет остановлен. Для пользователей будет отображено сообщение о том, что система в настоящее время находится в режиме обслуживания.
  • Прослушиватели DHCP: будут отключены, входящие DHCP-пакеты не будут сохраняться в базе данных. User Identity также будет отключен.
  • Веб-интерфейс AxelNAC: по-прежнему будет доступен в режиме только для чтения для всех разделов и в режиме чтения-записи для раздела конфигурации.
к сведению

Для реализации данного способа вам потребуется нечетное количество установленных серверов AxelNAC (от трех до девяти). Серверы должны быть расположены в пределах следующих ограничений задержки (требование для MariaDB Galera):

  • для небольших развертываний (от трех до пяти узлов) между узлами кластера допускается задержка не более 75 мс;
  • для больших развертываний (семь узлов) допускается задержка между узлами кластера не более 50 мс.

Развертывание кластера из предварительно установленных серверов AxelNAC

Первичная настройка сетевого интерфейса на узлах

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

Шаг 1. Подключитесь к узлу через платформу виртуализации и задайте адрес на сетевом интерфейсе:

nano /etc/network/interfaces

Шаг 2. Измените файл конфигурации на каждом узле по данному примеру:

auto <имя_сетевого_интерфейса>
iface <имя_сетевого_интерфейса> inet static
address <ip-address>
netmask <net mask>
gateway <gateway ip-address>

Шаг 3. Для применения конфигурации перезапустите службу сети, используя следующую команду:

systemctl restart networking

Настройка мастер-узла AxelNAC

Для следующего этапа необходимо сконфигурировать мастер-узел. Для этого выполните следующие шаги:

Шаг 1. Подключитесь к узлу по адресу https://<ip-address>:1443 — откроется веб-конфигуратор AxelNAC.

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

совет
  • Рекомендуется задавать имя хоста с указанием номера AxelNAC. Пример: AxelNode1, AxelNode2, AxelNode3 и т.д.;
  • Имя хоста не должно превышать 14 символов.
внимание

Обязательно пройдите все шаги конфигуратора и запустите главный узел AxelNAC.

Шаг 3. Перезапустите машину для применения настроек.

Шаг 4. В файл /etc/sysctl.conf добавьте следующие строки:

net.ipv4.ip_nonlocal_bind = 1
net.ipv6.conf.all.disable_ipv6 = 1

Шаг 5. Для применения настроек ,через платформу виртуализации выполните следующую команду:

sysctl -p

Шаг 6. Проверьте состояние службы mariadb следующей командой:

systemctl status packetfence-mariadb

Шаг 7. Создайте пользователя для репликации базы данных (для этого действия потребуется указать пароль):

mysql -u root

Шаг 8. Настройте MariaDB, используя следующий запрос:

CREATE USER 'pfcluster'@'%' IDENTIFIED BY 'aMuchMoreSecurePassword';
GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, SUPER ON *.* TO 'pfcluster'@'%';

CREATE USER 'pfcluster'@'localhost' IDENTIFIED BY 'aMuchMoreSecurePassword';
GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, SUPER ON *.* TO 'pfcluster'@'localhost';

FLUSH PRIVILEGES;
совет

Мы настоятельно рекомендуем использовать более безопасный пароль вместо стандартной переменной aMuchMoreSecurePassword.

Шаг 9. Для создания нового кластера, в файл /usr/local/pf/conf/pf.conf добавьте следующие строки:

[database]
host=100.64.0.1
port=6033

[active_active]
# Замените эти два значения учетными данными, которые вы указали при настройке MariaDB в шаге 8
galera_replication_username=pfcluster
galera_replication_password=aMuchMoreSecurePassword

[webservices]
# Замените эти два значения любыми учетными данными
user=packet
pass=anotherMoreSecurePassword

[advanced]
configurator=disabled

[services]
galera-autofix=disabled
предупреждение
  • Если в файле pf.conf уже есть такие блоки, добавьте строки в эти блоки;
  • Параметры host и port являются стандартными — не меняйте их значения.

Шаг 10. В файл /usr/local/pf/conf/pfconfig.conf добавьте следующие строки:

[mysql]
host=100.64.0.1
port=6033

Шаг 11. Для применения конфигурации, в портале виртуализации выполните следующие команды:

systemctl restart packetfence-config
/usr/local/pf/bin/pfcmd configreload hard

Шаг 12. В файл конфигурации кластера /usr/local/pf/conf/cluster.conf добавьте следующие строки:

[CLUSTER]
management_ip=10.31.109.21

[CLUSTER interface <имя_сетевого_интерфейса>]
ip=10.31.109.21

[hostname1]
management_ip=10.31.109.22

[hostname1 interface <имя_сетевого_интерфейса>]
ip=10.31.109.22

[hostname2]
management_ip=10.31.109.23

[hostname2 interface <имя_сетевого_интерфейса>]
ip=10.31.109.23

[hostname3]
management_ip=10.31.109.24

[hostname3 interface <имя_сетевого_интерфейса>]
ip=10.31.109.24
совет
  • В данном примере, 10.31.109.21 — это IP-адрес который будет использоваться кластером для приема запросов от коммутаторов и балансировки. Данный IP-адрес не назначен ни на один из узлов кластера;
  • В данном примере hostname1, hostname2 и hostname3 — имена узлов кластера, которые вы задали в предыдущем разделе, а <имя_сетевого_интерфейса> — имя интерфейса;
  • Вы можете задать любой валидный IP-адрес для узлов кластера.

Шаг 13. Для применения конфигурации, в портале виртуализации выполните следующие команды:

/usr/local/pf/bin/pfcmd configreload hard
/usr/local/pf/bin/pfcmd checkup
предупреждение

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

Шаг 14. Для настройки баз данных в портале виртуализации выполните следующие команды:

systemctl stop packetfence-mariadb
/usr/local/pf/bin/pfcmd generatemariadbconfig
systemctl set-environment MARIADB_ARGS=--force-new-cluster
systemctl start packetfence-mariadb
/usr/local/pf/bin/pfcmd service pf restart

Шаг 15. Включите службу кластеризации, используя следующую команду:

systemctl set-default packetfence-cluster

Настройка ведомых узлов AxelNAC

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

Шаг 1. Подключитесь к ведомому узлу по адресу https://<ip-address>:1443 — откроется веб-конфигуратор AxelNAC.

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

совет
  • Рекомендуется задавать имя хоста с указанием номера AxelNAC. Пример: AxelNode1, AxelNode2, AxelNode3 и т.д.;
  • Имя хоста не должно превышать 14 символов.
внимание

Дальнейшие шаги в веб-конфигураторе проходить не нужно.

Шаг 3. В файл /etc/sysctl.conf добавьте следующие строки:

net.ipv4.ip_nonlocal_bind = 1
net.ipv6.conf.all.disable_ipv6 = 1

Шаг 4. Для применения настроек ,через платформу виртуализации выполните следующие команды:

sysctl -p
reboot

Шаг 5. Остановите службу баз данных, используя следующую команду:

systemctl stop packetfence-mariadb

Шаг 6. Включите службу кластеризации на каждом из ведомых узлов, используя следующую команду:

systemctl set-default packetfence-cluster

Интеграция узлов в кластер AxelNAC

Для завершения сборки кластера необходимо интегрировать все узлы в кластер. Для этого выполните следующие шаги:

Шаг 1. Остановите службу iptables на всех узлах (включая мастер-узел), с помощью следующей команды:

systemctl stop packetfence-iptables

Шаг 2. Подключите ведомый узел к мастер-узлу, используя следующую команду:

/usr/local/pf/bin/cluster/sync --from=<master-ip-address> --api-user=packet --api-password=anotherMoreSecurePassword

Шаг 3. Синхронизируйте конфигурацию ведомых узлов, с помощью следующих команд:

systemctl restart packetfence-config
/usr/local/pf/bin/pfcmd configreload
/usr/local/pf/bin/pfcmd service proxysql restart
/usr/local/pf/bin/pfcmd service httpd.webservices restart

Шаг 4. Для синхронизации баз данных, на ведомых узлах остановите службу баз данных, затем выполните ее очистку и перезапустите. Для этого выполните следующие команды:

systemctl stop packetfence-mariadb
rm -fr /var/lib/mysql/*
systemctl restart packetfence-mariadb
systemctl status packetfence-mariadb

Если все шаги выполнены верно, при перезапуске службы mariadb вы должны увидеть следующее сообщение: INFO: Successful clustered connection to the DB.

Шаг 5. Для запуска мастер-узла в режиме кластера, выполните следующие команды:

systemctl stop packetfence-mariadb
systemctl unset-environment MARIADB_ARGS
systemctl start packetfence-mariadb
systemctl restart packetfence-iptables

Шаг 6. Чтобы завершить создание кластера, включите Galera на мастер-узле, выполнив следующую команду:

curl -X PATCH -d '{"galera-autofix":"enabled"}' localhost:22224/api/v1/config/base/services ; echo

Запуск кластера

После того как все узлы настроены и интегрированы в кластер, он готов к запуску. Для этого необходимо выполнить следующие шаги:

Шаг 1. Перезапустите AxelNAC на всех узлах, используя следующие команды:

/usr/local/pf/bin/pfcmd service pf updatesystemd
/usr/local/pf/bin/pfcmd service pf restart

Шаг 2. Перезапустите каждый сервер, используя следующую команду:

reboot

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

Проверка работоспособности кластера

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

Также статусы можно проверить с помощью консоли управления. Для этого подключитесь по протоколу SSH к любому узлу и выполните следующую команду:

/usr/local/pf/bin/pfcmd service pf status

Еще один способ проверки — проверка статусов через MySQL. Чтобы просмотреть все активные узлы в кластере выполните следующую команду:

show status like '%wsrep%';

Активные узлы кластера будут перечислены в строке wsrep_incoming_addresses.

Решение наиболее часто встречающихся проблем

После настройки первого узла при перезагрузке служб не запускается служба "radius-load-balancer"

Выполните перезапуск всех служб AxelNAC еще раз, служба radius-load-balancer запустится и будет работать корректно.

При добавлении ведомых узлов, служба "mariadb" не запускается и находится в состоянии "loaded"

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

При рестарте службы "iptables" AxelNAC становится недоступен для любых входящих соединений

Выполните перезапуск службы "iptables" из портала виртуализации.

При инициализации AxelNAC не обнаружен ни один сетевой интерфейс

Укажите в "/etc/resolv.conf" корректный DNS-сервер, который отвечает на "udp/53".

При перезапуске AxelNAC невозможно получить IP-адрес для "имя машины AxelNAC"

Укажите в "/etc/hosts" имя машины AxelNAC после строки "localhost".

После настройки "/usr/local/pf/conf/cluster.conf" службы "haproxydb", "haproxy-admin", "haproxy-portal", "radius-load-balancer" не запускаются

Убедитесь, что адрес, который вы указали для кластера, не был указан для сетевых интерфейсов других узлов AxelNAC.

При переходе на страницу "Статус" не отображаются графики использования системы и периодически появляется всплывающее окно, сообщающее о неработоспособности службы netdata

Убедитесь, что имя хоста и домен на странице Конфигурация → Настройки системы → Основные настройки не совпадают с именем хоста других узлов кластера.