J
https://github.com/openstack/nova/blob/cd5b7e806855fa37461bc2da865435b16408fbd3/nova/scheduler/request_filter.py#L243
Михаил
J
J
Это forbidden trait.
Михаил
ага...
Михаил
Это forbidden trait.
The ComputeFilter filters out hosts for compute services that are
disabled.
Михаил
J
Да.
И фильтр отбрасывает хост если у него есть трейт COMPUTE_STATUS_DISABLED.
Михаил
Если руками накинуть
[muxa@zeon-desktop ~]$ openstack compute service set --disable ost-c01-3 nova-compute
то трейт появляется
MariaDB [placement]> select * from resource_provider_traits where trait_id = 25;
+---------------------+------------+----------+----------------------+
| created_at | updated_at | trait_id | resource_provider_id |
+---------------------+------------+----------+----------------------+
| 2023-11-21 10:28:35 | NULL | 25 | 9 |
+---------------------+------------+----------+----------------------+
1 row in set (0.000 sec)
J
added forbiddent trait значит не что фильтр доавляет трейт к хосту, а добавляет трейт как запрещенный в request_spec.
Михаил
J
Я говорю, ты не за то сообщение в логах зацепился.
J
Проблема в другом месте.
Михаил
Михаил
так?
Михаил
Михаил
только один фильтр отбивает. Этот. Остальные пропускают
Михаил
Михаил
Шиза, но я попробовал. По прежнему No valid hosts found
Михаил
Я вчера там компьют-ноды шатал и они ругались на то, названия отличаются от FQDN/Hostname.
J
то бишь он разольёт (пропустит фильтр) при наличии этого трейта штоле?
Нет. Потому что фильтрует хосты по статусу не nova, а placement.
openstack allocation candidate list пробуй сделать, запрашивая нужные тебе ресурсы и смотри что вернет placement.
Смотри отображения compute хостов в placement:
openstack resource provider list
openstack resource provider inventory list
И так далее.
J
У тебя проблема скорее в том что placement вообще не отдает кандидатов или отдает таких кандидатов, которые не проходят фильтры в nova-scheduler.
Михаил
J
Раз шатал, возможно у тебя placement и nova вообще не сихронизированы теперь.
Михаил
Михаил
Но есть интересный нюанс. Ресурс провайдеры указаны с доменом. А в компьют службах без. Вот я не помню как раньше было
user@host:~$ openstack resource provider list
+--------------------------------------+------------------+------------+--------------------------------------+----------------------+
| uuid | name | generation | root_provider_uuid | parent_provider_uuid |
+--------------------------------------+------------------+------------+--------------------------------------+----------------------+
| 199e8650-127b-4d32-b9a6-3c1bcc936272 | ost-c02-3.mydomain | 44 | 199e8650-127b-4d32-b9a6-3c1bcc936272 | None |
| 9b909f4a-ab0c-4bbd-a820-43d23e563bbe | ost-c01-3.mydomain | 42 | 9b909f4a-ab0c-4bbd-a820-43d23e563bbe | None |
| 3460f4e5-fb0c-46c2-8f6e-2e91416d4661 | ost-c03-3.mydomain | 21 | 3460f4e5-fb0c-46c2-8f6e-2e91416d4661 | None |
+--------------------------------------+------------------+------------+--------------------------------------+----------------------+
J
Михаил
Про чо я и говорю.
А можешь глянуть, у тебя
openstack compute service list --service nova-compute
openstack resource provider list
openstack hypervisor list
Одинаковые (домен/хостнейм)? Ну просто чтобы в этом месте сверить часы
Stanley
Пардон, а ты правда думаешь, что сервисы ходят по ИП, а не по именам?
Михаил
при чём тут это? У меня по DNS везде. DNS не менялся
Stanley
Да, да, не при чем. Ага
Михаил
Stanley
Ясно, понятно. Ждем просветления. :)
Михаил
J
Прям посмотри вывод openstack resource provider list/show и openstack hypervisor list/show.
Михаил
Михаил
user@host:~$ host ost-c01-3
ost-c01-3.domain has address 192.168.112.2
user@host:~$ host ost-c01-3.domain
ost-c01-3.domain has address 192.168.112.2
Михаил
Михаил
там ничего нет
Михаил
никакого хардкода там. Всё через DNS
Михаил
почему
Михаил
ещё раз - в резолвере стоит search domain. Он дописывает домен когда резолвишь имя
Михаил
поэтому можно резолвить как полный FQDN с доменом, так и по хостнейму без точек
Михаил
Михаил
Ну без этого бы вообще не резолвилось)
J
dns там вообще непричем, я думаю)
J
Там можно удалить всех ресурс провайдеров, которые сейчас есть и дать nova заново их добавить.
А потом уже аллокейшоны починить, если есть что чинить.
Михаил
Михаил
?
Михаил
Вот я как раз залез в детали)
Михаил
Это да)
J
Это да)
Сверил hypervisor_hostname с именами ресурс провайдеров?)
Михаил
J
Пробовал руками кандидатов дергать?
J
Михаил
А что сделал то?)
Вы будете ржать) Это магия)
Я сначала в конфиге компьюта поменял host = на fqdn. Чтобы в компьют службы заехало полное имя. Оно заехало, но не смогло создать ресурс провайдер - сказало что такой уже есть. Я потыркался и поменял обратно. И всё заработало.
При этом у меня в compute service list как были hostname'ы так и остались. А в resource provider list и hypervisor list полные fqdn
J
Михаил
Михаил
J
То что не совпадают имена ресурс провайдеров в placement и hypervisor_hostnaem базе nova?
Или то что не совпадают имена в выводе service_list с именами ресурс провайдеров?
Михаил
J
Второе
Второе логично.
А ты посмотри hypervisor show
В поле hypervisor_hostname у тебя небось так и есть полное имя, fqdn.
Михаил
Эх, про молод это конечно вам спасибо)
Михаил
J
Ну вот.
Михаил
Ну вот.
смотри, в hypervisor show
в hypervisor_hostname стоит fqdn (sic!)
а в service_host стоит hostname
Михаил
Прям дичь)
J
Это не дичь, это нормально.
В базе два отдельных поля.
Одно hypervisor_hostname - это твое полное имя, второе host, там только хост и есть.
Вот оно и показывается.
Михаил
Михаил
Вы не правы насчёт винды, но чувствую, что до ваших золотых макинтошей мне далеко)
Михаил
И тыквенного латте)
Михаил
причём тут DNS?) Вам же даже выше писали, что дело не в нём)
Михаил
Мне кажется вы говорите лишь бы говорить)