Вопрос или проблема
В последнее время у меня возникли трудности с развертыванием экземпляров в нашей среде 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" вы сталкиваетесь с распространенной проблемой в сетевой конфигурации. Рассмотрим возможные причины, шаги по устранению, а также рекомендации.
Проблема
Ошибка, которую вы видите в логах, указывает на неудачную привязку порта, что может быть связано с несколькими факторами, включая:
- Неправильная настройка сетевых плагинов.
- Ошибки в настройках сетевых интерфейсов на контроллере и узлах вычисления.
- Ограничения и конфликты виртуальных сетей.
Лог /var/log/neutron/neutron-server.log
показывает, что физическая сеть указана как "None", что указывает на то, что Neutron не может привязать порт к виртуальной сети.
Шаги по устранению проблемы
-
Проверка конфигурации 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
.
- Убедитесь, что конфигурация плагина ML2 (
-
Настройки интерфейсов:
- Проверьте, что на узлах вычисления и контроллере правильно настроены физические интерфейсы. Убедитесь, что интерфейс
enp4s0
типаprovider
действительно существует и правильно сконфигурирован. - На узлах вычисления выполните:
ip addr show
- Проверьте, существует ли мост, указанный в
physical_interface_mappings
. Если на узлах вычисления нет историиbr-ex
, необходимо создать его:ovs-vsctl add-br br-ex
- Проверьте, что на узлах вычисления и контроллере правильно настроены физические интерфейсы. Убедитесь, что интерфейс
-
Проверка служб:
- Убедитесь, что службы Neutron на контроллере и узлах вычисления работают без ошибок. Вы можете перезапустить их:
systemctl restart neutron-server systemctl restart neutron-linuxbridge-agent
- Используйте следующую команду для проверки состояния служб:
openstack network agent list
- Ваша нода вычислений должна быть отображена как активная в списке агентов.
- Убедитесь, что службы Neutron на контроллере и узлах вычисления работают без ошибок. Вы можете перезапустить их:
-
Проверка безопасности:
- Убедитесь, что настройки групп безопасности не блокируют доступ к сетевым сервисам, которые требуются для запуска экземпляров.
- Попробуйте временно отключить группы безопасности, чтобы проверить, не является ли это причиной проблемы.
Рекомендации
- Поддерживайте актуальность документации OpenStack, так как настройки могут значительно изменяться с новыми версиями.
- Рассмотрите возможность использования системы мониторинга для более детального отслеживания сетевых взаимодействий и состояния служб.
- Создание резервной копии файлов конфигурации перед их изменением поможет вам легко откатиться к предыдущим рабочим версиям.
Заключение
Проблема "Failed to bind port" требует внимательной проверки конфигурации и настройки сетевых плагинов OpenStack. Внимательно следуйте рекомендациям, и вы сможете устранить ошибку. Если проблема сохраняется, возможно, стоит взглянуть на специализированные форумы OpenStack, где опытные специалисты могут предложить дополнительные советы.