Neutron FAQ - вопросы, проблемы и методы из решения

Проблемы с neutron - порядок действий

Схема организации сети openstack neutron приведена на рисунке:

Схема сети Openstack

Порядок действий при проблемах с работой neutron:

  1. Проверить права на каталоги neutron, и, при необходимости исправить:

systemctl daemon-reload
chown neutron:neutron -R /var/lib/neutron
chown neutron:neutron -R /var/log/neutron
chown neutron:neutron -R /etc/neutron
2. Выполнить openstack network agent list - все сервисы должны быть подняты.
3. Проверить логи всех сервисов neutron.
4. Проверить юнит-файлы сервисов neutron-openvswitch-agent на всех гипервизорах на предмет пользователя, от которого они запускаются.
Должны быть User=neutron Group=neutron.
Если там были другие значения, то изменить и сделать рестарт сервиса:

systemctl daemon-reload
systemctl restart neutron-openvswitch-agent

Исправление ошибки регистрации сервиса

При просмотре списка агентов нейтрона на хосте командой:

openstack network agent list --host <hostname>
не отображается OpenvSwitch agent, успешно запущенный на вычислетельном узле.

Почему neutron-openvswitch-agent не может зарегистрироваться на узле?

Оказалось, был не прописан (или неверно прописан) параметр transport_url в секции [DEFAULT] файла /etc/neutron/neutron.conf. Соответственно, запросы на регистрацию сервиса не поступали в шину очередей RabbitMQ и не отображались в запросе.

Исправляем данную запись:

transport_url = rabbit://openstack:MySecretPass@172.18.10.14,openstack:MySecretPass@172.18.10.15

После внесения изменений и рестарта службы - сервис появился.

+--------------------------------------+----------------------+-----------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type           | Host      | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+----------------------+-----------+-------------------+-------+-------+---------------------------+
| 1d3e00e1-f261-4248-a338-114346abffa9 | Loadbalancerv2 agent | NTRN-0001 | None              | True  | UP    | neutron-lbaasv2-agent     |
| 442b75a2-fa71-4eb8-b5d8-ed25b51b2c4c | Open vSwitch agent   | NTRN-0001 | None              | True  | UP    | neutron-openvswitch-agent |
| 5597c863-f7df-407d-8af9-10d5ac20f2ef | L3 agent             | NTRN-0001 | nova              | True  | UP    | neutron-vpn-agent         |
| 56bf6d38-b5b3-4803-81f3-ae9a4cdf20ee | DHCP agent           | NTRN-0001 | nova              | True  | UP    | neutron-dhcp-agent        |
| 7e774db6-5caf-4ca6-b539-fcd57ebaff5c | Open vSwitch agent   | sds-antey | None              | True  | UP    | neutron-openvswitch-agent |
| ae9cb4aa-336e-417b-8193-26dd41e73a6f | Metadata agent       | NTRN-0001 | None              | True  | UP    | neutron-metadata-agent    |
+--------------------------------------+----------------------+-----------+-------------------+-------+-------+---------------------------+

Диагностика виртуального роутера qrouter

Если надо посмотреть подробности работы виртуальной подсети, то это можно сделать через namespaces.

Сначала выясним имя виртуального роутера по его идентификатору:

ip netns | grep <UUID роутера>

Имя роутера начинается с префикса qrouter. Теперь выполняем любую команду диагностики внурти этого виртуального роутера:

ip netns exec <qrouter-name> <команды диагностики>

Например, можно посмотреть конфигурацию сети такой командой:

ip netns exec router ifconfig

Также, можно делать прямую отладку сети neutron, используя namespaces.
Можно заходить в namespace и выходить из него:

ip netns exec ns1 bash
Для выхода: exit.

Можно создать собственный namespace, добавить в него адрес.

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

Пример организации сети с использованием одного сетевого интерфейса

Чтобы настроить сеть хоста с одним сетевым интерфейсом создадим следующую сетевую конфигурацию:

auto br-int
iface br-int inet static
bridge_ports none
        bridge_fd 0
        bridge_maxwait 0
        address 10.0.10.1
        netmask 255.255.255.0
        up iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

Получается, что такой конфигурацией достигается NAT из сети управления management через публичную сеть provider на одном сетевом интерфейсе.

Вместо none может быть интерфейс, который смотрит в некоторый VLAN.
При этом одна из машин может выполнять роль роутера. Порту eno1 назначаем адрес, он смотрит в сеть provider.

Добавить новый пул белых IP-адресов

Например, провайдер выделил нам новый блок:

сеть: 92.255.88.32/28
92.255.88.33 - gateway
92.255.88.34-46 ip addresses range

В cisco на адресе 10.0.1.1 вписать:

interface BVI1
 ip address 92.255.88.34 255.255.255.248 secondary
Далее, необходимо создать подсеть (subnet) в сети provider следующей командой:

openstack subnet create \
--network provider \
--project admin \
--project-domain default \
--subnet-range 92.255.88.32/28 \
--ip-version 4 \
--dns-nameserver 8.8.8.8 \
--description 'Подсеть интернет адресов провайдера Comfortel' \
provider2

Контроль сервисов neutron

Посмотреть состояние всех сервисов neutron можно так:

# openstack network agent list
+--------------------------------------+----------------------+------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type           | Host       | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+----------------------+------------+-------------------+-------+-------+---------------------------+
| 05a99734-9800-4cba-b6b3-d9cc2c039f15 | Metadata agent       | NTRN-0002  | None              | True  | UP    | neutron-metadata-agent    |
| 1de16299-7de5-434f-b04e-3ca17c550a48 | Open vSwitch agent   | hu-ovt-02  | None              | True  | UP    | neutron-openvswitch-agent |
| 218d7f9b-8599-47b0-a448-3021def02282 | L3 agent             | NTRN-0001  | nova              | True  | UP    | neutron-vpn-agent         |
| 34d030bf-faff-4fe4-9be1-286f6c3a5f1e | Loadbalancerv2 agent | NTRN-0002  | None              | True  | UP    | neutron-lbaasv2-agent     |
| 3c5ecd8c-df77-4308-93b0-c8c2625c5e74 | Loadbalancerv2 agent | NTRN-0003  | None              | True  | UP    | neutron-lbaasv2-agent     |
| 6a4a62d4-aab3-4740-a2a4-ac4b7e4ad7c5 | DHCP agent           | NTRN-0001  | nova              | True  | UP    | neutron-dhcp-agent        |
| 722dd47e-5cec-4ea7-97aa-a29b4c4cdf37 | Open vSwitch agent   | hu-ovt-03  | None              | True  | UP    | neutron-openvswitch-agent |
| 7d538e4f-cb0a-4ee3-8912-7fdc00b067e0 | Open vSwitch agent   | dhost-0001 | None              | False | UP    | neutron-openvswitch-agent |
| 82663e1b-34e6-47db-8821-db60ef1f40a7 | Metadata agent       | NTRN-0001  | None              | True  | UP    | neutron-metadata-agent    |
| 89dbb367-d610-4fd6-a81d-5b291675238a | L3 agent             | NTRN-0003  | nova              | True  | UP    | neutron-vpn-agent         |
| 9ee928cc-707e-42e0-a6ea-7ce6bf76c389 | Metadata agent       | NTRN-0003  | None              | True  | UP    | neutron-metadata-agent    |
| b7c0ea40-382d-4d1d-ac9d-dd884a9ac564 | DHCP agent           | NTRN-0003  | nova              | True  | UP    | neutron-dhcp-agent        |
| bcda0aa1-083b-417d-a18d-ce292edd0e4b | Open vSwitch agent   | hu-ovt-01  | None              | True  | UP    | neutron-openvswitch-agent |
| be8f24ed-48ee-448b-8236-f15f0704fced | Open vSwitch agent   | NTRN-0001  | None              | True  | UP    | neutron-openvswitch-agent |
| c6668cd3-e731-479f-96f1-361c973912d1 | Loadbalancerv2 agent | NTRN-0001  | None              | True  | UP    | neutron-lbaasv2-agent     |
| d351e1fb-9c30-4a8f-8ce0-1c9f5427a3c8 | Open vSwitch agent   | NTRN-0003  | None              | True  | UP    | neutron-openvswitch-agent |
| d9d809cf-bc78-4889-b103-a5afe545e0ee | DHCP agent           | NTRN-0002  | nova              | True  | UP    | neutron-dhcp-agent        |
| e1a2e72d-8cf3-418b-a303-868598d43630 | L3 agent             | NTRN-0002  | nova              | True  | UP    | neutron-vpn-agent         |
| ff2b88ad-0c54-4cea-8ef7-a25b6c376278 | Open vSwitch agent   | NTRN-0002  | None              | True  | UP    | neutron-openvswitch-agent |
+--------------------------------------+----------------------+------------+-------------------+-------+-------+---------------------------+

VRRP протокол

Процесс организация высокой доступности сервиса сети на основе OpenvSwitch с описан в официальной документации.
Используется протокол VRRP, реализованный демоном keepalived.

Ошибка multiple rows in manager table

В логе neutron появлется ошибка transaction causes multiple rows in manages table.. Что устранить ошибку надо повторно запустить команду neutron-db-manage на контроллере от имени neutron.

Обновлено: 03.02.2024