J
https://github.com/openstack/nova/blob/cd5b7e806855fa37461bc2da865435b16408fbd3/nova/scheduler/request_filter.py#L243
Михаил
Не думаю что дело в этом.
Ну как раз судя по логам в этом)
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.
Михаил
Да. И фильтр отбрасывает хост если у него есть трейт COMPUTE_STATUS_DISABLED.
Ну вот я об этом и пишу. Проблема в том, что трейтов нет
J
Ну вот я об этом и пишу. Проблема в том, что трейтов нет
А почему они должны быть? Ты прежде чем отвечать и пытаться мне доказать что-то прочти что я пытаюсь сказать.
J
Я говорю, ты не за то сообщение в логах зацепился.
J
Проблема в другом месте.
Михаил
А почему они должны быть? Ты прежде чем отвечать и пытаться мне доказать что-то прочти что я пытаюсь сказать.
Ты пытаешься сказать, что мне трейт накидывается вместо фильтрации. Но трейтов нет
Михаил
так?
Михаил
только один фильтр отбивает. Этот. Остальные пропускают
J
Ты пытаешься сказать, что мне трейт накидывается вместо фильтрации. Но трейтов нет
Нет. Я говорю что в request_spec объект инстанса добавляется запрещенный трейт. Это все что происходит внутри scheduler на данном этапе. запрещенный трейт внутри request_spec обрабатывает уже pre-filter внутри placement.
Михаил
Шиза, но я попробовал. По прежнему 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 вообще не сихронизированы теперь.
Михаил
Раз шатал, возможно у тебя 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 | +--------------------------------------+------------------+------------+--------------------------------------+----------------------+
Михаил
Про чо я и говорю.
А можешь глянуть, у тебя openstack compute service list --service nova-compute openstack resource provider list openstack hypervisor list Одинаковые (домен/хостнейм)? Ну просто чтобы в этом месте сверить часы
Stanley
Пардон, а ты правда думаешь, что сервисы ходят по ИП, а не по именам?
Михаил
при чём тут это? У меня по DNS везде. DNS не менялся
Stanley
Да, да, не при чем. Ага
Михаил
Да, да, не при чем. Ага
А где ты IP увидел?
Stanley
Ясно, понятно. Ждем просветления. :)
Михаил
Ясно, понятно. Ждем просветления. :)
НУ если аргументы кончились, то ок)
Stanley
НУ если аргументы кончились, то ок)
Аргументы на что, малыш? :) Тебе попытались помочь, а срачи - это по пятницам. Сегодня нельзя. Харам
J
НУ если аргументы кончились, то ок)
Вот что мне скажи. Как nova и placement понимают по-твоему какой ресурс провайдер какому гипервизору соответствует?
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 с именами ресурс провайдеров?)
Михаил
Раз шатал, возможно у тебя placement и nova вообще не сихронизированы теперь.
Заработало, спасибо! Вот это скорее всего было ближе к правде
J
Пробовал руками кандидатов дергать?
Михаил
А что сделал то?)
Вы будете ржать) Это магия) Я сначала в конфиге компьюта поменял host = на fqdn. Чтобы в компьют службы заехало полное имя. Оно заехало, но не смогло создать ресурс провайдер - сказало что такой уже есть. Я потыркался и поменял обратно. И всё заработало. При этом у меня в compute service list как были hostname'ы так и остались. А в resource provider list и hypervisor list полные fqdn
Михаил
А что сделал то?)
Но в любом случае, спасибо вам большое за содействие!
Михаил
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?) Вам же даже выше писали, что дело не в нём)
Михаил
Мне кажется вы говорите лишь бы говорить)