Автоматическое развертывание кластерного исполнения AxelNAC

В данной статье приведено описание развертывания кластерного исполнения AxelNAC с помощью утилиты Ansible.

Как работает кластерное исполнение AxelNAC

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

 

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

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

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

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

Подготовка к развертыванию кластерного исполнения

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

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

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

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

nano /etc/network/interfaces

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

auto eth0
 iface eth0 inet static
    address <ip-address>
    netmask <net mask>
    gateway <gateway ip-address>

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

 systemctl restart networking

Предварительная настройка мастер-узла AxelNAC

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

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

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

Шаг 3. Пройдите все оставшиеся этапы настройки в веб-конфигураторе.

Предварительная настройка ведомых узлов AxelNAC

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

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

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

Установка и конфигурация утилиты Ansible

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

Шаг 1. В интерфейсе командной строки выполните следующую команду:

apt install ansible

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

export  ANSIBLE_CONFIG=ansible.cfg 

Инструменты для развертывания кластерного исполнения

Все инструменты для развертывания кластерного исполнения расположены в директории /usr/local/pf/addons/tech-support-utils/ansible-cluster-tools:

Запуск автоматического развертывания кластерного исполнения AxelNAC

Сборка кластера с одним мастер-узлом

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

Шаг 1. Перенесите директорию /usr/local/pf/addons/tech-support-utils/ansible-cluster-tools на виртуальную машину, которая не будет использоваться в кластере.

Шаг 2. В файле normal, в разделе cluster укажите IP-адреса и имена хоста узлов в секциях master и nodes.

Шаг 3. В секции vars укажите от имени какого пользователя производятся действия: ansible_user=root.

Шаг 4. Укажите пароль для доступа к пользователю: ansible_ssh_pass=superpassword.

 

Шаг 5. Укажите виртуальный IP-адрес кластера в строке cluster_mng_ip.

Шаг 6. В файле create-cl.yml сконфигурируйте параметры проверки на соответствие.

Пример инвентарного файла

[cluster:children]
dc1

[dc1]
dc1-anac3-n1 ansible_host=10.31.205.87 vip=10.31.205.111 master=true
dc1-anac3-n2 ansible_host=10.31.205.119
dc1-anac3-n3 ansible_host=10.31.205.120

[cluster:vars]
####### !!!!!!!!!!!! type = 'normal' or 'l3' !!!!!!!!!!! #######
type=normal

ansible_ssh_common_args='-o StrictHostKeyChecking=no -o PasswordAuthentication=yes'
ansible_user=root/user
ansible_ssh_pass=root_pass
#ansible_ssh_pass=123123
ansible_python_interpreter="/usr/bin/python3"
# mem >= 8 Gb
mem=7944
# cpu >= 4
cpu=4
# sda.size >= 200 Gb
hdd=100

Сборка кластера с двумя и более мастер-узлами

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

Шаг 1. Перенесите директорию /usr/local/pf/addons/tech-support-utils/ansible-cluster-tools на виртуальную машину, которая не будет использоваться в кластере.

Шаг 2. В файле multizone, в разделе cluster укажите IP-адреса узлов в секциях master и nodes.

Шаг 3. В секции vars укажите от имени какого пользователя производятся действия: ansible_user=root.

Шаг 4. Укажите пароль для доступа к пользователю: ansible_ssh_pass=superpassword.

 

Шаг 5. Укажите виртуальные IP-адреса кластера в строке cluster_mng_ip.

Шаг 6. В файле create-cl.yml сконфигурируйте параметры проверки на соответствие.

Пример инвентарного файла

[cluster:children]
dc1
dc2

[dc1]
dc1-anac5-n1 ansible_host=10.31.205.87 vip=10.31.205.111 master=true
dc1-anac5-n2 ansible_host=10.31.205.119
dc1-anac5-n3 ansible_host=10.31.205.120

[dc2]
dc2-anac5-n1 ansible_host=10.31.205.121 vip=10.31.205.112
dc2-anac5-n2 ansible_host=10.31.205.122

[cluster:vars]
####### !!!!!!!!!!!! type = 'normal' or 'l3' !!!!!!!!!!! #######
type=l3

ansible_ssh_common_args='-o StrictHostKeyChecking=no -o PasswordAuthentication=yes'
ansible_user=root/user
ansible_ssh_pass=root_pass
#ansible_ssh_pass=123123
ansible_python_interpreter="/usr/bin/python3"
# mem >= 8 Gb
mem=7944
# cpu >= 4
cpu=4
# sda.size >= 200 Gb
hdd=100

Работа с плейбуком

Описание стадий

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

Тег Описание
check
  • ansible_memtotal_mb.real | int >= 7944 (проверяется MEM >8Gb);
  • ansible_devices.sda.size[:-5] | int >= 100 (проверяется HDD > 100Gb);
  • db_service_status.status.ActiveState  == 'active' (проверяется работает ли MariaDB).
init
  • Вносит необходимые правки в sysctl;
  • Устанавливает недостающее ПО;
  • Вносит изменения в hostname согласно инвентарному файлу и обновляет записи /etc/hosts;
  • Создает пользователя реплики;
  • Перезапускает узлы.
galera1
  • Формирует конфигурационные файлы кластера;
  • Перезапускает сервисы на мастер-узле.
galera2
  • Переводит мастер-узел в режим создания кластера;
  • Отключает службу iptables.
galera3
  • Синхронизирует конфигурационные файлы ведомых узлов с мастер-узлом.
galera4
  • Скачивает конфигурационные файлы для проверки их идентичности.
galera5
  • Перезагружает службы на узлах.
galera6
  • Возвращает мастер-узел в обычный режим;
  • Включает службу galera-autofix.
galera7
  • Перезагружает службы на узлах;
  • Перезагружает ведомые узлы.

Запуск плейбука

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

Стандартный запуск

ansible-playbook -i normal --vault-id ./pass.sh create-cl.yml

Запуск конкретного шага:

ansible-playbook -i normal --vault-id ./pass.sh create-cl.yml -t <ТЕГ_СТАДИИ>

Запуск конкретного шага на конкретном узле:

 ansible-playbook -i normal --vault-id ./pass.sh create-cl.yml -t <ТЕГ_СТАДИИ> -l <IP-АДРЕС_УЗЛА>

Запуск нескольких шагов:

ansible-playbook -i normal --vault-id ./pass.sh create-cl.yml -t <ТЕГ_СТАДИИ>,<ТЕГ_СТАДИИ>,<ТЕГ_СТАДИИ>

Обновление кластера с помощью ansible

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

Шаг 1. Сформируйте архив обновления docker-anac-update.tar с помощью скрипта create-local-upgrade.sh и поместите его в директорию /usr/local/pf/addons/tech-support-utils/ansible-cluster-tools/files.

Шаг 2. В файле roles/files/local-upgrade.sh установите/раскомментируйте строку:

Шаг 3. Запустите обновление с помощью следующей команды:

ANSIBLE_CONFIG=./ansible.cfg ansible-playbook -i normal --vault-id ./pass.sh upgrade-cl.yml -vv

Дополнительные команды Ansible

Проверка доступа узлов

ansible -i normal all --vault-id ./pass.sh -m ping

Запуск команд на удаленных узлах

ansible -i normal all --vault-id ./pass.sh -m shell -a "/usr/local/pf/bin/pfcmd service pf restart"

Отображение информации о хосте в виде дерева

ansible -i normal all -m ansible.builtin.gather_facts --tree

Отображение информации о хосте в общем виде

ansible -b -i normal all -m gather_facts

Отображение полной информации о хосте

ansible -i normal all --vault-id ./pass.sh -m setup

Просмотр журнала ansible

ansible-playbook -i normal --vault-id ./pass.sh create-cl.yml -t init -l dc1-anac5-n1 -vvv


ID статьи: 136
Последнее обновление: 25 апр., 2025
Ревизия: 7
База знаний AxelNAC -> Документация -> Система контроля доступа к сети «AxelNAC». Версия 1.0.0 -> AxelNAC. Руководство по настройке кластера -> Автоматическое развертывание кластерного исполнения AxelNAC
https://docs.axel.pro/avtomaticheskoe-razvertyvanie-klasternogo-ispolneniya-axelnac_136.html