Деактивация, активация и проверка работы узла в кластере
В данной статье описан процесс корректной деактивации, активации и проверки состояния узлов в кластере с указанием всех требуемых команд.
Процесс деактивации узлов в кластере
Не рекомендуется снимать снапшоты ВМ с узлами кластера до выполнения корректного завершения работы узлов, описанного ниже.
Для корректного отключения узлов в случае проведения технических работ или при любой другой необходимости (создание снапшота и т.п.) необходимо выполнить последовательность действий для каждого из узлов кластера начиная с последнего узла до первого (порядок узлов можно проверить в конфигурационном файле /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. Также для проверки вам следует внести любые изменения в конфигурацию. При корректной активации узла все настройки будут применены без ошибок.