Установка и настройка Proxmox VE
Используемые термины: Proxmox VE, Linux.
В данной инструкции мы пошагово разберем способы установки Proxmox VE, базовую настройку и создание виртуальной машины. Proxmox основан на Debian — поэтому установку будем выполнять на данный дистрибутив Linux. В данной инструкции работа ведется на Proxmox версии 6.
Системные требования
Установка Proxmox
Из готового образа
Установка на Debian
Проверка установки
Базовая настройка
Как загрузить ISO-образ
Создание сетей
Bridge
NAT
Сеть между виртуалками
Создание виртуальной машины
Настройка виртуальной машины
Базовые настройки
Добавление диска
Добавление сетевого адаптера
Установка гостевого агента
Удаление виртуальной машины
Тюнинг Proxmox
Предупреждения об отсутствии подписки
Правильный сертификат
Создание нового пользователя
Ubuntu и CentOS
Решение возможных проблем
Дополнительная информация
Системные требования
Требования разделены на минимальные и рекомендованные:
Минимальные | Рекомендованные | |
---|---|---|
Процессор | 64bit с поддержкой технологии виртуализации Intel VT или AMD-V | |
Память | 1 Гб | 2 Гб для системы + для виртуальных машин. Дополнительно, если используется хранилище Ceph или ZFS, 1 Гб на наждый ТБ данных. |
Накопитель | HDD | SSD или NVMe |
Сеть | Сетевой адаптер | Минимум, 2 сетевых адаптера на 10 Гбит/сек. |
Поддержка виртуализации Intel VT или AMD-V может быть отключена на материнской плате. Для проверки заходим в БИОС - находим раздел настройки процессора (как правило, в пункте меню Advanced) - проверяем, что технология виртуализации (Intel VT, AMD-V, Virtualization Technology, VMX) включена (Enabled). Если мы хотим протестировать платформу и устанавливаем ее на виртуальную машину, то в ее настройках включаем поддержку технологии виртуализации. Например, в VMware ESX 6 в настройке виртуальной машины на вкладке Virtual Hardware раскрываем CPU и ставим галочку Expose hardware assisted virtualization to the guest OS:
Установка
Есть два варианта установки Proxmox VE — использовать готовый образ или установка на Debian. Мы рассмотрим оба.
Установка готового образа ISO
1. Переходим на страницу загрузки Proxmox официального сайта. Загружаем дистрибутив, например, Proxmox VE 6.1:
2. Если установка выполняется на виртуальную машину, монтируем образ. Если нет — создаем установочную флешку, например, с помощью WinSetupFromUsb или загрузочный диск с помощью InfraRecorder.
3. Загружаем сервер с установочного ISO — мы увидим окно приветствия Proxmox — выбираем пункт меню Install Proxmox VE:
4. Принимаем лицензионное соглашения, кликнув по I agree.
5. Выбираем диск, на который будет установлена система:
* при необходимости, кликаем по Options и задаем настройки файловой системы и размера раздела.
6. Пишем страну, временную зону, язык раскладки клавиатуры по умолчанию:
7. Вводим дважды пароль, который будет использоваться для пользователя root:
8. Прописываем сетевые настройки:
* где:
- Management Interface: сетевой интерфейс для управления сервером виртуальных машин.
- Hostname (FQDN): имя хоста для сервера.
- IP Address: IP-адрес нашего сервера.
- Netmask: маска подсети для сервера.
- Gateway: шлюз по умолчанию.
- DNS Server: сервер DNS.
9. В окне «Summary» проверяем введенные данные и кликаем по Install. Начнется процесс установки, который займет не более 10 минут.
10. После установки мы должны увидеть «Installation Successful» — перезагружаем сервер, кликнув по кнопке Reboot.
После переходим к проверке установки.
Установка на Debian
Если мы решили установить Proxmox на уже установленный Debian, выполняем следующую инструкцию.
При установке среды виртуализации меняется ядро Linux. Это может привести к потери работоспособности уже установленных сервисов. Таким образом, установку Proxmox следует выполнять на чистый сервер, а не тот, который уже используется для каких-либо задач.
1. Имя сервера должно разрешаться по его IP-адресу. Для этого либо добавляем А-запись в DNS, либо настраиваем на сервере файл hosts:
nano /etc/hosts
... и добавляем:
192.168.1.55 proxmox.dmosk.local proxmox
* где 192.168.1.55 — IP-адрес нашего сервера; proxmox — имя сервера; dmosk.local — наш домен, если используется.
2. Добавляем репозитории, которые будем устанавливать для установки Proxmox PE и дополнительных компонентов:
nano /etc/apt/sources.list
deb http://mirror.yandex.ru/debian/ bookworm main non-free contrib
deb-src http://mirror.yandex.ru/debian/ bookworm main non-free contrib
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
* обратите внимание, что bookworm — кодовое название 12 версии Debian. Вы должны подставить свое значение:
- Debian 12 — bookworm.
- Debian 11 — bullseye.
- Debian 10 — buster.
- Debian 9 — stretch.
Чтобы мы могли работать с репозиторием proxmox добавляем в систему цифровую подпись:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
* где 6 — версия устанавливаемого Proxmox.
Обновляем список пакетов:
apt update
3. Устанавливаем Proxmox PE и компоненты:
apt install proxmox-ve open-iscsi
* где proxmox-ve — собственно, сам гипервизор; open-iscsi — iSCSI-клиент для подключения iSCSI-target-ов.
4. Перезагружаем сервер:
systemctl reboot
Проверка установки
В браузере открываем панель управления системой виртуализации по адресу https://<IP-адрес сервера>:8006. В открывшемся окне выбираем язык, вводим логин и пароль от пользователя root:
Должно открыться окно управления.
Начальная настройка
Чтобы начать использовать Proxmox и создать первую виртуальную машину, внесем небольшие настройки и подготовим гипервизор к работе.
1. Загрузка образов
Кликаем по Датацентр - и дважды по storage:
* мы можем создать отдельное хранилище для образов ISO. Для этого переходим в раздел Датацентр - Хранилище - Создать - Каталог.
Переходим в раздел Содержимое и кликаем по Загрузить:
В открывшемся окне выбираем ISO-образ системы, который будем устанавливать в качестве гостевой и кликаем по Загрузить. Ждем окончания копирования файла на сервер.
2. Создание сети для виртуальных машин
Мы рассмотрим примеры создания 2-х режимов сети — Bridge и NAT.
Независимо от способа установки Proxmox, необходимо подключиться к хосту по SSH и установить пакет ifupdown2 командой:
apt install ifupdown2
* ifupdown2 — утилита для конфигурации сетевого интерфейса (по сути, аналог ifupdown, написанный на языке Python).
... в противном случае, при попытке применить сетевые настройки мы получим ошибку you need ifupdown2 to reload networking (500).
Bridge
Сеть, работающая в данном режиме позволяет виртуальной машине видеть локальную сеть, как будто это отдельно стоящее устройство. Данный режим лучше всего подойдет для серверов, стоящих в локальной сети компании.
Работать с режимом Bridge нужно очень осторожно. Любое неправильное действие и удаленный доступ к серверу будет потерян. Если работы ведутся на удаленном сервере, рекомендуется сначала потренироваться на какой-нибудь локальной машине.
Также стоит отметить, что при установке PVE из установочного ISO-образа, один Bridge уже будет создан.
Для создания бриджа в панели управления кликаем по нашему серверу Proxmox - переходим в раздел Система - Сеть - обратите внимание, чтобы в системе не было bridge-интерфейсов:
... иначе, создавать его не обязательно.
Открываем настройки сетевого интерфейса, через который будет работать наш мост и удаляем шлюз:
* если мы не сделаем этого, то при настройке Bridge мы получим ошибку Parameter verification failed. (400). gateway: Default gateway already exists on interface 'ens160'.
Нажимаем Создать и выбираем Linux Bridge:
В открывшемся окне заполняем поля IPv4/CIDR, Шлюз (IPv4), Порты сетевого моста:
* в данном примере мы задаем IP-адрес, на котором будет работать Proxmox (чтобы ничего не перепутать, можно задать IP-адрес физического интерфейса, который будет задействован под Bridge); маска указывается в нотации CIDR и в нашем примере это 24 или 255.255.255.0; в качестве физического интерфейса наш bridge будет использовать ens160.
... нажимаем Создать.
Кликаем по Apply Configuration, чтобы применить сетевые настройки:
Подтверждаем действия.
NAT
Данный режим сети активно применяется в случае аренды сервера, где количество IP-адресов лимитировано. В данном случае, все виртуальные машины будут находисться за NAT, в качестве которого выступает сам Proxmox.
Сам интерфейс мы делаем из панели управления. Но чтобы виртуальные машины могли выходить в Интернет через сеть NAT, необходимо на самом хосте включить редирект и маскарадинг.
Создание нового bridge-интерфеса
Итак, кликаем по нашему серверу Proxmox - переходим в раздел Система - Сеть - нажимаем Создать и выбираем Linux Bridge:
Оставляем имя vmbr1 или пишем любое другое, прописываем IP-адрес с маской сети, в которой будут находиться серверы за NAT:
Нажимаем Создать. Применяем настройки:
Сеть настроена.
Настройка ядра и брандмауэра
Подключаемся к серверу по SSH. Открываем на редактирование файл настройки ядра:
nano /etc/sysctl.d/99-sysctl.conf
... и добавляем разрешение на редирект:
net.ipv4.ip_forward=1
После применяем настройки:
sysctl -p /etc/sysctl.d/99-sysctl.conf
Добавляем правило в брандмауэр:
iptables -t nat -I POSTROUTING -s '192.168.122.0/24' -o vmbr0 -j MASQUERADE
* в данном примере мы создали правило для маскарадинга всех пакетов из подсети 192.168.122.0/24 и для исходящего интерфейса vmbr0. Обратите внимание, что если у нас будет другая подсеть и исходящий интерфейс для сети Интернет, то нужно будет задать другие значения.
Ставим утилиту для сохранения правил iptables:
apt install iptables-persistent
... и сохраняем правила в процессе установки или командой:
netfilter-persistent save
Наш NAT настроен.
Сеть между виртуалками
Данная сеть — частный случай NAT без выхода в Интернет. Мы должны создать бридж с отдельной подсетью без шлюза. При добавлении виртуальным машинам данного сетевого адаптера мы сможем настроить их взаимодействие по внутренней сети.
Создаем бридж, как делали это ранее:
Настраиваем новый интерфейс - задаем имя или оставляем тот, что предложит система, а также указываем IP-адрес:
Создаем интерфейс. Готово — при создании или редактировании виртуалок, мы можем указывать с качестве интерфейса созданный бридж (в данном примере, vmbr2) для изоляции их в отдельную подсеть 192.168.150.0/24.
Создание виртуальной машины
Базовая настройка закончена — можно опробовать наш гипервизор в деле.
В правой верхней части панели управления кликаем по Создать VM:
В открывшемся окне снизу сразу ставим галочку Расширенный:
Задаем имя виртуальной машине и ставим галочку Запуск при загрузке (если хотим, чтобы виртуалка запускалась автоматически с сервером PVE):
* в данном примере мы задали имя FS. При желании, также можно изменить VM ID, но он проставляется автоматически и имеет правильное значение.
Выбираем загруженный нами ISO-образ, с которого будем ставить операционную систему, задаем тип гостевой операционной системы и ее версию:
* в данном примере мы будем устанавливать Linux Ubuntu. Среди списка операционных систем также доступны Microsoft Windows, Solaris и Other.
На вкладке Система можно оставить все значения по умолчанию:
* в некоторых случаях, необходимо выбрать другую видеокарту (при установке систем с GUI), а также особый вариант БИОС.
Задаем размер жесткого диска:
* 16 Гб для Ubuntu достаточно, однако, для наших задач расчет должен быть индивидуальным для каждой создаваемой виртуальной машины.
Мы можем задать количество процессоров и ядер:
* в данном примере мы создаем виртуалку с 2 процессорами, каждый из который с 2 ядрами, итого, 4. Для ненагруженных систем можно оставить значение по умолчанию.
Выделяем память:
* наша Ubuntu будет работать с 2 Гб оперативной памяти.
Выбираем созданный нами бридж — либо для получения прямого адреса из сети, либо для NAT:
* в данном примере, мы указали vmbr0 для подключения к сети напрямую.
Ставим галочку, чтобы виртуальная машина сразу запустилась после создания:
... и нажимаем Готово. Ждем окончания процесса и переходим к консоли:
Мы должны увидеть загрузку с ISO-образа.
Настройка виртуальной машины
После создания виртуальной машины нам может понадобиться ее изменить. Рассмотрим процесс настройки на примере изменения некоторых параметром, а также добавления диска и сетевого адаптера.
Полезные настройки
Для начала, переходим к виртуальной машине - Параметры:
На мой взгляд, чаще всего могут понадобиться следующие настройки:
- Имя — имя виртуальной машины.
- Запуск при загрузке — для серверов данный параметр должен быть активирован.
- Порядок загрузки — позволяет определить, с какого устройства должна запуститься виртуалка в первую очередь.
Для изменения параметра, просто кликаем по нему дважды, меняем значение и нажимаем OK.
Добавление дискового накопителя
Переходим в подраздел Оборудование - кликаем по Добавить и выбираем Жесткий диск:
В открывшемся окне задаем размер диска и нажимаем OK.
Для увеличения размера имеющегося диска устанавливаем на него курсов и кликаем по Изменить размер диска:
В открывшемся окне задаем объем, на который нужно увеличить дисковое пространство.
Добавление сетевого адаптера
Переходим в подраздел Оборудование - кликаем по Добавить и выбираем Сетевое устройство:
Как при создании ВМ, выбираем тип сетевого адаптера (бридж или нат) и нажимаем Добавить.
Установка гостевого агента
Обязательная процедура для повышения производительности и возможностей работы с виртуальной машиной. Настройка выполняется как на гипервизоре, так и в самой виртуальной машине. Рассмотрим пример установки агента на базе системы Linux.
В гипервизоре переходим в Параметры, находим пункт QEMU Guest Agent и кликаем по нему:
Ставим галочку Use QEMU Guest Agent и нажимаем OK:
Для применения настройки нужно выключить и включить виртуальную машину.
Теперь подключаемся к виртуальной машине и устанавливаем утилиту. В зависимости от типа Linux команды будут отличаться.
а) DEB-based:
apt update
apt install qemu-guest-agent
б) RPM-based:
yum install qemu-guest-agent
Установка завершена.
Для запуска сервиса выполняем:
systemctl enable qemu-guest-agent --now
В сводке виртуальной машины мы теперь можем увидеть информацию об IP-адресе, которая получена при помощи гостевого агента.
Подробнее процесс описан на странице https://pve.proxmox.com/wiki/Qemu-guest-agent.
Удаление виртуальной машины
Для удаления виртуальной машины, сначала ее отключаем — это можно сделать из операционной системы или из панели управления, нажав на стрелку вниз рядом с Выключить - Остановка:
После кликаем по Дополнительно - Удалить:
В открывшемся окне мы должны подтвердить свои намерения удалить виртуальную машину, вписав ее идентификатор:
* если мы поставим галочку Purge, то виртуальная машина будет удалена полностью вместе с виртуальным диском.
Кликаем по Удалить — готово.
Тюнинг сервера PVE
Внесем несколько изменений, которые сделают работу с Proxmox VE удобнее.
Отключение предупреждения об отсутствии подписки
Каждый раз при заходе в панель управления мы будем видеть такое предупреждение:
Оно говорит нам о том, что мы используем бесплатную версию программного продукта. Чтобы сообщение нас не беспокоило, выполним 2 действия:
- Отключим платный репозиторий для получения пакетов proxmox.
- Отредактируем файл js для отключения данного сообщения.
И так, в SSH открываем на редактирование репозиторий proxmox:
nano /etc/apt/sources.list.d/pve-enterprise.list
Приводим его к виду:
#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription
* мы закомментировали репозиторий pve-enterprise и добавили pve-no-subscription.
** при большом желании, можно удалить файл репозитория с именем pve-enterprise.list и создать новый — кому как будет удобнее.
Добавляем gpg-ключ для репозитория:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0D9A1950E2EF0603
После обновим список пакетов:
apt update
Последнее — редактируем файл /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js (перед этим его сохраняем):
cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/backup_proxmoxlib.js
sed -i "s/getNoSubKeyHtml:/getNoSubKeyHtml_:/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
* данной командой мы находим getNoSubKeyHtml в файле /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js и меняем на getNoSubKeyHtml_.
Закрываем окно браузера с Proxmox, если оно было открыто и запускаем его снова. Входим в систему — сообщение не должно появиться.
Сертификаты
Сервер PVE устанавливается с самоподписанным сертификатом. Это означает, что при подключении к панели управления мы будем видеть предупреждение от системы безопасности. Чтобы браузер принимал сертификат, он должен соответствовать следующим требованиям:
- Быть выдан доверенным центром сертификации или зарегистрированным в вашей локальной сети, например, локальный AD CS.
- Быть для доменного имени, по которому мы заходим в панель управления.
- Иметь актуальные даты начала действия и окончания.
При этом, мы не должны заходить в панель управления по IP-адресу — в противном случае, независимо от сертификата, мы все-равно, получим предупреждение.
И так, сам сертификат можно купить, запросить бесплатно у Let's Encrypt или создать с использованием локального центра сертификации, например, по данной инструкции. После у нас есть, как минимум, два способа загрузить его.
а) Установка сертификата с помощью графического интерфейса
Получив сертификат, открываем панель управления PVE и переходим к серверу - Система - Сертификаты - кликаем по Загрузить пользовательский сертификат:
В открывшемся окне заполняем поля для закрытого и открытого ключей:
... и нажимаем Загрузить. Система предупредит, что загрузится с новым сертификатом — необходимо закрыть вкладку в браузере и открыть консоль управления снова. Если сертификат загружен правильный, мы не увидим предупреждения.
б) Установка сертификата из командной строки
После развертывания Proxmox создается 2 файла в каталоге /etc/pve/nodes/<имя ноды> (например, /etc/pve/nodes/pve/) с именами pve-ssl.key и pve-ssl.pem. Их нужно заменить.
Сначала создадим их копию:
mkdir -p /backup/proxmox/ssl
cp /etc/pve/nodes/pve/pve-ssl.* /backup/proxmox/ssl/
Предположим, что мы получили сертификаты с помощью Let's Encrypt и они находятся по пути /etc/letsencrypt/live/pve.dmosk.ru. Тогда копируем нужны ключи:
cp /etc/letsencrypt/live/pve.dmosk.ru/fullchain.pem /etc/pve/nodes/pve/pve-ssl.pem
cp /etc/letsencrypt/live/pve.dmosk.ru/privkey.pem /etc/pve/nodes/pve/pve-ssl.key
Возможно, вы подумаете, что для сертификатов Let's Encrypt лучше создавать симлинки, вместо копирования файлов. Однако, для каталога /etc/pve создается FUSE файловая система, которая не поддерживает симлинки.
Перезапускаем сервисы:
systemctl restart pvestatd pvedaemon pve-cluster corosync
Создание нового пользователя
При установке PVE создается пользователь root. Рассмотрим процесс добавления еще одного через командную строку.
Подключаемся по SSH или открываем консоль из панели управления. Создаем пользователя в системе:
useradd user
* где user — имя создаваемого пользователя.
После создаем нового пользователя в Proxmox:
pveum useradd user@pam
* в данном примере мы создали пользователя user в области pam.
Задаем пароль:
pveum passwd user@pam
Задаем роль для созданного пользователя, например, административную:
pveum aclmod / -user user@pam -role Administrator
* весь список ролей можно посмотреть в панели администрирования в разделе Датацентр - Разрешения - Роли.
Ubuntu и CentOS
Возможно, кому-то захочется установить Proxmox именно на Ubuntu или CentOS. К сожалению, разработчики остановились на Debian. Возможно, есть неофициальные обходные пути установки Proxmox на другие дистрибутивы Linux, однако такой путь не является приемлемым для продуктивной среды. Для настройка виртуализации на Ubuntu и CentOS предлагаю инструкции:
1. Установка и настройка KVM на CentOS 7
2. Настройка KVM на Ubuntu Server
Возможные ошибки
Рассмотрим некоторые ошибки, с которыми столкнулся я.
Falling back to a fallback locale
Ошибка появляется при установке гостевой утилиты на компьютер с Linux, а также выполнении некоторых других команд.
Причина: это связано с настройками локали в вашей системе. Скорее всего, среди вариантов языковых настроек не перечислен en_US.UTF-8.
Решение: исходя из причины, нам нужно правильно настроить локаль. Это можно сделать в интерактивном режиме командой:
dpkg-reconfigure locales
После выбираем нужные локали, например: en_US.UTF-8 и ru_RU.UTF-8.
Также можно просто отредактировать файл:
vi /etc/locale.gen
Необходимо снять комментарий с en_US.UTF-8:
...
en_US.UTF-8 UTF-8
...
После вводим:
locale-gen
Настраиваем формат времени и определяем язык интерфейса:
export LC_TIME=ru_RU.utf8
update-locale LANG=en_US.UTF-8
Гостевая служба помечена как masked
Мы можем заметить, что служба qemu-guest-agent не запускается со статусом masked:
qemu-guest-agent.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
Причина: в некоторых операционных системах (я столкнулся в Astra Linux) по умолчанию сервис qemu-guest-agent маскируется.
Решение: маскировку можно снять простой командой:
systemctl unmask qemu-guest-agent
После перечитываем конфигурацию daemon-reload:
systemctl daemon-reload
Можно разрешить запуск сервиса и стартовать его:
systemctl enable qemu-guest-agent --now
Читайте также
Следующие инструкции также могут показаться вам полезными:
1. Настройка кластера Proxmox VE.
2. Конвертирование виртуального диска Proxmox в диск VMware.