Управление общим состоянием KeyStack¶
Состав платформы¶
В состав платформы входят следующие подсистемы:
Подсистема вычислительных ресурсов — обеспечивает виртуализацию вычислительных ресурсов и управление ими;
Подсистема хранения данных — обеспечивает управление ресурсами хранения;
Подсистема передачи данных — обеспечивает реализацию и управление виртуальной сетевой инфраструктурой;
Подсистема мониторинга — обеспечивает сбор метрик с ресурсов платформы, мониторинг платформы и её сервисов;
Подсистема оркестрации — обеспечивает возможность автоматизированного управления ресурсами виртуальной инфраструктуры платформы.
Подготовка к работе¶
Подключение ко всем интерфейсам управления KeyStack описано в разделе Подключение к интерфейсам управления KeyStack.
Системный администратор использует в работе следующие интерфейсы платформы:
Основным рабочим веб-интерфейсом является Портал администратора.
Помимо веб-интерфейса в работе используется OpenStack CLI.
Запуск платформы¶
Почти все сервисы платформы — stateless либо имеют внутренние механизмы failover, обеспечивающие достижение кворума в кластере. Но есть сервис, на который надо обратить особое внимание — Galera Cluster. Поэтому в пункте Выключение всех компонентов платформы важно делать паузы перед выключением следующего узла — это минимизирует до определенной степени шанс получить с «несобранным» кластером Galera Cluster с MariaDB после включения.
Порядок включения серверов платформы в общем случае выглядит так:
Примечание
Если вы используете docker, замените podman на docker в представленных ниже командах.
Включите первый управляющий узел. После загрузки сервера (в данном примере —
controller1) выполните проверку статуса MariaDB.Пример команды:
# ssh controller1 # podman exec -it mariadb mysql -uroot -p<пароль> -s -s --execute="SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';"
Ожидаемый вывод:
Выполните проверку того, что кластер имеет ID, не равный
0000000000:# podman exec -it mariadb mysql -uroot -p<пароль> -s -s --execute="SHOW GLOBAL STATUS LIKE 'wsrep_cluster_conf_id';"
Включите остальные управляющие узлы и дождитесь их загрузки. Затем проверьте статус синхронизации кластера, запустив на первом узле команду:
# podman exec -it mariadb mysql -uroot -p<пароль> -s -s --execute="SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';SHOW GLOBAL STATUS LIKE 'wsrep_cluster_weight';SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';"
Ожидаемый вывод (при условии, что количество узлов — 3):
Если в течение 5 минут статус не перейдет в
Synced, проверьте журналы mariadb.log на всех запущенных узлах управления. Если вы видите в логах неуспешные попытки применить журналы предзаписи (WAL) с последующей перезагрузкой контейнера, и таких перезагрузок уже больше трех, выполните процедуру восстановления кластера по приведенным ниже шагам:Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Создайте новый пайплайн: .
В открывшемся окне в параметре
KOLLA_ANSIBLE_DEPLOY_ACTIONвыберете из выпадающего спискаmariadb_recovery.Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её успешного завершения.
Если конвейер завершился с ошибкой, обратитесь в службу поддержки.
Выполните проверку всех узлов с помощью инструкций, приведенных в разделе Порядок проверки сервисов при failover.
В зависимости от технического регламента либо оповестите владельцев вычислительных нагрузок о возможности запуска их нагрузок в облаке, либо самостоятельно включите инстансы.
Выключение всех компонентов платформы¶
Для отключения платформы и её компонентов с сохранением данных выполните следующие шаги:
Оповестите владельцев виртуальных машин о предстоящем отключении.
Выключите сервис DRS, деактивировав задание в панели администратора.
Выключите сервис HA, последовательно подключившись к каждому контроллеру и введя команду
systemctl stop kolla-consul-container.service.Зайдите на LCM-узел по SSH.
Зафиксируйте состояние виртуальных машин на момент выключения региона, введя команду:
$ openstack server list --all-projects > VMs.$(date "+%Y-%m-%d-%H-%M-%S").txt
Выключите виртуальные машины средствами OpenStack, введя команду:
$ openstack server list --all-projects -c ID -f value | \ $ xargs -n1 openstack server stop
Проверьте выключение всех виртуальных машин командой:
$ openstack server list --all-projects -c ID -c Status -f value | \ $ grep -v Active
Примечание
Если проверка покажет наличие виртуальных машин в статусе
ACTIVE, то повторите выключение каждой такой виртуальной машины индивидуально, введя командуopenstack server stop <VM ID>, подставив в качествеVM IDзначение из столбца ID предыдущего вывода.Выключите узлы-гипервизоры средствами операционной системы:
# for HOST in $(openstack hypervisor list -c "Hypervisor Hostname" -f value);\ do \ ssh -x ${HOST} "shutdown -h now";\ done
Выключите узлы слоя управления (Control-узлы) средствами операционной системы, с паузами, достаточными для полного выключения сервера (время зависит от используемого аппаратного комплекса), проверяя процесс выключения и состояние серверов через IPMI:
ssh -x ctl3 ‘shutdown -h now’ # пауза до полного выключения ssh -x ctl2 ‘shutdown -h now’ # пауза до полного выключения ssh -x ctl1 ‘shutdown -h now’ # пауза до полного выключения
После выполнения этих шагов регион платформы будет полностью выключен.