· 17 мин чтения

LXC/LXD-контейнеры в продакшене: кластеры, сети, снапшоты и миграция для серьёзных инсталляций

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет работы с линукс-инфраструктурой я прошёл путь от OpenVZ начала 2010-х через голый LXC до промышленных LXD-кластеров на Ubuntu Server LTS. В дата-центре МТС у нас стоят два узла на Dell Xeon Platinum 8280 с 40G Mellanox, связанные в LXD-кластер и держащие больше сотни контейнеров клиентских сервисов. И это работает стабильнее, чем многие K8s-инсталляции сопоставимого размера.

LXC, LXD, Incus — что именно ставить в 2026 году

Ландшафт немного перетряхнулся после перехода LXD под крыло Canonical. В 2023 году сообщество форкнуло LXD в проект Incus под управлением Linux Containers. Оба проекта живут, оба совместимы по большей части CLI, но расходятся в деталях.

Я всегда на новых проектах ставлю LXD из snap на Ubuntu Server 22.04 LTS — это стандарт, обкатан на миллионах инсталляций.

Установка и первичная инициализация

# Ubuntu 22.04 LTS
sudo apt update
sudo snap install lxd --channel=5.21/stable
sudo usermod -aG lxd $USER
newgrp lxd

# Инициализация
lxd init

# Ключевые вопросы lxd init:
# - Configure the storage pool: zfs
# - Pool device: /dev/sdb (отдельный диск под данные)
# - Configure a new local network bridge: yes, lxdbr0
# - Subnet: 10.100.0.0/24
# - IPv6: none

После завершения init у вас есть готовая инсталляция: storage pool на ZFS, дефолтный профиль и сетевой бридж. На продакшене я всегда отделяю rootfs хоста от storage pool физически — rootfs на SSD, контейнеры на отдельном пуле из NVMe или SAS-дисков в raidz.

Создание контейнеров и запуск

# Список доступных образов
lxc remote list
lxc image list ubuntu: | head -20

# Создать контейнер
lxc launch ubuntu:22.04 web01
lxc launch ubuntu:22.04 web02

# Запустить команду внутри
lxc exec web01 -- apt update
lxc exec web01 -- apt install -y nginx

# Получить оболочку
lxc shell web01

# Список, статус, сеть
lxc list
lxc info web01 --show-log

Профили: правильный способ управления конфигурацией

Профиль в LXD — это набор настроек (сеть, диск, лимиты, security), который можно применить к любому контейнеру. Это главный инструмент DRY в LXD. У нас на практике я создаю профили под типовые роли: web, db, mail-relay, worker — и новые контейнеры получают настройки мгновенно.

# Создать профиль
lxc profile create web

# Задать лимиты через YAML
cat <<EOF | lxc profile edit web
config:
  limits.cpu: "2"
  limits.memory: 2GB
  limits.memory.swap: "false"
  boot.autostart: "true"
  security.nesting: "false"
devices:
  eth0:
    type: nic
    network: lxdbr0
  root:
    type: disk
    pool: default
    path: /
    size: 10GB
EOF

# Применить профиль
lxc profile add web01 web
lxc launch ubuntu:22.04 web03 -p default -p web

Сети: bridge, macvlan, OVN

LXD предлагает три модели сетей. Выбор зависит от требований.

ТипКогда использоватьПлюсыМинусы
bridge (lxdbr0)Дефолт, dev-средыПростота, NAT, DHCPНужен проброс портов
macvlanКонтейнер в сети офисаПрямой IP, видно по L2Нельзя с хостом общаться
OVNКластеры, overlayL3-сегменты, ACL, VRFСложность настройки
# macvlan
lxc network create officenet --type=macvlan parent=eno1
lxc config device add web01 eth0 nic nictype=macvlan parent=eno1

# OVN (требует предустановленного OVN-кластера)
lxc network create ovn1 --type=ovn network=UPLINK
lxc network set ovn1 ipv4.address=10.200.0.1/24

Кластеризация: объединяем три узла

LXD cluster — киллер-фича для серьёзных инсталляций. Один набор команд управляет всеми узлами, контейнеры распределяются автоматически, ZFS-снапшоты доступны для миграции.

# На первом узле
lxc cluster enable node01

# На втором и третьем — повторить lxd init,
# указав "Are you joining an existing cluster? yes"
# и введя trust token, полученный через
lxc cluster add node02
# Скопировать join-token и вставить при инициализации

# Посмотреть узлы
lxc cluster list

# Создать контейнер с выбором узла
lxc launch ubuntu:22.04 db01 --target node02

Важный момент: в кластере storage pool типа dir или zfs должен быть локальным на каждом узле. Для общего хранилища используйте ceph или remote storage.

Снапшоты и бэкапы

ZFS-снапшоты в LXD — копеечные операции. Я всегда настраиваю автоматическую ротацию перед апдейтами.

# Создать снапшот
lxc snapshot web01 before-upgrade-2026-04-17

# Откатиться
lxc restore web01 before-upgrade-2026-04-17

# Автоматические снапшоты через профиль
lxc config set web01 snapshots.schedule "0 3 * * *"
lxc config set web01 snapshots.expiry "14d"

# Экспорт контейнера в tar.gz
lxc export web01 /backup/web01-$(date +%F).tar.gz

# Импорт на другой узел
lxc import /backup/web01-2026-04-17.tar.gz

Миграция между узлами

# Stopped-миграция между узлами кластера
lxc move web01 --target node03

# Cross-cluster с другим LXD
lxc remote add remote-hq 192.168.50.10 --password SECRET
lxc copy web01 remote-hq:web01-copy

# Live migration (экспериментально, нужен CRIU)
lxc move web01 --target node02 --mode=pull

Кейс: консолидация 22 сервисов на двух-узловой кластер

Осенью 2025 к нам пришёл клиент — проектное бюро, 65 рабочих мест, 22 разрозненных линукс-сервиса на старом железе (HP DL360 G7, 8 штук). Цель — собрать всё на двух свежих узлах и дать запас для роста. Мы взяли два Dell Xeon Platinum 8280, по 256 ГБ DDR4 и 8 NVMe U.2 в raidz2, связали 40G Mellanox в кросс, поставили Ubuntu 22.04 LTS и LXD 5.21.

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

Итог: 22 сервиса переехали за 6 рабочих дней, uptime при миграциях не падал ниже 99,8%. Экономия электричества 140 000 руб/год, освобождение 8 юнитов стойки, цикл развёртывания нового сервиса сократился с 2 дней до 20 минут. Стоимость проекта — 320 000 руб.

Мониторинг и типовые грабли

Развёртывание LXD-кластеров под ключ

Проектирую и настраиваю LXD/Incus-кластеры на Ubuntu Server LTS с ZFS и OVN, миграцию с виртуалок, интеграцию с системой бэкапов. Работа с хостингом в дата-центре МТС или на собственном железе клиента.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — LXC/LXD в продакшене

Чем LXD отличается от LXC?
LXC — низкоуровневая библиотека. LXD — демон поверх LXC с REST API, кластеризацией, профилями и удобной CLI.
Какой storage pool выбрать?
Для продакшена ZFS — снапшоты, сжатие, репликация.
Сколько контейнеров помещается на узел?
На Dell Xeon Platinum 8280 с 256 ГБ RAM — до 180 рабочих контейнеров. Узкое место — лимиты ядра.
Работает ли live migration?
Да, через CRIU, но с ограничениями. Для stateful-сервисов надёжнее stopped-миграция с репликацией ZFS.
Можно ли Windows внутри LXD?
Нет, только Linux. Для Windows используйте LXD Virtual Machines (KVM под управлением LXD).

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.