VK Private Cloud logo
Помощь
Обновлена 21 августа 2026 г. в 08:12

Архитектура Neutron

Neutron — система управления виртуальными сетями (SDN) в VK Private Cloud. Она принимает запросы пользователей на создание, редактирование и удаление сетевых сущностей и реализует их через сетевые агенты на узлах: создает сетевые интерфейсы, обеспечивает их изоляцию, разворачивает DHCP, NAT и другие сервисы.

Компоненты управления Neutron приведены в таблице 1.

Таблица 1 — Компоненты управления Neutron

Компонент

Назначение

Расположение

Neutron-server

REST API, управление сетевыми сущностями

Управляющие узлы

RabbitMQ

Очередь сообщений между Neutron-server и агентами

Управляющие узлы (кластер Kubernetes)

MariaDB

Хранение информации о сетевых сущностях

Управляющие узлы (кластер Galera)

Сетевые агенты

Реализация сетевой конфигурации

Управляющие, сетевые и вычислительные узлы

При создании или изменении сетевой сущности компоненты Neutron взаимодействуют следующим образом:

  1. Запрос поступает через REST API на порт 9696 на HAProxy.
  2. HAProxy перенаправляет запрос на Neutron-server на порт 9696.
  3. Neutron-server обрабатывает запрос и назначает VLAN ID для новой сети на мосту br-int.
  4. Neutron-server записывает сетевую сущность в MariaDB.
  5. Neutron-server публикует сообщение с конфигурацией в RabbitMQ.
  6. Сетевые агенты получают сообщение из RabbitMQ и реализуют настройки на своих узлах: создают пространства имен, сетевые интерфейсы, настраивают Iptables, подключают интерфейсы к мостам Open vSwitch. Подробнее о том, как агенты реализуют настройки — в статье Сетевые агенты и их пространства имен.

Neutron-server

Neutron-server — центральный сервис Neutron, который обрабатывает запросы на создание, редактирование и удаление сетевых сущностей: сетей, подсетей, портов, маршрутизаторов и т. д.

В VK Private Cloud Neutron-server реализован в виде systemd-сервиса на управляющих узлах. Чтобы получить информацию о нем, выполните команду на управляющем узле:

# systemctl status neutron-server.service

Neutron-server работает на порту 9696. Запросы поступают через HAProxy, развернутый на управляющих узлах. Чтобы получить информацию о процессах, слушающих порт 9696, выполните команду на управляющем узле:

# netstat -nltp | grep :9696

RabbitMQ

RabbitMQ — брокер сообщений, через который Neutron-server передает конфигурацию сетевым агентам. Каждый агент подписан на свою тему очереди: L3-агент подписан на l3_agent, DHCP-агент — на dhcp_agent.

В VK Private Cloud RabbitMQ для Neutron развернут в Kubernetes-кластере на управляющих узлах в виде трех подов. Чтобы получить информацию о подах, выполните команду на управляющем узле:

# kubectl -n rabbitmq get pods | grep neutron

MariaDB

MariaDB — база данных, в которой Neutron-server хранит все сетевые сущности инсталляции: сети, подсети, порты, маршрутизаторы, Floating IP и т.д. Для Neutron выделяется отдельный кластер MariaDB в Galera.

Чтобы получить статус MariaDB для Neutron, выполните команду на управляющем узле:

# systemctl status mariadb-neutron
Была ли статья полезна?