Управление инфраструктурой, на которой развёрнута Платформа
Вычислительные узлы (гипервизоры, compute node) представляют собой выделенные серверы с настроенным гипервизором KVM, обслуживающие запущенные экземпляры ВМ.
Каждый вычислительный узел имеет установленную на жёсткие диски ОС, настроенный гипервизор KVM, настроенные модули поддержки SDS CEPH и (или) СХД, и агенты для работы с сетевой подсистемой.
Просмотр списка вычислительных узлов может осуществляться через:
- Портал администратора.
- OpenStack CLI.
Для просмотра списка вычислительных узлов через Портал администратора перейдите в раздел «Облачные вычисления» на страницу «Гипервизоры». Список вычислительных узлов отобразится в таблице.
Просмотр списка вычислительных узлов можно выполнить при помощи Openstack CLI. Для этого выполните подготовительные операции (см. раздел Вход для Администратора Платформы) и используйте команду:
openstack hypervisor list.openstack compute service list --service nova-compute --long.
Просмотр доступных ресурсов на вычислительном узле в кластере может осуществляться через:
- Портал администратора.
- OpenStack CLI.
Для просмотра доступных ресурсов на вычислительном узле в кластере через Портал администратора перейдите в раздел «Облачные вычисления» на страницу «Гипервизоры»:
-
Тип данных «Кешированные данные» (чтобы изменить тип данных, нажмите на иконку справа от поля поиска и выберите вариант «Кешированные данные»):
cpu_idle— текущая загрузка ЦПУ.free_mem— количество свободной памяти.status— текущее состояние вычислительного узла.running_vms— количество инстансов на вычислительном узле.
-
Тип данных «Реальные данные»:
vCPUs— количество используемых vCPU и всех vCPU вычислительного узла.RAM— используемая (аллоцированная) и суммарная память.Диск— использование локального диска вычислительного узла с указанием общего объема.Инстансы— количество инстансов на вычислительном узле.Состояние— текущее состояние вычислительного узла.
Просмотр доступных ресурсов на вычислительном узле в кластере можно выполнить при помощи Openstack CLI. Для этого выполните подготовительные операции (см. раздел Вход для Администратора Платформы) и используйте команду:
openstack hypervisor stats show <ID_ВЫЧИСЛИТЕЛЬНОГО_УЗЛА>
Общую статистику по всем вычислительным узлам можно получить с помощью команды:
openstack hypervisor stats show
+----------------------+--------+| Field | Value |+----------------------+--------+| count | 2 || current_workload | 1 || disk_available_least | 37806 || free_disk_gb | 38453 || free_ram_mb | 111499 || local_gb | 39788 || local_gb_used | 1335 || memory_mb | 390027 || memory_mb_used | 278528 || running_vms | 49 || vcpus | 48 || vcpus_used | 140 |+----------------------+--------+
Для обслуживания вычислительного узла предусмотрен механизм его временного отключения из кластера.
Чтобы вывести вычислительный узел из кластера:
-
В Портале мониторинга установите период технического обслуживания (Maintenance periods) для отключаемого вычислительного узла:
-
В меню слева перейдите в раздел «Configuration» → «Maintenance».
-
В верхнем правом углу нажмите на кнопку «Create maintenance period».
-
Заполните поля формы:
-
Вкладка «Maintenance»:
-
Name — наименование периода. Обязательное поле.
-
Maintenance type — тип периода:
- With data collection — со сбором данных.
- No data collection — без сбора данных.
-
Active since — начало активности периода технического обслуживания. Обязательное поле.
-
Active till — конец активности периода технического обслуживания. Обязательное поле.
-
Description — описание периода.
-
-
Вкладка «Periods»: нажмите на ссылку (не кнопку) «Add» в списке «Periods». В открывшемся модальном окне укажите периодичность и продолжительность периода технического обслуживания и нажмите на кнопку «Add».
-
Вкладка «Hosts and groups»:
- Host groups — группы хостов. Нажмите на кнопку «Select» справа от названия, выберите пункты списка и нажмите на кнопку «Select». Выберите из списка вычислительный узел, который необходимо вывести из кластера.
- Hosts — хосты. Нажмите на кнопку «Select» справа от названия, выберите пункты списка и нажмите на кнопку «Select».
- Tags — поиск по тегам.
-
-
Нажмите на кнопку «Add» в нижней части любой из вкладок. На странице «Maintenance periods» появится новая запись.
-
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
При помощи OpenStack CLI уточните текущий список и статус вычислительных узлов, например, выполнив команду (см. раздел OpenStack CLI):
openstack compute service list --service nova-compute --longПример вывода команды openstack compute service list --service nova-compute --long+----+--------------+----------+------+---------+-------+----------------------------+-----------------+| ID | Binary | Host | Zone | Status | State | Updated At | Disabled Reason |+----+--------------+----------+------+---------+-------+----------------------------+-----------------+| 74 | nova-compute | compute1 | AZ1 | enabled | up | 2022-05-23T14:08:13.000000 | None || 77 | nova-compute | compute0 | AZ1 | enabled | up | 2022-05-23T14:08:11.000000 | None |+----+--------------+----------+------+---------+-------+----------------------------+-----------------+ -
Отключите возможность запуска новых ВМ на вычислительном узле, выполнив команду:
openstack compute service set --disable --disable-reason "maintenance" <НАИМЕНОВАНИЕ_ВЫЧИСЛИТЕЛЬНОГО_УЗЛА> nova-computeСтатус вычислительного узла изменится на
disabled, в столбце «Disabled Reason» появится значениеmaintenance. -
Для всех ВМ, запущенных на вычислительном узле, выводимом из кластера, выполните миграцию (см. раздел Миграция ВМ).
-
Убедитесь, что миграция ВМ завершилась успешно и на вычислительном узле нет запущенных ВМ, выполнив команду:
openstack server list --host <НАИМЕНОВАНИЕ_ВЫЧИСЛИТЕЛЬНОГО_УЗЛА> --all-projects -
Перейдите на отключаемый вычислительный узел по SSH.
-
Остановите сервисы nova и neutron агентов, выполнив команды:
systemctl stop openstack-nova-compute.servicesystemctl stop neutron-l3-agent.service neutron-metadata-agent.service neutron-openvswitch-agent.service
После успешного выполнения вышеописанных шагов вычислительный узел можно отключить от сети, выключить питание и выполнить работы по ремонту / модернизации.
Чтобы включить вычислительный узел:
-
Убедитесь, что вычислительный узел физически включен и выполнен автоматический запуск сервисов.
-
Перейдите на включенный вычислительный узел по SSH.
-
Проверьте состояние сервисов nova и neutron агентов на вычислительном узле, выполнив команду:
systemctl --all | grep -E "nova|neutron"Найденные сервисы должны быть в статусах
activeиrunning. -
Если состояние сервисов отличается от указанных на предыдущем шаге, запустите сервисы Nova и Neutron агентов, выполнив команды:
systemctl start openstack-nova-compute.servicesystemctl start neutron-l3-agent.service neutron-metadata-agent.service neutron-openvswitch-agent.service -
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Включите возможность запуска ВМ на вычислительном узле, выполнив команду:
openstack compute service set --enable <НАИМЕНОВАНИЕ_ВЫЧИСЛИТЕЛЬНОГО_УЗЛА> nova-compute -
Уточните текущий список и статус запущенного вычислительного узла (см. раздел OpenStack CLI). Ожидаемые значения в колонке «Status» —
enabled, в колонке «State» —up. -
При необходимости выполните миграцию ВМ для разгрузки запущенных вычислительных узлов на ранее включенный узел (см. раздел Миграция ВМ).
Вычислительные узлы по умолчанию могут быть использованы для обеспечения ресурсов любых ВМ, для которых указана соответствующая зона доступности (availability zone). Для этого в данную зону доступности должен входить агрегат узлов (Host aggregate), к которому относится вычислительный узел.
Иерархия сущностей упрощенно может быть представлена следующим образом:
-
Зона доступности.
-
Агрегат узлов.
- Вычислительный узел.
-
Однако в Платформе существует возможности ограничить использование вычислительного узла одним выбранным проектом/тенантом. Закрепление выделенного вычислительного узла за каким-либо проектом означает, что ресурсы данного узла будут доступны только в рамках этого проекта.
Закрепление вычислительного узла за проектом может осуществляться через:
- Портал администратора.
- OpenStack CLI.
Для закрепления вычислительного узла за проектом через Портал администратора:
-
Перейдите в раздел «Облачные вычисления» на страницу «Агрегаторы узлов».
-
Нажмите на кнопку «Добавить».
-
В открывшейся форме укажите параметры:
- Имя — наименование агрегата узлов.
- Зона доступности — зона доступности для агрегата. Выбор из раскрывающегося списка.
- Доступные узлы — список доступных узлов. Выбор из раскрывающегося списка.
-
Нажмите на кнопку «Создание агрегатора узлов». Дождитесь завершения операции.
-
На странице «Агрегаторы узлов» нажмите на иконку справа от поля поиска и выберите вариант «Реальные данные» (по умолчанию показаны «Кешированные данные»).
-
Найдите в списке созданный агрегатор, справа от его названия нажмите на кнопку «•••» и выберите пункт «Обновить метаданные».
-
Нажмите на кнопку «Редактировать».
-
В открывшейся форме заполните параметры:
- Нажмите на кнопку «Добавить».
- В поле «Имя» укажите значение
filter_tenant_id. - В поле «Значение» укажите UID проекта или тенанта.
- Нажмите на кнопку «Сохранить изменения».
Описанных выше действий достаточно, чтобы на вычислительном узле запускались ВМ только указанного проекта. При этом ВМ данного проекта смогут создаваться и на других вычислительных узлах.
Закрепление вычислительного узла за проектом можно выполнить при помощи Openstack CLI. Для этого выполните шаги:
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Создайте новый агрегат узлов:
openstack aggregate create --zone <ИМЯ_ЗОНЫ_ДОСТУПНОСТИ> NEW_AGG -
Добавьте агрегату необходимый параметр:
openstack aggregate set --property filter_tenant_id=<ИМЯ_ПРОЕКТА_ИЛИ_ТЕНАНТА> NEW_AGG -
Добавьте вычислительный узел в созданный агрегат узлов:
openstack aggregate add host NEW_AGG <ИМЯ_ВЫЧИСЛИТЕЛЬНОГО_УЗЛА>
Описанных выше действий достаточно, чтобы на вычислительном узле запускались ВМ только указанного проекта. При этом ВМ данного проекта смогут создаваться и на других вычислительных узлах.
Если необходимо, чтобы ВМ проекта запускались только на определенном вычислительном узле, то нужно создать и использовать специальный тип ВМ (flavor) для проекта с параметром aggregate_instance_extra_specs:filter_tenant_id, например:
openstack flavor create --private --disk 10 --property aggregate_instance_extra_specs:filter_tenant_id=<ИМЯ_ПРОЕКТА_ИЛИ_ТЕНАНТА> --ram 1024 --vcpus 1 --property mcs:cpu_type=standard --project <ИМЯ_ПРОЕКТА_ИЛИ_ТЕНАНТА> Basic-1-1-SPEC
Кроме того, для отображения данного типа ВМ в интерфейсе необходимо добавить к агрегату узлов дополнительное свойство:
openstack aggregate set --property mcs:cpu_type=standart NEW_AGG
Чтобы добавить новый вычислительный узел в кластер, выполните шаги:
- Подготовьте ansible inventory (см. раздел Подготовка ansible inventory).
- Запустите плейбуки ansible (см. раздел Запуск плейбуков Ansible).
- Выполните проверку состояния сервисов (см. раздел Проверка состояния сервисов).
- Активируйте добавляемый вычислительный узел (см. раздел Активация вычислительного узла).
- Проверьте статус вычислительного узла (см. раздел Проверка статуса активированного вычислительного узла).
- Добавьте вычислительный узел в мониторинг (см. раздел Добавление вычислительного узла в систему мониторинга).
- Выполните миграцию ВМ для разгрузки других вычислительных узлов при необходимости (см. раздел Миграция ВМ).
Далее описаны шаги инструкции для каждого шага.
-
Перейдите на деплой-ноду по SSH (см. раздел Вход на деплой-ноду по SSH).
-
В файл
/home/centos/inventory/<ENV>/<ENV>.yml, где<ENV>— наименование инсталляции/окружения, добавьте информацию о новом вычислительном узле в секциюhosts:all:children:<ENV>:children:...<ENV>_compute:children:...hosts:...compute1:<VAR1>: <VALUE1><VAR2>: <VALUE2>
Запустите плейбуки из директории /home/centos/inventory/<ENV>, выполнив команды:
ansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME} ../ansible-openstack/playbooks/zabbix-openstack-deploy.yml -D --limit <NEW_HOST>;ansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME} ../ansible-openstack/playbooks/compute-deploy.yml -D -e ansible_user=centos -e admin_user_name=centos --limit <NEW_HOST>
, где:
${STAND_NAME}— переменная с наименованием окружения.<NEW_HOST>— наименование создаваемого вычислительного узла.
ansible-playbook -i stage.yml -e env=stage ../ansible-openstack/playbooks/zabbix-openstack-deploy.yml -D --limit compute1ansible-playbook -i stage.yml -e env=stage ../ansible-openstack/playbooks/compute-deploy.yml -D -e ansible_user=centos -e admin_user_name=centos --limit compute1
-
Проверьте состояние системных сервисов, выполнив команду:
systemctl --all | grep -E "nova|neutron"Сервисы должны быть в состоянии
active,running. -
Перейдите на управляющий узел с поддержкой OpenStack CLI (см. раздел Вход для Администратора Платформы).
-
Проверьте наличие и статус сервиса Nova для нового вычислительного узла, выполнив команду:
openstack compute service list --host compute1 -
Проверьте наличие и статус агентов Neutron для нового вычислительного узла, выполнив команду:
openstack network agent list --host compute1
Чтобы активировать вычислительный узел, на управляющем узле с поддержкой OpenStack CLI выполните команды:
openstack compute service set --disable --disable-reason "Ready to start" <NEW_HOST> nova-computeopenstack compute service set --enable <NEW_HOST> nova-compute
, где <NEW_HOST> — наименование создаваемого вычислительного узла.
Выполните команду проверки статуса активированного вычислительного узла:
openstack compute service list --host compute1 --long
+----+--------------+----------+------+---------+-------+----------------------------+-----------------+| ID | Binary | Host | Zone | Status | State | Updated At | Disabled Reason |+----+--------------+----------+------+---------+-------+----------------------------+-----------------+| 74 | nova-compute | compute1 | AZ1 | enabled | up | 2022-05-23T21:00:30.000000 | None |+----+--------------+----------+------+---------+-------+----------------------------+-----------------+
Если активация вычислительного узла прошла успешно, его статус изменится на enabled, up.
Для добавления вычислительного узла в систему мониторинга:
-
Выполните вход в Портал мониторинга под учётной записью Администратора Платформы.
-
Перейдите в раздел «Configuration» на страницу «Hosts».
-
Из таблицы выберите любой рабочий хост (например,
compute3), нажав на его имя. -
В открывшейся форме нажмите на кнопку «Clone».
-
На форме настроек нового вычислительного узла обновите значения полей:
- «Host name» — наименование созданного вычислительного узла.
- «Interfaces» → «Agent» — IP-адрес агента.
- «Enabled» — признак активности; установите флажок.
-
Нажмите на кнопку «Add». Дождитесь изменения индикации надписи
[ZBX]в столбце «Availability» на зелёный.
Чтобы удалить вычислительный узел из кластера, выполните шаги:
- Выполните процедуру вывода вычислительного узла из кластера (см. раздел Вывод вычислительного узла из кластера).
- Удалите сервисы вычислительного узла из OpenStack (см. раздел OpenStack).
- Удалите вычислительный узел из Consul (см. раздел Consul).
- Удалите IP вычислительного узла из списка анонсированных по BGP (см. раздел BGP).
- Удалите запись из ansible inventory (см. раздел Удаление записи из ansible inventory).
- Удалите вычислительный узел из системы мониторинга (см. раздел Удаление вычислительного узла из мониторинга).
- Очистите очередь вычислительного узла в RabbitMQ (см. раздел RabbitMQ).
- Удалите вычислительный узел (resource provider) из
nova-placement-api(см. раздел Nova Placement). - Удалите запись о вычислительном узле на серверах DNS (см. раздел DNS).
Далее описаны шаги инструкции для каждого шага.
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Определите ID сервисов Nova для удаляемого вычислительного узла, выполнив команду:
openstack compute service list --host compute1 -
Удалите сервис, выполнив команду с указанием ID, выведенного на предыдущем шаге:
nova service-delete <SERVICE_ID> -
Определите ID сервисов Neutron для удаляемого вычислительного узла, выполнив команду:
openstack network agent list --host compute1 -
Удалите сервисы, выполнив команду с указанием ID, выведенных на предыдущем шаге:
neutron agent-delete <AGENT_ID1> <AGENT_ID2> <AGENT_ID3>
-
Перейдите на удаляемый вычислительный узел по SSH.
-
Остановите сервис Consul, выполнив команду:
systemctl stop consul.service -
Перейдите на любой управляющий узел по SSH (например,
controller3). -
Удалите ноду вычислительного узла из consul, выполнив команду:
consul force-leave -prune compute1
-
Определите ID объекта BGP для удаляемого вычислительного узла, выполнив команду:
neutron-bgp-manage-adv-ip --config-file /etc/neutron/conf.d/neutron-server/neutron.conf listПример вывода команды[ ...{'host': u'compute1','id': u'c876f6ab-0849-4434-aec8-d00167bbc7cf','ip': u'10.12.100.21'},...] -
Удалите анонсирование IP для удаляемого вычислительного узла, указав идентификатор из секции
id, выведенный на предыдущем шаге:neutron-bgp-manage-adv-ip --config-file /etc/neutron/conf.d/neutron-server/neutron.conf delete <ID>
- Перейдите на деплой-ноду по SSH (см. раздел Вход на деплой-ноду по SSH).
- В файле
/home/centos/inventory/<ENV>/<ENV>.ymlудалите информацию о вычислительном узле из секцийhostsиhost_vars.
Для удаления вычислительного узла из мониторинга:
- Выполните вход в Портал мониторинга под учётной записью Администратора Платформы.
- Перейдите в раздел «Configuration» на страницу «Hosts».
- Из таблицы выберите удаляемый вычислительный узел, нажав на его имя.
- В открывшейся форме нажмите на кнопку «Delete» и подтвердите удаление.
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Подключитесь к одной из нод кластера RabbitMQ для Nova, выполнив команду:
kubectl -n rabbitmq exec -it rabbitmq-nova-0 -- bash -
Проверьте длину очереди для удаляемого вычислительного узла, выполнив команду:
rabbitmqctl list_queues | grep compute1Очередь не должна содержать сообщений (показатель
0для параметраmessages). -
Если в очереди есть непрочитанные сообщения, то очистите очередь, выполнив команду:
rabbitmqctl purge_queue <QUEUE_NAME>, где
<QUEUE_NAME>— наименование очереди из предыдущего шага, в которой содержались сообщения.
Для удаления вычислительного узла (resource provider) из nova-placement-api выполните шаги:
-
Получите токен авторизации (см. раздел Получение токена авторизации).
-
Скопируйте значение заголовка
x-subject-token, полученного на предыдущем шаге. -
Получите UUID
resource_providerдля удаляемого вычислительного узла, выполнив команду:curl -s -H "Content-Type: application/json" -H "X-Auth-Token: <TOKEN>" http://<OPENSTACK_PRIVATE_ENDPOINT>:8778/resource_providers?name=compute1, где
<TOKEN>— токен авторизации, полученный на предыдущем шаге.Пример вывода команды{"resource_providers": [{"uuid": "2da1e61d-274c-4b3a-a055-bfa0e95ef632","name": "compute1"}]} -
Проверьте наличие аллоцированных ресурсов для данного вычислительного узла, выполнив команду:
curl -s -H "Content-Type: application/json" -H "X-Auth-Token: <TOKEN>" http://<OPENSTACK_PRIVATE_ENDPOINT>:8778/resource_providers/<RESOURCE_PROVIDER_UUID>/allocations -
Если в результате выполнения команды получен пустой объект
"allocations": {}, то удалите resource provider, выполнив команду:curl -v -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: <TOKEN>" http://<OPENSTACK_PRIVATE_ENDPOINT>:8778/resource_providers/<RESOURCE_PROVIDER_UUID>
-
Перейдите на деплой-ноду по SSH (см. раздел Вход на деплой-ноду по SSH).
-
Удалите запись для удаляемого вычислительного узла:
- На серверах OpenStack из файла
/etc/hosts. - На серверах DNS в инфраструктуре.
- На серверах OpenStack из файла
Не все управляющие узлы полностью равнозначны. Один из управляющих узлов содержит в себе мастер-ноды кластеров СУБД Tarantool (Breeze, Dusk), используемые некоторыми другими компонентами Платформы (например, IAM). Все остальные управляющие узлы содержат реплики этих кластеров (доступные только для чтения).
Для определения списка запущенных на узле инстансов Tarantool используйте команду:
ls /etc/tarantool/instances.available
Для определения того, является ли данный управляющий узел Главным управляющим узлом, достаточно подключиться к одному из инстансов Tarantool командой tarantoolctl enter <ИМЯ_ИНСТАНСА> и проверить значение параметра read_only из box.cfg при помощи команды box.info.ro.
sudo bashtarantoolctl enter breeze_01box.info.ro
Возможные результаты:
true— текущий узел является обычным управляющим узлом с репликой Tarantool.false— текущий узел является Главным управляющим узлом с мастером Tarantool.
~> tarantoolctl enter breeze_01connected to unix/:/var/run/tarantool/breeze_01.controlunix/:/var/run/tarantool/breeze_01.control> box.info.ro---- false...
Для обслуживания управляющего узла предусмотрен механизм его временного отключения из кластера.
Чтобы вывести управляющий узел из кластера:
-
В Портале мониторинга установите период технического обслуживания (Maintenance periods) для отключаемого управляющего узла:
- В меню слева перейдите в раздел «Configuration» → «Maintenance».
- В верхнем правом углу нажмите на кнопку «Create maintenance period».
- Заполните поля формы:
-
Вкладка «Maintenance»:
-
Name — наименование периода. Обязательное поле.
-
Maintenance type — тип периода:
- With data collection — со сбором данных.
- No data collection — без сбора данных.
-
Active since — начало активности периода технического обслуживания. Обязательное поле.
-
Active till — конец активности периода технического обслуживания. Обязательное поле.
-
Description — описание периода.
-
-
Вкладка «Periods»: нажмите на ссылку (не кнопку) «Add» в списке «Periods». В открывшемся модальном окне укажите периодичность и продолжительность периода технического обслуживания и нажмите на кнопку «Add».
-
Вкладка «Hosts and groups»:
- Host groups — группы хостов. Нажмите на кнопку «Select» справа от названия, выберите пункты списка и нажмите на кнопку «Select». Выберите из списка управляющий узел, который необходимо вывести из кластера.
- Hosts — хосты. Нажмите на кнопку «Select» справа от названия, выберите пункты списка и нажмите на кнопку «Select»
- Tags — поиск по тегам.
-
- Нажмите на кнопку «Add» в нижней части любой из вкладок. На странице «Maintenance periods» появится новая запись.
-
Перейдите на отключаемый управляющий узел по SSH.
-
Проверьте состояние таймеров биллинга и сервисов, которые они запускают:
systemctl list-timers --all scrooge-charger.timer scrooge-billing.timersystemctl list-units --all scrooge-charger.service scrooge-billing.serviceЕсли сервисы не запущены и их запуск не запланирован таймерами в ближайшее время, перейдите к следующему шагу.
-
Выполните команду остановки сервера:
shutdown now
После успешного выполнения вышеописанных шагов управляющий узел можно отключить от сети, выключить питание и выполнить работы по ремонту / модернизации.
Чтобы включить управляющий узел:
-
Убедитесь, что управляющий узел физически включен и выполнен автоматический запуск сервисов.
-
Перейдите на включенный управляющий узел по SSH.
-
Проверьте состояние сервисов, выполнив команду:
systemctl list-units --all --type=service -
Если сервисы из списка выше не запустились автоматически, то выполните их перезапуск вручную.
-
При включении узла
controller1проверьте работу сервиса биллинга, выполнив команду:systemctl | grep scroogeУбедитесь, что сервисы находятся в статусах
activeиrunning. Для таймеров допускается статусwaiting. -
Переключитесь на пользователя
root, выполнив командуsudo bash. -
Проверьте наличие запущенных docker-контейнеров, выполнив команды:
docker ps | grep gb_tarantooldocker ps | grep rabbit_persistent -
Запустите неработающие контейнеры, выполнив команды:
docker start gb_tarantooldocker start rabbit_persistent -
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Проверьте состояние нод и сервисов Kubernetes:
kubectl get nodeskubectl get pods -A | grep 0/Все ноды должны находиться в статусе
Ready. -
Проверьте состояние агентов Neutron:
openstack network agent listАгенты должны находиться в состоянии
Alive—True,State—UP. -
Проверьте состояние сервисов Nova:
openstack compute service listСервисы должны находиться в статусе
enabled,up.
Сервисы OpenStack для хранения информации используют БД MySQL, которые располагаются на управляющих узлах (контроллерах).
Отдельные серверы БД предоставляются для каждого сервиса и объединяются в единый кластер Galera.
Чтобы развернуть кластер Galera, запустите плейбук для роли galera:
ansible-playbook -i vkcloud.yml \-e env=stage_name \./playbooks/galera.yml
Чтобы восстановить кластер Galera, запустите плейбук для роли galera с тегом recovery и передайте переменную galera_recovery_group с именем группы для кластера.
ansible-playbook -i vkcloud.yml\-e env=vkcloud \-e galera_recovery_group=vkcloud_galera_nova \-t recovery \../ansible-openstack/playbooks/galera.yml
Чтобы создать скрипты для резервного копирования на управляющем узле с БД, используйте один из следующих способов:
- Вручную создайте каталог для резервного копирования на нужном узле или узлах, по умолчанию это каталог
/srv/backup(в дальнейшем указывается в переменнойxtrabackup_dir). Запустите плейбук для ролиgaleraкак описано в разделе Управление кластерами БД. - В файле inventory установите переменную
galera_create_backup_script_dir: Trueдля нужного хоста.
Восстановление БД имеет смысл выполнять, только когда нет других вариантов.
Чтобы восстановить БД из резервной копии, запустите плейбук для роли galera со следующими переменными:
ansible-playbook -i vkcloud.yml \-e env=vkcloud \-e db_restore_name=nova \-e xtrabackup_dir="/srv/backup" \-e db_backup_file_time=20220816_1428 \-e galera_recovery_group=vkcloud_galera_nova \-t recovery \../ansible-openstack/playbooks/galera.yml
Чтобы восстановление прошло без ошибок, должны быть выполнены следующие условия:
- Резервная копия БД должна быть создана скриптом
/srv/backup/backup_xtra_<db_name>.sh. - Файл с резервной копией должен быть хотя бы на одном из узлов с БД.
- В команде восстановления БД все переменные должны быть обязательно заданы, кроме
xtrabackup_dir(по умолчанию берется из файла inventory).
При восстановлении БД будут созданы следующие временные ресурсы:
- Файл резервной копии будет скопирован на деплой-ноду в
/tmpи в дальнейшем автоматически удален. - Файл резервной копии будет скопирован на ноду, выбранную в качестве bootstrap-ноды для кластера, и не будет удален.
- Будет разархивирован каталог
<xtrabackup_dir>/extrabackup_<db_restore_name>и не будет удален.
Логика по восстановлению кластера определена в файле roles/galera/tasks/dbrecovery.yml.
Конфигурация сервисов хранится на деплой-ноде. По умолчанию она размещена по адресу /home/centos/inventory/ansible-openstack/roles, где centos — имя пользователя по умолчанию.
Эти настройки распределяются Ansible при перезапуске/обновлении сервисов с помощью ansible playbook.
Основные переменные лежат в Ansible inventory в директории /home/centos/inventory/<ENV>, где:
centos— имя пользователя по умолчанию.<ENV>— название инсталляции/окружения.
Чтобы изменить конфигурацию сервиса на узлах:
-
Выполните вход на деплой-ноду по SSH (см. раздел Вход на деплой-ноду по SSH).
-
Найдите директорию с
.ymlфайлом сервиса (/home/centos/inventory/ansible-openstack/playbooks/). Если отобразится сообщение видаPermission denied, зайдите под пользователемroot:sudo su - root. -
Внесите изменения в конфигурационный файл и сохраните его.
-
Добавьте наименование окружения в переменную
STAND_NAME, выполнив команду:STAND_NAME=<НАИМЕНОВАНИЕ_ОКРУЖЕНИЯ> -
Если требуется выполнить обновление версии сервиса, в
/home/centos/inventory/${STAND_NAME}/group_vars/${STAND_NAME}/versions.ymlукажите новую версию. -
Перезагрузите конфигурацию с помощью ansible playbook:
ansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME}/home/centos/inventory/ansible-openstack/playbooks/<НАЗВАНИЕ_КОНФИГУРАЦИОННОГО_ФАЙЛА_СЕРВИСА>.yml <ОПЦИИ>
Чаще всего применяются следующие варианты запуска ansible playbook (на примере сервиса ClickHouse, директория запуска /home/centos/inventory/${STAND_NAME}):
-
Валидация — проверка конфигурации в системе без внесения изменений.
Пример запуска валидации сервиса ClickHouseansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME} ../ansible-openstack/playbooks/clickhouse.yml -C -D -
Установка сервиса с нуля — выполняются дополнительные действия, например, создание БД (в примере ниже —
bootstrap=true). Список дополнительных действий может отличатся в зависимости от сервиса.Пример установки сервиса с нуляansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME} ../ansible-openstack/playbooks/clickhouse.yml -D -e bootstrap=true -
Обновление версии сервиса из
/home/centos/inventory/${STAND_NAME}/group_vars/${STAND_NAME}/versions.yml.Пример обновления версии сервисаansible-playbook -i ${STAND_NAME}.yml -e env=${STAND_NAME} ../ansible-openstack/playbooks/clickhouse.yml -D
Полный перечень опций см. в официальной документации Ansible.