Развертывание кластера 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
Убедитесь, что имя хоста и домен на странице Конфигурация → Настройки системы → Основные настройки не совпадают с именем хоста других узлов кластера.