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

Деактивация, активация и проверка работы узла в кластере

В данной статье описан процесс корректной деактивации, активации и проверки состояния узлов в кластере с указанием всех требуемых команд.

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

предупреждение

Не рекомендуется снимать снапшоты ВМ с узлами кластера до выполнения корректного завершения работы узлов, описанного ниже.

Для корректного отключения узлов в случае проведения технических работ или при любой другой необходимости (создание снапшота и т.п.) необходимо выполнить последовательность действий для каждого из узлов кластера начиная с последнего узла до первого (порядок узлов можно проверить в конфигурационном файле /usr/local/pf/conf/cluster.conf):

Шаг 1. Подключитесь к мастер-узлу кластера по протоколу SSH, авторизуйтесь, используя ваши учетные данные, и запустите вывод журнала службы MySQL:

journalctl -ft mysqld

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

mysql
show status like '%wsrep%';

В выводе команды должна появиться таблица, отображающая состояние синхронизации кластера и IP-адреса всех узлов, находящихся в кластере. Убедитесь, что параметр wsrep_local_state_commentимеет значение Synced, параметр wsrep_incoming_addresses содержит IP-адреса всех узлов кластера, а параметры wsrep_cluster_weight и wsrep_cluster_size показывают правильное количество узлов кластера:

| wsrep_local_state_comment | Synced |
... |
| wsrep_incoming_addresses | 10.31.209.13:3306,10.31.205.95:3306,10.31.209.14:3306,10.31.205.92:3306,10.31.205.93:3306 |
| wsrep_cluster_weight | 5 |
... |
| wsrep_cluster_size | 5

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

Шаг 4. Авторизуйтесь в консоли и из режима суперпользователя выполните команду завершения работы и корректной остановки системных служб, демонов и процессов узла:

shutdown now

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

The console has been disconnected. Close this window and re-launch the console to reconnect.

Шаг 6. В графическом интерфейсе гипервизора убедитесь, что виртуальная машина с узлом кластера полностью отключена.

Шаг 7. Для проверки отключения узла на снова откройте журнал из шага 1 мастер-узле. В нем должно быть отображено удаление узла из кластера:

Шаг 8. Также для проверки деактивации узла вы можете вывести в консоли мастер-узла текущее состояние базы данных кластера:

mysql
show status like '%wsrep%';

В выводе команды должна появиться таблица как в шаге 2, с обновленными значениями параметров wsrep_local_state_comment, wsrep_incoming_addresses, wsrep_cluster_weight и wsrep_cluster_size:

| wsrep_local_state_comment | Synced ... |
| wsrep_incoming_addresses | 10.31.209.13:3306,10.31.205.95:3306,10.31.205.92:3306,10.31.205.93:3306 |
| wsrep_cluster_weight | 4 |
... |
| wsrep_cluster_size | 4
внимание
  • При отключении узлов для проведения технических работ или снятия снапшотов запуск/восстановление узлов рекомендуется выполнять в порядке, указанном в конфигурационном файле /usr/local/pf/conf/cluster.conf;
  • При деактивации последнего узла (т.е. мастер-узла) шаги 1, 2, 7 и 8 необходимо пропустить, так как их выполнить невозможно.

Процесс активации узлов в кластере

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

Шаг 1. Выберите и запустите в используемом вами гипервизоре ВМ узла кластера, который вы хотите активировать.

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

Шаг 3. В режиме суперпользователя выполните команду для отслеживания запуска контейнеров и дождитесь запуска всех 18 контейнеров (20 для сборок с модулем TACACS+):

docker stats

Результатом выполнения команды должна быть таблица следующего вида:

Шаг 4. Убедитесь, что все требуемые контейнеры были запущены, выполнив следующую команду:

docker ps | wc -l

После выполнения команды в следующей строке должно быть указано, что запущено 18 контейнеров (20 для сборок с модулем TACACS+).

Восстановление работоспособности базы данных кластера

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

Шаг 1. На мастер-узле кластера откройте файл /var/lib/mysql/grastate.dat и измените значение параметра safe_to_bootstrap на 1.

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

systemctl restart packetfence-mariadb

Шаг 3. На всех узлах выполните команду проверки работы службы базы данных:

systemctl status packetfence-mariadb

Если данное решение не помогло, необходимо выполнить следующие шаги:

Шаг 1. На всех ведомых узлах кластера выполните команду остановки службы базы данных:

systemctl stop packetfence-mariadb

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

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

Шаг 3. На всех ведомых узлах выполните команду запуска базы данных:

systemctl start packetfence-mariadb

Шаг 4. На всех узлах выполните команду проверки работы службы базы данных:

systemctl status packetfence-mariadb

Проверка работы узла в кластере

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

journalctl -ft mysqld

В выводе команды должны быть блоки следующего вида с соблюдением ваших IP-адреса и имени хоста узла:

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

mysql
show status like '%wsrep%';

В выводе команды должна появиться таблица, отображающая состояние синхронизации кластера и IP-адреса всех узлов, находящихся в кластере. Убедитесь, что параметр wsrep_local_state_comment имеет значение Synced, параметр wsrep_incoming_addresses содержит IP-адреса всех узлов кластера, а параметры wsrep_cluster_weight и wsrep_cluster_size показывают правильное количество узлов кластера:

| wsrep_local_state_comment | Synced |
... |
| wsrep_incoming_addresses | 10.31.209.13:3306,10.31.205.95:3306,10.31.209.14:3306,10.31.205.92:3306,10.31.205.93:3306 |
| wsrep_cluster_weight | 5 |
... |
| wsrep_cluster_size | 5

Шаг 3. Убедитесь, что MySQL доступна на узле, который вы активируете. Исполнение команды mysql должно иметь вывод следующего вида:

mysql
MariaDB [(none)]> use pf;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [pf]>

Шаг 4. Запустите вывод журнала состояния узла с помощью следующей команды и убедитесь, что отсутствуют ошибки с критичностью Critical и Fatal:

journalctl -f

Шаг 5. Выполните команду проверки статуса и убедитесь в отсутствии служб со статусом Stopped и Failed:

pfstatus

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

Шаг 7. Также для проверки вам следует внести любые изменения в конфигурацию. При корректной активации узла все настройки будут применены без ошибок.