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

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


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

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

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

Для кластера выделен пул IP-адресов 192.168.10.0/24. 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. Установите сервис nddpd: 

    dnf install nddpd
    CODE
  3. Создайте конфигурационный файл /etc/nttpd.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.

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

  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