Инструменты пользователя

Инструменты сайта


mellanox:realtasks:proxmox

Настройка сетевой фабрики Mellanox/NVIDIA SX6036 для кластеров Proxmox VE 9.2

При развертывании кластера виртуализации на базе Proxmox VE 9.2 (актуальная версия на базе Debian Trixie/13 на дату публикации) сетевая подсистема требует особого внимания, особенно если узлы объединены через высокоскоростной VPI-коммутатор Mellanox SX6036 (в режиме Ethernet). Для обеспечения отказоустойчивости, минимальных задержек и изоляции трафика необходимо правильно сконфигурировать сетевые мосты (Linux Bridges) или Open vSwitch на гипервизоре, а также настроить агрегацию и Jumbo Frames на коммутаторе.

В этой статье мы разберем пошаговую настройку сетевой фабрики для распределенного кластера Proxmox VE 9.2.

Архитектурный подход: распределение трафика в Proxmox VE

Стек Proxmox VE критически чувствителен к задержкам в сети, особенно если используется распределенное хранилище Ceph или база синхронизации кластера Corosync. Сетевой трафик разделяется на следующие сегменты:

  • Management & Web UI: Доступ к администрированию, API и SSH.
  • Corosync Traffic: Сеть синхронизации кластера. Крайне чувствительна к задержкам и потерям пакетов. Рекомендуется пускать по выделенному линку или приоритизировать.
  • Migration Network: Выделенный канал для миграции виртуальных машин и бэкапов.
  • Storage Network (Ceph Public/Cluster, iSCSI, NFS): Трафик дисковой подсистемы, требующий максимальной пропускной способности.
  • VM/CT Traffic: Пользовательский трафик виртуальных машин.

Для реализации отказоустойчивости нужно объединить два интерфейса адаптера ConnectX-3/ConnectX-3 Pro (например, 40G) на каждом хосте в LACP-бонд (80G), а поверх него настроить VLAN-aware мост.

Шаг 1. Конфигурация коммутатора SX6036 (MLNX-OS)

Для агрегации каналов (LACP) на стороне Mellanox SX6036 создаются интерфейсы Port-Channel. Предположим, первый хост подключен к портам 1/1 и 1/2. Нам нужно объединить их, включить режим Trunk и Jumbo Frames (MTU 9216).

Входим в режим конфигурации

Switch > enable
Switch # configure terminal

Создаем Port-Channel интерфейс

Switch (config) # interface port-channel 1

Настраиваем режим Trunk и разрешаем VLANы (например, 10, 20, 30, 40, 100-200)

Switch (config interface port-channel 1) # switchport mode trunk
Switch (config interface port-channel 1) # switchport trunk allowed-vlan 10,20,30,40,100-200

Выключаем интерфейс для изменения MTU

Switch (config interface port-channel 1) # shutdown
Switch (config interface port-channel 1) # mtu 9216
Switch (config interface port-channel 1) # no shutdown
Switch (config interface port-channel 1) # exit

Привязываем физические интерфейсы к созданному Port-Channel

Switch (config) # interface ethernet 1/1-1/2
Switch (config interface ethernet 1/1-1/2) # channel-group 1 mode active
Switch (config interface ethernet 1/1-1/2) # shutdown
Switch (config interface ethernet 1/1-1/2) # mtu 9216
Switch (config interface ethernet 1/1-1/2) # no shutdown
Switch (config interface ethernet 1/1-1/2) # exit

Сохраняем конфигурацию

Switch (config) # configuration write

Шаг 2. Настройка сети на стороне Proxmox VE 9.2

В Proxmox VE 9.2 конфигурация сети описывается стандартными средствами пакета ifupdown2, что позволяет применять изменения «на лету» без перезагрузки ноды.

Открываем файл /etc/network/interfaces на ноде Proxmox и приводим его к следующему виду (заменим enp1s0f0 и enp1s0f1 на реальные имена ваших интерфейсов Mellanox, которые можно узнать через команду ip l):

Физические интерфейсы Mellanox ConnectX

auto enp1s0f0
iface enp1s0f0 inet manual
    mtu 9000

auto enp1s0f1
iface enp1s0f1 inet manual
    mtu 9000

Создаём LACP Бонда (Агрегация каналов)

auto bond0
iface bond0 inet manual
    bond-slaves enp1s0f0 enp1s0f1
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit-hash-policy layer2+3
    mtu 9000

Основной VLAN-aware мост для виртуальных машин и хоста

auto vmbr0
iface vmbr0 inet manual
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 10-200
    mtu 9000

Интерфейс управления хостом (Management - VLAN 10)

auto vmbr0.10
iface vmbr0.10 inet static
    address 192.168.10.51/24
    gateway 192.168.10.1
    dns-nameservers 192.168.10.254
    mtu 1500

Интерфейс кластерной сети Corosync (VLAN 20) — MTU 1500 для минимизации задержек пакетов управления

auto vmbr0.20
iface vmbr0.20 inet static
    address 10.20.0.51/24
    mtu 1500

Интерфейс сети хранения/Ceph/Migration (VLAN 30) — Строго с MTU 9000

auto vmbr0.30
iface vmbr0.30 inet static
    address 10.30.0.51/24
    mtu 9000

Чтобы применить настройки без перезагрузки сервера, выполняем в консоли Proxmox:

ifreload -a

Шаг 3. Тюнинг драйверов и очередей в Proxmox (Debian 13)

Сетевые карты Mellanox ConnectX-3 / Pro используют модуль ядра mlx4_core. Для обеспечения максимальной производительности в Proxmox VE 9.2 убеждаемся, что включены механизмы аппаратной разгрузки.

Проверяем текущее состояние с помощью ethtool:
Проверка поддержки Large Receive Offload (LRO) и Checksum Offload

ethtool -k enp1s0f0 | grep -E 'receive-offload|checksum'

Для повышения пропускной способности сети хранения данных можно увеличить буферы кольца (Ring Buffers) на физических интерфейсах до максимума (обычно 4096):

ethtool -G enp1s0f0 rx 4096 tx 4096
ethtool -G enp1s0f1 rx 4096 tx 4096

Чтобы эти настройки сохранялись после перезагрузки, их нужно добавить в параметры post-up соответствующих интерфейсов в файле /etc/network/interfaces.

Проверка перед запуском кластера Proxmox

  • [X] Проверка агрегации (LACP): На стороне Proxmox проверяем статус бонда. В выводе должен быть виден успешный сбор LACP (Partner Mac Address коммутатора):
cat /proc/net/bonding/bond0
  • [X] Валидация Jumbo Frames в сети Storage: Проверяем прохождение больших пакетов до соседней ноды без фрагментации (с учетом размера заголовка ICMP ping 9000 - 28 = 8972 байта):
ping -M do -s 8972 10.30.0.52
  • [X] Проверка статуса портов на SX6036: Убеждаемся, что агрегированный канал работает стабильно и на нем нет инкремента ошибок потери пакетов:
Switch # show interfaces port-channel 1 counters
mellanox/realtasks/proxmox.txt · Последнее изменение: — Chigus