Не удалось развернуть экземпляр OpenStack с ошибкой “Не удалось привязать порт”

Вопрос или проблема

В последнее время у меня возникли трудности с развертыванием экземпляров в нашей среде OpenStack. Каждый раз, когда я пытаюсь развернуть новый экземпляр через Horizon, я получаю следующее сообщение об ошибке:

Ошибка: Не удалось выполнить запрашиваемую операцию с экземпляром "testinstance", экземпляр находится в состоянии ошибки: Пожалуйста, попробуйте снова позже [Ошибка: Превышено максимальное количество попыток. Превышено максимальное количество попыток планирования 3 для экземпляра d0ea4854-e2ab-4f1f-ac11-fc28b8444011. Последнее исключение: Привязка порта c4a851e7-7ad2-4149-92c7-6116d8965ab2 не удалась, пожалуйста, проверьте журналы Neutron для получения дополнительной информации.].

Я пробовал несколько решений, которые я видел на ask.openstack.org и здесь, но ни одно из них не сработало. Сообщение об ошибке осталось тем же самым. Я также несколько раз проверил документацию, чтобы убедиться, что файлы конфигурации правильные. Они правильные. Тем не менее, я продолжаю получать эту ошибку. Следующее сообщение об ошибке можно найти в /var/log/neutron/neutron-server.log на контроллере:

ERROR neutron.plugins.ml2.managers [req-dd158cae-eef9-47c3-9010-ec0f8b16ae59 ee8cee6074064601bc7dc2ce3683faac 716d6d0c0224429eafbf712fc0fe580d - default default] Не удалось привязать порт c4a851e7-7ad2-4149-92c7-6116d8965ab2 на хосте CoDER-N2 для vnic_type normal, используя сегменты [{'id': 'eeaf41d1-b05a-4711-9b5f-86dc0e338391', 'network_type': 'vxlan', 'physical_network': None, 'segmentation_id': 3, 'network_id': '3c92802e-0dc9-4f16-8865-7ee5cfc4d953'}]

Вот соответствующие файлы конфигурации на контроллере:

/etc/neutron/neutron.conf

[database]
connection = mysql+pymysql:<удалено из-за фильтра спама>

[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true

transport_url = rabbit:<удалено из-за фильтра спама>

auth_strategy = keystone

notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[keystone_authtoken]
www_authenticate_uri = <удалено из-за фильтра спама>
auth_url = <удалено из-за фильтра спама>
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[nova]
auth_url = <удалено из-за фильтра спама>
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

/etc/nova/nova.conf

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit:<удалено из-за фильтра спама>
my_ip = 10.70.17.14

[api_database]
connection = mysql+pymysql:<удалено из-за фильтра спама>

[database]
connection = mysql+pymysql:<удалено из-за фильтра спама>

[api]
auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = <удалено из-за фильтра спама>
auth_url = <удалено из-за фильтра спама>
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova

[neutron]
auth_url = <удалено из-за фильтра спама>
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
metadata_proxy_shared_secret = metadata_secret

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

[glance]
api_servers = <удалено из-за фильтра спама>

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = placement

[scheduler]
discover_hosts_in_cells_interval = 300

Вот файлы на вычислительных узлах:
/etc/neutron/neutron.conf

[DEFAULT]
transport_url = rabbit:<удалено из-за фильтра спама>

auth_strategy = keystone

[keystone_authtoken]
www_authenticate_uri = <удалено из-за фильтра спама>
auth_url = <удалено из-за фильтра спама>
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron


[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings = provider:enp4s0

[vxlan]
enable_vxlan = true
local_ip = <удалено из-за фильтра спама>
l2_population = true

[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

У меня также есть вывод из /var/log/nova/nova-server.log с вычислительных узлов здесь:

2020-11-20 08:28:12.070 332012 ERROR nova.compute.manager [экземпляр: d0ea4854-e2ab-4f1f-ac11-fc28b8444011] nova.exception.PortBindingFailed: Привязка не удалась для порта c4a851e7-7ad2-4149-92c7-6116d8965ab2, пожалуйста, проверьте журналы neutron для получения дополнительной информации.

К сожалению, оба журнала neutron на вычислительных узлах пусты. Там нет никаких записей. Все службы работают.
Я не знаю, что не так. Я подозреваю, что наличие “physical network: none” в neutron-server.log на контроллере указывает на проблему, но я не знаю, что с этим делать. Любая помощь была бы полезна.

У меня также была эта проблема. Нашли ли вы решение? Я предполагаю, что причина проблемы связана с неправильной конфигурацией сети.

У меня также есть эта проблема, я использую OpenStack Antelope на Rocky Linux 9. Проблема была решена, потому что проблема была с openvswitch на контроллере, там было 2 br (br-ex и br-ex-vlan), но на вычислительном узле был только 1 br (br-ex). После добавления br-ex-vlan на вычислительный узел:

ovs-vsctl add-br br-ex-vlan

проблема была решена, я могу видеть имя своего вычислительного узла на сетевом агенте контроллера.

Ответ или решение

При развертывании экземпляров OpenStack и получении ошибки "Failed to bind port" вы сталкиваетесь с распространенной проблемой в сетевой конфигурации. Рассмотрим возможные причины, шаги по устранению, а также рекомендации.

Проблема

Ошибка, которую вы видите в логах, указывает на неудачную привязку порта, что может быть связано с несколькими факторами, включая:

  1. Неправильная настройка сетевых плагинов.
  2. Ошибки в настройках сетевых интерфейсов на контроллере и узлах вычисления.
  3. Ограничения и конфликты виртуальных сетей.

Лог /var/log/neutron/neutron-server.log показывает, что физическая сеть указана как "None", что указывает на то, что Neutron не может привязать порт к виртуальной сети.

Шаги по устранению проблемы

  1. Проверка конфигурации Neutron:

    • Убедитесь, что конфигурация плагина ML2 (/etc/neutron/plugins/ml2/ml2_conf.ini) правильно настроена. Особенно проверьте секцию type_drivers и tenant_network_types, чтобы убедиться, что vxlan правильно указан.
    • Например:
      [ml2]
      type_drivers = flat,vlan,vxlan
      tenant_network_types = vxlan
    • Убедитесь, что mechanism_drivers включает в себя драйвер, который вы используете, например linuxbridge или openvswitch.
  2. Настройки интерфейсов:

    • Проверьте, что на узлах вычисления и контроллере правильно настроены физические интерфейсы. Убедитесь, что интерфейс enp4s0 типа provider действительно существует и правильно сконфигурирован.
    • На узлах вычисления выполните:
      ip addr show
    • Проверьте, существует ли мост, указанный в physical_interface_mappings. Если на узлах вычисления нет истории br-ex, необходимо создать его:
      ovs-vsctl add-br br-ex
  3. Проверка служб:

    • Убедитесь, что службы Neutron на контроллере и узлах вычисления работают без ошибок. Вы можете перезапустить их:
      systemctl restart neutron-server
      systemctl restart neutron-linuxbridge-agent
    • Используйте следующую команду для проверки состояния служб:
      openstack network agent list
    • Ваша нода вычислений должна быть отображена как активная в списке агентов.
  4. Проверка безопасности:

    • Убедитесь, что настройки групп безопасности не блокируют доступ к сетевым сервисам, которые требуются для запуска экземпляров.
    • Попробуйте временно отключить группы безопасности, чтобы проверить, не является ли это причиной проблемы.

Рекомендации

  • Поддерживайте актуальность документации OpenStack, так как настройки могут значительно изменяться с новыми версиями.
  • Рассмотрите возможность использования системы мониторинга для более детального отслеживания сетевых взаимодействий и состояния служб.
  • Создание резервной копии файлов конфигурации перед их изменением поможет вам легко откатиться к предыдущим рабочим версиям.

Заключение

Проблема "Failed to bind port" требует внимательной проверки конфигурации и настройки сетевых плагинов OpenStack. Внимательно следуйте рекомендациям, и вы сможете устранить ошибку. Если проблема сохраняется, возможно, стоит взглянуть на специализированные форумы OpenStack, где опытные специалисты могут предложить дополнительные советы.

Оцените материал
Добавить комментарий

Капча загружается...