В VMmanager существует три типа сетевых настроек кластера: "Коммутация", "Маршрутизация" и "IP-fabric". Они отличаются порядком назначения IP-адресов виртуальным машинам и топологией построения сетей.

Тип настройки "Коммутация"


Логика работы

Для кластера выделяется пул, объединяющий блоки IP-адресов из физических сетей. IP-адресами из этого пула вы можете управлять в разделе Сети. Для такого типа настройки доступна миграция виртуальных машин (ВМ) между узлами кластера.

Пример сетевых настроек

Для кластера выделены физические сети 192.0.2.0/27 и 192.0.2.32/27. Один из адресов сети присваивается сетевому интерфейсу vmbr0. VMmanager выдаёт адреса из выделенных сетей для ВМ на узлах кластера.


Схема работы

Тип настройки "Маршрутизация"


Логика работы

Обратите внимание!

Используйте этот тип настройки, если узлы кластера находятся в дата-центрах Hetzner или OVH.

Узлу кластера в дата-центре назначается основной IP-адрес и выделяется подсеть дополнительных IP-адресов. ВМ на этом узле могут быть присвоены адреса только из выделенной подсети. При подключении узла в VMmanager указывается диапазон допустимых IP-адресов для ВМ. При создании ВМ на этом узле ей присваивается первый свободный адрес диапазона. Управлять IP-адресами вы можете в карточке узла: Узлы → имя узла → IP-адреса.

Маршрутизация ВМ осуществляется через виртуальные интерфейсы vnet и интерфейс сетевого моста vmbr0. Такой способ маршрутизации подсетей не позволяет осуществлять миграцию ВМ на другие узлы кластера.

На сетевом оборудовании дата-центра включена функция Port Security. Эта функция блокирует отправку кадров Ethernet, если MAC-адрес отправителя не указан как разрешённый. Так как ВМ на основе виртуализации KVM имеет отдельный MAC-адрес, кадры от ВМ будут заблокированы на сетевом оборудовании. Чтобы избежать этого, VMmanager изменяет сетевые настройки узла. После этого в кадрах от ВМ MAC-адрес источника будет заменяться на MAC-адрес сетевого интерфейса узла кластера.

Пример сетевых настроек

Серверу выделен основной IP-адрес 123.45.12.48 и подсеть адресов 203.0.113.40/29. Так как IP-адреса подсети будут использоваться в качестве дополнительных, ВМ можно назначить все адреса этой подсети: 203.0.113.40, 203.0.113.41, ..., 203.0.113.47. В качестве шлюза для подсети используется основной IP-адрес сервера на сетевом интерфейсе eno1.

Схема работы


Настройка IPv6 на узлах кластера в дата-центрах Hetzner и OVH

Для настройки IPv6-маршрутизации добавьте на узел кластера IPv6-адрес: Узлы  имя узла IP-адреса IPv6  Добавить IP-адрес. Для корректной работы IPv6-сети укажите адрес ::2 и длину префикса 64. Например, 2a01:4f8:13b:9a7::2/64. VMmanager проведёт автоматическую настройку сети на этом узле.

Если маршрутизация с сетью провайдера отсутствует, вы можете включить проксирование IPv6 через протокол NDP:

NDP используется для multicast-проксирования ICMP6-запросов типа neighbor discovery (ND). Если IPv6-сеть у провайдера смаршрутизирована on-link, то на физический интерфейс узла кластера будет приходить multicast-запрос ND (аналог ARP-запроса в IPv4). Проксирование позволяет пересылать ND-запросы в бридж vmbr0, а ответы — обратно на физический интерфейс.

  1. Подключитесь к узлу кластера по SSH.
  2. Установите сервис ndppd: 

    dnf install ndppd
    CODE
  3. Создайте конфигурационный файл /etc/ndppd.conf

    Пример конфигурационного файла

    proxy enp3s0f0 {
     rule 2a01:4f8:13b:9a7::/64 {
     iface vmbr0
     }
    }
    CODE

    enp3s0f0 — сетевой интерфейс для проксирования

    2a01:4f8:13b:9a7::/64 — подсеть IPv6

    vmbr0 — интерфейс бриджа на узле кластера

  4. Добавьте правило для шлюза по умолчанию: 

    ip -6 neigh add proxy <address> dev vmbr0
    CODE

    <address> — IPv6-адрес узла кластера. Например, 2a01:4f8:13b:9a7::2

Тип настройки "IP-fabric"


Логика работы

Тип настройки "IP-fabric" позволяет создавать виртуальные машины с публичными IP-адресами в приватной сети. Для кластера выделяется пул, объединяющий блоки IP-адресов из физических сетей. IP-адресами из этого пула вы можете управлять в разделе Сети. Для такого типа настройки доступна миграция ВМ между узлами кластера.

Создание кластера "IP-fabric" возможно только в сети, поддерживающей маршрутизацию по протоколу iBGP. Передачу информации о маршрутах iBGP выполняет оборудование Route Reflector. В качестве такого оборудования могут использоваться физические или виртуальные маршрутизаторы и/или серверы. При создании кластера добавьте адреса его узлов и номера автономных систем BGP в конфигурацию Route Reflector.

Обратите внимание!

Такой тип настройки возможен только на узлах KVM-кластера с ОС AlmaLinux 8 и LXD-кластера с ОС Ubuntu 20.04.

При создании кластера вы указываете:

  1. IP-адрес шлюза для ВМ. VMmanager будет присваивать этот адрес всем виртуальным интерфейсам на узле кластера и использовать его только для маршрутизации ВМ внутри узла. В качестве IP вы можете указать любой адрес, который не будет совпадать с адресами, использующимися на узле кластера.
  2. BGP-комьюнити.
  3. IP-адреса и номера автономных систем оборудования Route Reflector.

VMmanager при получении задачи на создание ВМ в кластере "IP-fabric":

  1. Создаёт на узле кластера виртуальный интерфейс <vmname>_net0.

    <vmname> — имя ВМ. Например, для ВМ с именем vm12, интерфейс будет называться vm12_net0.

  2. Создаёт ВМ с IP-адресом из выделенного пула и сетевой маской 255.255.255.255 (/32).
  3. Устанавливает в качестве шлюза для ВМ IP-адрес виртуального интерфейса <vmname>_net0. Маршрутизация между ВМ и шлюзом осуществляется через соединение "точка-точка" (PtP).

  4. Через сервис FRR передаёт информацию о созданном маршруте на оборудование Route Reflector.

Пример сетевых настроек

Для кластера выделен пул публичных IP-адресов 198.51.100.0/24. VMmanager выдаёт адреса из этого пула для ВМ на узлах кластера. Имена созданных ВМ — vm1, vm2, vm3 и т.д. В качестве шлюза используются интерфейсы vm1_net0, vm2_net0, vm3_net0 и т.д. с IP-адресами 10.0.0.1. Внешние интерфейсы узлов кластера имеют приватные IP-адреса в сети 172.16.0.0/24.

 

Схема работы

route — передача информация о сетевых маршрутах

Node 1, Node 2 — узлы кластера

vm1, vm2, vm3... — виртуальные машины

vm1_net0, vm2_net0... — виртуальные сетевые интерфейсы

eno1 — внешний сетевой интерфейс узла кластера

data center core — оборудование, обеспечивающее доступ во внешнюю сеть (интернет)

FRR сервис на узле кластера, реализующий работу протокола iBGP

CORE — ядро подсистемы LInux

route reflector сервер или сетевое оборудование, принимающее информацию о маршрутах от узлов и передающее её в data center core

backup route reflector — резервный комплект оборудования Route Reflector