LXD (Linux Container Daemon) — это система контейнерной виртуализации и управления виртуальными машинами на основе ОС Linux. LXD используется для запуска нескольких изолированных экземпляров ОС Linux на одном узле. LXD можно использовать в качестве альтернативы технологии OpenVZ.
Преимущества использования LXD:
- возможность изменения ресурсов контейнера без его остановки;
- высокий уровень безопасности узлов кластера;
- гибкая настройка узлов кластера;
- высокая скорость создания и работы контейнеров;
- высокая плотность виртуализации.
Особенности LXD-кластеров в VMmanager
В текущей версии VMmanager кластер LXD можно создать только с типом настройки сети "Коммутация" или IP-fabric и использованием ZFS-хранилища. Контейнеры и образы ВМ хранятся в пуле ZFS, резервные копии ВМ — на узле кластера. На узлах кластера должна быть установлена ОС Ubuntu 20.04.
В кластерах LXD недоступно:
- подключение ISO-образов пользователей к виртуальным машинам (ВМ);
- добавление узлов с двумя сетевыми интерфейсами;
- создание сетевых мостов;
- живая миграция ВМ;
- установка ОС Windows;
- подключение к ВМ через VNC и SPICE.
Для установки операционных систем в LXD-кластере VMmanager использует отдельные образы ОС. В текущей версии доступны образы ОС:
Для удалённого администрирования ВМ вы можете зайти в консоль LXD-контейнера. Окно с консолью откроется в отдельной вкладке браузера.
Тонкие настройки ВМ
ВМ в кластере LXD имеют особенности в части тонких настроек:
- вес CPU и вес использования I/O изменяются в диапазоне от 0 до 10;
- скорость чтения и записи можно установить либо в IOPS, либо в Мбит/с;
- настройка режима эмуляции CPU недоступна;
- есть возможность настроить:
- вес сети — чем больше вес, тем больше времени выделяется на обработку запросов;
- максимальное количество активных процессов в контейнере;
- лимит использования CPU в процентах;
- создание контейнеров внутри контейнера с использованием Docker, Podman, LXC и т.д.
Подготовка узла кластера
Перед подключением сервера к кластеру:
- Настройте на сервере ZFS-пул:
-
Установите утилиту zfsutils-linux:
sudo apt install zfsutils-linux - Определите блочное устройство второго диска:
lsblkВ примере имя второго диска vdb, поэтому имя блочного устройства — /dev/vdb.Пример выводаNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 91.9M 1 loop /snap/lxd/32662 loop1 7:1 0 40.9M 1 loop /snap/snapd/20290 loop2 7:2 0 49.3M 1 loop /snap/snapd/24792 loop3 7:3 0 63.3M 1 loop /snap/core20/1828 loop5 7:5 0 73.9M 1 loop /snap/core22/2045 loop6 7:6 0 114.4M 1 loop /snap/lxd/33110 sr0 11:0 1 1024M 0 rom vda 252:0 0 50G 0 disk ├─vda1 252:1 0 1M 0 part └─vda2 252:2 0 50G 0 part / vdb 252:16 0 50G 0 disk - Определите имя пула. Для этого в интерфейсе платформы перейдите в Кластеры → выберите кластер → кнопка Параметры → раздел Локальные хранилища → параметр ZFS-пул.
-
Создайте ZFS-пул:
Пояснения к команде:zpool create <zpool_name> <device>- <zpool_name> — имя пула;
- <device> — имя блочного устройства.
- Добавьте пул в LXD: Пояснения к команде:
lxc storage create <zpool_name> zfs source=<zpool_name>- <zpool_name> — имя пула.
-
- В конфигурационном файле /etc/ssh/sshd_config укажите параметр:
UsePAM yes