AltEduPve

Материал из wiki.nntc.nnov.ru
Версия от 15:39, 2 июня 2021; Vovan (обсуждение | вклад) (Настройка zfs хранилища)
Перейти к навигации Перейти к поиску

Зачем и почему

Этот раздел не технический. Если цели и задачи понятны, то его можно пропустить :)

Что это?

Это статья, описывающая процесс развёртывания 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

pvesm add zfspool pvestorage --pool zfspool

Настройка cifs (samba) хранилищ

pvesm add cifs pveshare --server 172.16.254.123 --share mQcluster1 --username mQcluster1 --password
pvesm add cifs pQrdbstorage --server 172.16.90.100 --share Qstorage --username Qstorage --password