Вопрос или проблема
Когда я удаляю вычислительную службу с помощью: openstack compute service delete a04910ef-1441-4949-8ffb-6393c22141b2
, я могу перезапустить nova-compute
на машине с помощью sudo systemctl restart nova-compute
, чтобы вернуть службу в openstack.
Однако узел больше не отображается в openstack hypervisor list
(os-compute03.maas
в моем случае):
$ openstack compute service list --service nova-compute
+--------------------------------------+--------------+-------------------+------+----------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+--------------------------------------+--------------+-------------------+------+----------+-------+----------------------------+
| d1fadd40-6035-4f76-b8c1-5b981d003832 | nova-compute | os-compute08.maas | nova | disabled | down | 2024-09-25T14:02:55.000000 |
| 7e02a0bd-0e53-45bc-9680-99a33d98c05b | nova-compute | os-compute04.maas | nova | enabled | up | 2024-10-18T11:43:12.000000 |
| 7f47d65e-b041-44dc-927e-085effdf0ec9 | nova-compute | os-compute09.maas | nova | enabled | up | 2024-10-18T11:43:07.000000 |
| 3a7527b3-3664-4ae1-ac90-ac04e835ee5b | nova-compute | os-compute03.maas | nova | enabled | up | 2024-10-18T11:43:13.000000 |
+--------------------------------------+--------------+-------------------+------+----------+-------+----------------------------+
$ openstack hypervisor list
+----+---------------------+-----------------+----------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+----------+-------+
| 1 | os-compute08.maas | QEMU | 10.0.1.8 | down |
| 2 | os-compute04.maas | QEMU | 10.0.1.4 | up |
| 3 | os-compute09.maas | QEMU | 10.0.1.9 | up |
+----+---------------------+-----------------+----------+-------+
^ нет os-compute03.maas
$ sudo nova-manage cell_v2 list_hosts
Модули с известными проблемами патча monkey eventlet были импортированы до патча monkey eventlet: urllib3. Это предупреждение обычно можно игнорировать, если вызывающая сторона только импортирует, а не выполняет код nova.
Устарело: Опция "logdir" из группы "DEFAULT" устарела. Используйте опцию "log-dir" из группы "DEFAULT".
+-----------+--------------------------------------+-------------------+
| Cell Name | Cell UUID | Hostname |
+-----------+--------------------------------------+-------------------+
| cell1 | d3dfd353-b4ee-4293-b362-1e0175ebe337 | os-compute04.maas |
| cell1 | d3dfd353-b4ee-4293-b362-1e0175ebe337 | os-compute08.maas |
| cell1 | d3dfd353-b4ee-4293-b362-1e0175ebe337 | os-compute09.maas |
+-----------+--------------------------------------+-------------------+
$ sudo nova-manage cell_v2 discover_hosts --verbose
Модули с известными проблемами патча monkey eventlet были импортированы до патча monkey eventlet: urllib3. Это предупреждение обычно можно игнорировать, если вызывающая сторона только импортирует, а не выполняет код nova.
Устарело: Опция "logdir" из группы "DEFAULT" устарела. Используйте опцию "log-dir" из группы "DEFAULT".
Найдены 2 сопоставления ячеек.
Пропускаем cell0, так как он не содержит узлов.
Получаем вычислительные узлы из ячейки 'cell1': d3dfd353-b4ee-4293-b362-1e0175ebe337
Найдены 0 некартированных вычислительных узлов в ячейке: d3dfd353-b4ee-4293-b362-1e0175ebe337
Я попытался перезапустить контроллер nova:
$ sudo systemctl restart nova-scheduler
$ sudo systemctl restart nova-conductor
При перезапуске контроллера nova в логах записано следующее:
2024-10-18 11:53:44.939 630048 INFO nova.scheduler.host_manager [None req-eb8c8117-136c-4a13-ac57-d32d4099388a - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute09.maas'. Восстановлен его InstanceList.
2024-10-18 11:53:44.939 630046 INFO nova.scheduler.host_manager [None req-eb8c8117-136c-4a13-ac57-d32d4099388a - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute09.maas'. Восстановлен его InstanceList.
2024-10-18 11:53:44.940 630045 INFO nova.scheduler.host_manager [None req-eb8c8117-136c-4a13-ac57-d32d4099388a - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute09.maas'. Восстановлен его InstanceList.
2024-10-18 11:53:44.968 630047 INFO nova.scheduler.host_manager [None req-eb8c8117-136c-4a13-ac57-d32d4099388a - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute09.maas'. Восстановлен его InstanceList.
2024-10-18 11:54:02.539 630048 INFO nova.scheduler.host_manager [None req-ad410200-f99f-4dc7-896d-637dd9620568 - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute04.maas'. Восстановлен его InstanceList.
2024-10-18 11:54:02.541 630047 INFO nova.scheduler.host_manager [None req-ad410200-f99f-4dc7-896d-637dd9620568 - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute04.maas'. Восстановлен его InstanceList.
2024-10-18 11:54:02.542 630046 INFO nova.scheduler.host_manager [None req-ad410200-f99f-4dc7-896d-637dd9620568 - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute04.maas'. Восстановлен его InstanceList.
2024-10-18 11:54:02.543 630045 INFO nova.scheduler.host_manager [None req-ad410200-f99f-4dc7-896d-637dd9620568 - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute04.maas'. Восстановлен его InstanceList.
2024-10-18 11:55:06.432 630048 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Сопоставление хоста не найдено для хоста os-compute03.maas. Информация об инстансах для этого хоста не отслеживается.
2024-10-18 11:55:06.432 630048 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute03.maas'. Восстановлен его InstanceList.
2024-10-18 11:55:06.435 630047 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Сопоставление хоста не найдено для хоста os-compute03.maas. Информация об инстансах для этого хоста не отслеживается.
2024-10-18 11:55:06.435 630046 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Сопоставление хоста не найдено для хоста os-compute03.maas. Информация об инстансах для этого хоста не отслеживается.
2024-10-18 11:55:06.436 630045 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Сопоставление хоста не найдено для хоста os-compute03.maas. Информация об инстансах для этого хоста не отслеживается.
2024-10-18 11:55:06.436 630047 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute03.maas'. Восстановлен его InstanceList.
2024-10-18 11:55:06.437 630045 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute03.maas'. Восстановлен его InstanceList.
2024-10-18 11:55:06.436 630046 INFO nova.scheduler.host_manager [None req-53ac9845-afb5-48ec-b24f-344d2afcfc3f - - - - - -] Получен запрос синхронизации от неизвестного хоста 'os-compute03.maas'. Восстановлен его InstanceList.
И в частности: Сопоставление хоста не найдено для хоста os-compute03.maas. Информация об инстансах для этого хоста не отслеживается.
Я предполагаю, что именно в этот момент узел должен быть добавлен в ячейку nova cell_v2? А это действительно не так.
Я полагаю, что следующие записи в базе данных касаются вычислительных узлов:
mysql> SELECT hypervisor_hostname, host_ip FROM nova.compute_nodes;
+---------------------+----------+
| hypervisor_hostname | host_ip |
+---------------------+----------+
| os-compute08.maas | 10.0.1.8 |
| os-compute04.maas | 10.0.1.4 |
| os-compute09.maas | 10.0.1.9 |
| os-compute03.maas | 10.0.1.3 |
+---------------------+----------+
4 rows in set (0.00 sec)
os-compute03.maas действительно не отображается в таблице nova_api.host_mappings
:
SELECT * FROM nova_api.host_mappings;
+---------------------+------------+----+---------+-------------------+
| created_at | updated_at | id | cell_id | host |
+---------------------+------------+----+---------+-------------------+
| 2024-07-02 21:23:10 | NULL | 1 | 2 | os-compute08.maas |
| 2024-07-02 21:23:11 | NULL | 2 | 2 | os-compute04.maas |
| 2024-07-02 21:23:11 | NULL | 3 | 2 | os-compute09.maas |
+---------------------+------------+----+---------+-------------------+
Я не пытался вручную добавить хост в эту таблицу. Я предполагаю, что это должно происходить автоматически, но когда? Что я упустил?
Как мы можем дальше отлаживать эту ситуацию?
Ответ или решение
Для решения проблемы с недоступным вычислительным узлом, который не отображается в списках гипервизоров и не зарегистрирован в базе данных Nova, необходимо рассмотреть несколько ключевых аспектов работы OpenStack Nova и порядок диагностики.
Ситуация
Ваша ситуация возникла после удаления сервиса nova-compute
с помощью команды:
openstack compute service delete a04910ef-1441-4949-8ffb-6393c22141b2
После этого, при перезапуске службы nova-compute
, узел не появился в списке гипервизоров командой openstack hypervisor list
.
Анализ
1. Проверка статуса службы
В первую очередь стоит убедиться, что служба nova-compute
на узле os-compute03.maas
действительно запущена. Используйте следующую команду для проверки статуса:
sudo systemctl status nova-compute
Если служба не работает, это может быть причиной отсутствия узла в списках.
2. Логи службы
Изучите логи службы nova-compute
, чтобы найти сообщения об ошибках или предупреждениях, которые могут указывать на проблему. Логи обычно находятся в /var/log/nova/
. Ищите такие файлы, как nova-compute.log
.
3. Проверка конфигурации
Убедитесь, что файл конфигурации nova.conf
на узле содержит правильные параметры, включая:
transport_url
: Настройка подключения к message broker (например, RabbitMQ).my_ip
: IP-адрес узла.enabled_apis
: Убедитесь, что API, которые вы собираетесь использовать, включены.
Пример:
[DEFAULT]
my_ip = 10.0.1.3
transport_url = rabbit://openstack:password@controller
4. Обнаружение и регистрация узлов
Почему узел os-compute03.maas
не отображается в списке nova_api.host_mappings
? Это происходит, когда nova-compute
не может зарегистрировать свой узел. За это отвечает команда nova-manage cell_v2 discover_hosts
. Вы уже запускали эту команду, однако она не нашла незарегистрированных хостов.
Попробуйте вызвать обнаружение хостов по следующей команде для принудительного добавления узлов:
sudo nova-manage cell_v2 discover_hosts --verbose --all
5. Проблемы с базой данных
Вы отметили, что в таблице nova.compute_nodes
все еще присутствует запись для os-compute03.maas
. Это может быть связано с тем, что записи в базе данных не обновляются:
- Убедитесь, что таблицы в базе данных не повреждены.
- Проверьте, есть ли в
nova_api.host_mappings
запись дляos-compute03.maas
. Если ее нет, то необходимо будет добавить ее вручную или попытаться перезапустить сервисы, чтобы они обнаружили узел.
Рекомендации
-
Перезапустите все сервисы Nova:
sudo systemctl restart nova-scheduler sudo systemctl restart nova-conductor
-
Запустите процесс откат-проверки для всех гипервизоров:
Рассмотрите возможность отключения и повторного включенияnova-compute
на проблемном узле:sudo systemctl stop nova-compute sudo systemctl start nova-compute
-
Проверьте состояние всех связанных сервисов с помощью:
openstack service list
Заключение
Если после выполнения всех вышеуказанных шагов вычислительный узел все еще не отображается в списке гипервизоров, рекомендуется пересмотреть конфигурацию OpenStack и выполнение миграций или обновлений баз данных. Возможно, стоит обратиться за помощью к документации OpenStack или сообществу, так как проблема может быть уникальной для вашего окружения.
Это поможет вам поддерживать работоспособность вашего облачного решения и убедиться, что все узлы правильно зарегистрированы и функционируют.