AltEduPve
Содержание
Зачем и почему
Этот раздел не технический. Если цели и задачи понятны, то его можно пропустить :)
Что это?
Это статья, описывающая процесс развёртывания Proxmox Virtual Environment (PVE) в дистрибутиве Alt Education (Альт Образование)
Для чего?
При современных возможностях вычислительной техники при обучении IT-специальностям (и не только им) полезно бывает использовать виртуальные окружения для проведения лабораторных работ.
PVE является отличной альтернативой средам настольной виртуализации и превосходит по возможностям, важным с точки зрения получения обучающимися практических навыков работы с различным спектром программного обеспечения, начиная от базовых основ операционных систем, заканчивая высокоуровневыми языками программирования и платформами разработки программного обеспечения.
Среди ключевых важных и полезных возможностей PVE при использовании с образовательных целях следует отметить следующие:
- Веб-интерфейс управления (обучающемуся не обязательно находиться физически на компьютере, чтобы иметь полный доступ к виртуальной машине)
- Разграничение прав доступа (ресурсы одной аппаратной машины посредством механизма пользователей и ролей можно распределить между несколькими обучающимися)
- Шаблонизация и связанные копии (на базе шаблонов виртуальных машин можно быстро (очень быстро, секунды) создавать клонов, диски которых будут представлять из себя связанные копии относительно диска шаблона) -- это позволяет экономить дисковые и временнЫе ресурсы (проверено при работе с хранилищами на ZFS)
- Удобный интерфейс взаимодействия с внешними хранилищами (всё настраивается из Веб-интерфейса). При использовании нескольких физических машин с PVE посредством подключения хранилищ можно легко организовать обмен резервными копиями и шаблонами
- Возможность предоставления доступа к виртуальным машинам извне (вынеся порт Веб-интерфейса за пределы шлюза веб интерфейс со всем функционалом доступа к виртуальным машинам будет доступен извне) -- может быть актуально при полностью или частично дистанционном подходе к практическому обучению
- Возможность кластеризации решения. Кластеризация даёт удобный механизм управления группой физических машин из одного Веб-интерфейса (из любого из Веб-интерфейсов на любой машине-узле кластера). Помимо единого "командного пункта" кластеризация даёт возможность миграции виртуальных машин между физическими узлами (без необходимости ввода команд в консоли (мышкой из веб интерфейса), без остановки машин - всё автоматизировано (опять же: без консоли, мышкой))
- Наверняка, что-то важное из плюсов данного решения, должного быть здесь, упущено...
Установка
Важная информация
Установка операционной системы
Установка PVE
Представим, что после установки ваша операционная система доступна в сети по адресу:
172.16.224.198
, в системе имеется единственный обычный пользователь
student
с паролем, который вам известен. Также вам известен пароль от суперпользователя (он же root).
Представили? Тогда продолжим с этими исходными данными.
Входим на сервер по ssh:
ssh student@172.16.224.198
Переключаемся в суперпользователя:
su -
Заводим переменные, в которых будем хранить наше имя хоста и сетевые параметры:
MACHINE_NAME='altedu-pve-template' MACHINE_IP='172.16.87.87' MACHINE_MASK='16' MACHINE_GATEWAY='172.16.1.1' MACHINE_DNS='172.16.1.1' MACHINE_ETH_DEVICE='eth0'
Переименовываем машину и настраиваем определённым образом хост-файл:
hostnamectl set-hostname $MACHINE_NAME IP=$MACHINE_IP HOST=$(hostname) echo "127.0.0.1 localhost" > /etc/hosts echo "$IP $HOST.nntc.nnov.ru $HOST" >> /etc/hosts
Обновляем систему
apt-get update -qq apt-get -y dist-upgrade
Устанавливаем необходимые пакеты и включаем необходимые сервисы
apt-get install -qq -y pve-manager kernel-modules-zfs-std-def
systemctl start rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-cluster
systemctl enable rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target corosync lxc lxc-net lxc-monitord pve-cluster pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-guests pve-cluster
Перенастраиваем сеть в режим "мост":
rm -rf /etc/net/ifaces/* mkdir /etc/net/ifaces/vmbr0 cat << EOF > /etc/net/ifaces/vmbr0/options TYPE=bri ONBOOT=yes DISABLED=no NM_CONTROLLED=no CONFIG_WIRELESS=no CONFIG_IPV4=yes CONFIG_IPV6=no BOOTPROTO=static HOST="$MACHINE_ETH_DEVICE" EOF echo "$MACHINE_IP/$MACHINE_MASK" > /etc/net/ifaces/vmbr0/ipv4address echo "default via $MACHINE_GATEWAY" > /etc/net/ifaces/vmbr0/ipv4route echo "nameserver $MACHINE_GATEWAY" > /etc/resolve.conf service network restart
Перезагружаемся (чтобы убедиться, что после полного рестарта все сервисы были запущены и система готова).
Веб-интерфейс системы должен находиться по адресу:
https://localhost:8006
Для доступа в систему по ssh от пользователя root рекомендуется использовать ключи доступа ssh. Если же по каким-либо причинам необходимо разрешить доступ под суперпользователем по паролю, то это можно включить следующими командами (выполнять их нужно из-под суперпользователя):
sed -i 's/#PermitRootLogin without-password/PermitRootLogin yes/g' /etc/openssh/sshd_config systemctl restart sshd
Для использования возможностей файловой системы zfs необходимо включить загрузку модуля ядра по умолчанию:
sed -i 's/#zfs/zfs/g' /etc/modules-load.d/zfs.conf
затем
/sbin/modprobe zfs
или перезагрузиться:
reboot
Настройка zfs хранилища
DISK='/dev/nvme0n1' # resize lvm partition fdisk $DISK <<EOF d 2 n p 2 N w EOF # refresh partitions partprobe # resize pv pvresize "${DISK}p2" # rescan volume groups vgchange -ay # create lvm and zfs pool in this lvcreate -y alt-vg --name vmstorage -L 400g zpool create zfspool /dev/alt-vg/vmstorage -f zfs set compression=off zfspool zfs set sync=disabled zfspool