Содержание
Настройка сетевой фабрики 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
