LXC/LXD-контейнеры в продакшене: полный гайд — АйТи Фреш
· 17 мин чтения

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

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

Здравствуйте! Это Евгений Семенов, директор ITFresh. У меня за плечами больше пятнадцати лет в линукс-инфраструктуре, и поверьте, за это время я повидал всякое. Мы начинали с ранних OpenVZ в начале десятых, работали с чистым LXC, а теперь уверенно разворачиваем мощные промышленные LXD-кластеры на Ubuntu Server LTS. Вот, например, у нас в дата-центре МТС стоят два узла Dell Xeon Platinum 8280 с 40G Mellanox. Они объединены в единый, крепкий LXD-кластер, который без труда держит нагрузку от сотни с лишним клиентских сервисов. И знаете, что самое интересное? Эта система порой стабильнее многих K8s-инсталляций того же масштаба. Просто бомба!

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

В мире LXD произошли кое-какие пертурбации, после того как проект перешёл под крыло Canonical. Сообщество не стало мириться с этим, и в 2023 году ребята сделали форк – так родился 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-кластер – это просто киллер-фича для по-настоящему серьёзных инсталляций. Представьте: один набор команд, а управляет всеми узлами! Контейнеры распределяются сами, как по волшебству. Плюс 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. Цель была амбициозной: собрать всё на паре свежих узлов и, конечно, предусмотреть запас на будущее. Что мы сделали? Взяли два мощных 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 юнитов стойки. А цикл развёртывания нового сервиса? Вместо двух дней — теперь 20 минут! Весь проект обошёлся в 320 000 рублей. Неплохо, правда?

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

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).

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 💬 MAX: +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

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

Каждую неделю мы выпускаем практические гайды, которые будут по-настоящему полезны руководителям IT и системным администраторам. Что там? Всё, что волнует: безопасность, тонкости работы с 1С, успешные миграции, надёжные резервные копии и, конечно, живые лайфхаки прямо из наших реальных проектов.

Письмо придёт в течение минутыНе нашли его во «Входящих» — загляните в папку «Спам» или «Промоакции» и нажмите «Не спам». Так все следующие выпуски будут приходить прямо в основную почту.
Реквизиты оператора персональных данных

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