Редактирование: PVE

Перейти к: навигация, поиск

Внимание: Вы работаете как анонимный пользователь. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
= Что это такое =
 
= Что это такое =
Proxmox Virtual Environment (PVE) — средство управления виртуальными окружениями на базе гипервизора [[ruwp:KVM|KVM]] и системы контейнерной изоляции [[ruwp:LXC|LXC]]. Строго говоря, PVE это не система виртуализации, а инструментарий управления средой, в которой выполняются виртуальные окружения KVM и LXC. Основными компонентами среды являются:
+
Proxmox Virtual Environment (PVE) — средство управления виртуальными окружениями на базе гипервизора [http://ru.wikipedia.org/wiki/KVM KVM] и системы контейнерной изоляции [http://ru.wikipedia.org/wiki/LXC LXC]. Строго говоря, PVE это не система виртуализации, а инструментарий управления средой, в которой выполняются виртуальные окружения KVM и LXC. Основными компонентами среды являются:
  
 
* физические серверы, на которых выполняются процессы гипервизора KVM, и процессы, работающие в контейнерах LXC;
 
* физические серверы, на которых выполняются процессы гипервизора KVM, и процессы, работающие в контейнерах LXC;
Строка 22: Строка 22:
  
 
== Хранилище данных ==
 
== Хранилище данных ==
В случае локальной установки PVE для размещения данных виртуальных окружений можно дополнительно ничего не настраивать и использовать локальную файловую систему сервера. Но в случае кластера из нескольких серверов имеет смысл настроить сетевую или распределённую сетевую файловую систему, обеспечивающую параллельный доступ к файлам со всех серверов, на которых выполняются процессы виртуальных окружений. В качестве таких файловых систем могут выступать, например, [[ruwp:NFS|NFS]] или [[ruwp:CEPH|CEPH]].
+
В случае локальной установки PVE для размещения данных виртуальных окружений можно дополнительно ничего не настраивать и использовать локальную файловую систему сервера. Но в случае кластера из нескольких серверов имеет смысл настроить сетевую или распределённую сетевую файловую систему, обеспечивающую параллельный доступ к файлам со всех серверов, на которых выполняются процессы виртуальных окружений. В качестве таких файловых систем могут выступать, например, [http://ru.wikipedia.org/wiki/NFS NFS] или [http://ru.wikipedia.org/wiki/CEPH CEPH].
 
==== Подключение общего хранилища iSCSI (Multipath) с использованием LVM ====
 
==== Подключение общего хранилища iSCSI (Multipath) с использованием LVM ====
Настройка iSCSI-target на базе ALT подробно описана в [[GFS2 на iSCSI с Multipath#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_iSCSI_target|этой статье]].<br>
+
Настройка iSCSI-target на базе ALT подробно описана в этой статье [[GFS2 на iSCSI с Multipath#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_iSCSI_target|этой статье]].<br>
{{Attention|iSCSI initiator настраивается средствами ALT PVE.<br> Сервис iscsid запускается средствами ALT PVE и не должен присутствовать в автозагрузке}}
+
{{Attention|iSCSI initiator настраивается средствами ALT PVE.<br> Сервис iscsid запускается средствами ALT PVE и не должен присутствовать в атозагрузке}}
 
Исходные данные:<br>
 
Исходные данные:<br>
 
* Настроенный кластер ALT PVE
 
* Настроенный кластер ALT PVE
Строка 37: Строка 37:
 
*Enable: Вкл/Выкл хранилище
 
*Enable: Вкл/Выкл хранилище
 
*Use LUNs directly: Использование LUN напрямую, галочку надо снять
 
*Use LUNs directly: Использование LUN напрямую, галочку надо снять
Ту же процедуру надо проделать для второго адреса iSCSI сервера.<br>
+
Туже процедуру надо проделать для второго адреса iSCSI сервера.<br>
 
После этого на всех нодах появятся два блочных устройства.<br>
 
После этого на всех нодах появятся два блочных устройства.<br>
 
Далее необходимо настроить Multipath по этой [[GFS2 на iSCSI с Multipath#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_Multipath|инструкции]]<br>
 
Далее необходимо настроить Multipath по этой [[GFS2 на iSCSI с Multipath#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_Multipath|инструкции]]<br>
Строка 66: Строка 66:
 
В отличие от хранилища данных, сетевая подсистема требует специальной настройки даже в случае локальной установки PVE. Это обусловлено тем, что сетевые интерфейсы виртуальных окружений должны подключаться к какому-то виртуальному же устройству, обеспечивающему соединение с общей сетью передачи данных. Обычно в качестве такого устройства выступает Ethernet-мост.
 
В отличие от хранилища данных, сетевая подсистема требует специальной настройки даже в случае локальной установки PVE. Это обусловлено тем, что сетевые интерфейсы виртуальных окружений должны подключаться к какому-то виртуальному же устройству, обеспечивающему соединение с общей сетью передачи данных. Обычно в качестве такого устройства выступает Ethernet-мост.
  
= Установка и настройка PVE на Альт Сервер Виртуализации 9 =
+
= Установка и настройка PVE =
 
+
В качестве сервера для развёртывания PVE удобно использовать [[starterkits|стартовый набор]] [http://nightly.altlinux.org/p8/permalink/alt-p8-server-pve-latest-x86_64.iso server-pve]. Он уже содержит все необходимые компоненты. Если же развёртывание PVE происходит в уже установленной системе на базе [[P8|Восьмой платформы]], достаточно любым штатным способом ({{cmd|apt-get}}, {{cmd|aptitude}}, {{cmd|synaptic}}) установить пакет {{cmd|pve-manager}}. Все необходимые компоненты при этом будут установлены автоматически. Также следует убедиться в том, что пакет systemd обновлён до версии, находящейся в репозитории P8.
В качестве сервера для развертывания PVE удобно использовать дистрибутив Альт Сервер Виртуализации (Сервер виртуализации). Он уже содержит все необходимые компоненты.  
 
 
 
{{Note| Компоненты PVE будут установлены в систему, если при установке дистрибутива выбрать профиль '''Виртуальное окружение Proxmox'''.}}
 
 
 
==Настройка узлов кластера==
 
 
 
PVE должен быть установлен на всех узлах. Следует убедиться, что каждый узел установлен с окончательным именем хоста и IP-конфигурацией. Изменение имени хоста и IP-адреса невозможно после создания кластера.
 
 
 
{{Note|Локальная установка — частный случай кластера из одного узла. }}
 
===Настройка преобразования имен===
 
Необходимо обеспечить взаимно однозначное прямое и обратное преобразование имен для всех узлов кластера. Крайне желательно использовать DNS, в крайнем случае, можно обойтись соответствующими записями в локальных файлах {{path|/etc/hosts}}:
 
 
 
<source lang="text" highlight="1-3"># echo "192.168.88.186 pve01.localdomain pve01" >> /etc/hosts
 
# echo "192.168.88.90 pve02.localdomain pve02" >> /etc/hosts
 
# echo "192.168.88.70 pve03.localdomain pve03" >> /etc/hosts
 
</source>
 
{{Note| Имя машины не должно присутствовать в файле {{path|/etc/hosts}} разрешающимся в 127.0.0.1. }}
 
===Настройка сетевой подсистемы===
 
На всех узлах кластера необходимо настроить Ethernet-мост.
 
 
 
{{Attention|Мосту должно быть назначено имя vmbr0 и оно должно быть одинаково на всех узлах.}}
 
 
 
{{Attention|При использовании дистрибутива Альт Сервер Виртуализации 9.1 интерфейс vmbr0 создаётся и настраивается в процессе установки.}}
 
 
 
Для настройки Ethernet-моста с именем vmbr0, можно выполнить следующие команды:
 
 
 
<source lang="text" highlight="1-4"># mkdir /etc/net/ifaces/vmbr0
 
# cp /etc/net/ifaces/enp0s3/* /etc/net/ifaces/vmbr0/
 
# rm -f /etc/net/ifaces/enp0s3/{i,r}*
 
# cat <<EOF > /etc/net/ifaces/vmbr0/options BOOTPROTO=static CONFIG_WIRELESS=no CONFIG_IPV4=yes HOST='enp0s3' ONBOOT=yes TYPE=bri EOF
 
</source>
 
Имя интерфейса, обозначенного здесь как enp0s3, следует указать в соответствии с реальной конфигурацией сервера.
 
 
 
IP-адрес для интерфейса будет взят из {{path|/etc/net/ifaces/enp0s3/ipv4address}}.
 
 
 
В опции HOST файла {{path|/etc/net/ifaces/vmbr0/options}} нужно указать те интерфейсы, которые будут входить в мост. Если в него будут входить интерфейсы, которые до этого имели IP-адрес (например, enp0s3), то этот адрес должен быть удален (например, можно закомментировать содержимое файла {{path|/etc/net/ifaces/enp0s3/ipv4address}}).
 
 
 
Для того, чтобы изменения вступили в силу необходим перезапуск сервиса network:
 
 
 
<source lang="text" highlight="1"># systemctl restart network</source>
 
 
 
При старте сети сначала поднимаются интерфейсы, входящие в мост, затем сам мост (автоматически).
 
 
 
==Создание кластера PVE==
 
Кластер не создается автоматически на только что установленном узле PVE. Он должен быть создан через интерфейс командной строки с любого из узлов PVE, который будет частью кластера. После того как кластер создан и узлы добавлены в этот кластер, большая часть управления может выполняться через графический интерфейс.  
 
 
 
Для правильного функционирования кластера необходимо как минимум три узла. С тремя узлами возможен кворум, который позволяет кластерам обеспечивать работоспособность и функционирование должным образом.
 
 
 
На «головном» узле кластера необходимо выполнить команды инициализации конкретного кластера PVE, в данном случае — «pve», выполнив команды (это можно сделать и из веб-интерфейса Datacenter -> Cluster -> Create claster, перед этим запустив все необходимые службы (см.ниже)):
 
 
 
<source lang="text" highlight="1-2"># systemctl start pve-cluster
 
# pvecm create pve
 
</source>
 
 
 
Проверка:
 
 
 
<source lang="text" highlight="1"># pvecm status
 
Quorum information
 
------------------
 
Date:            Fri Sep 27 16:29:06 2019
 
Quorum provider:  corosync_votequorum
 
Nodes:            1
 
Node ID:          0x00000001
 
Ring ID:          1/4
 
Quorate:          Yes
 
 
 
Votequorum information
 
----------------------
 
Expected votes:  1
 
Highest expected: 1
 
Total votes:      1
 
Quorum:          1
 
Flags:            Quorate
 
 
 
Membership information
 
----------------------
 
Nodeid      Votes Name
 
0x00000001          1 192.168.88.186 (local)
 
</source>
 
 
 
Команда создания кластера создает файл настройки {{path|/etc/pve/corosync.conf}}. По мере добавления узлов в кластер файл настройки будет автоматически пополняться информацией об узлах.
 
 
 
Для добавления узлов в кластер, необходимо на «подчинённых» узлах выполнить следующие команды:
 
 
 
<source lang="text" highlight="1-2"># systemctl start pve-cluster
 
# pvecm add pve01
 
</source>
 
 
 
где pve01 — имя или ip-адрес «головного» узла.
 
При добавлении узла в кластер, потребуется ввести пароль администратора главного узла кластера:
 
  
<source lang="text" highlight="1"># pvecm add 192.168.88.186
 
Please enter superuser (root) password for '192.168.88.186':
 
                                                        Password for root@192.168.88.186: ***
 
Establishing API connection with host '192.168.88.186'
 
Login succeeded.
 
Request addition of this node
 
Join request OK, finishing setup locally
 
stopping pve-cluster service
 
backup old database to '/var/lib/pve-cluster/backup/config-1573727779.sql.gz
 
waiting for quorum...OK
 
(re)generate node files
 
generate new node certificate
 
merge authorized SSH keys and known hosts
 
generated new node certificate, restart pveproxy and pvedaemon services
 
successfully added node 'pve03' to cluster.
 
</source>
 
После добавления узлов в кластер, файл настройки кластера в {{path|/etc/pve/corosync.conf}} должен содержать информацию об узлах кластера.
 
 
На всех узлах кластера необходимо запустить службы кластера и добавить их в список служб, запускаемых при старте узла:
 
 
<source lang="text" highlight="1-2"># systemctl start lxc lxcfs lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy
 
# systemctl enable corosync lxc lxcfs lxc-net lxc-monitord pve-cluster pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-guests
 
</source>
 
 
{{Attention|При использовании дистрибутива Альт Сервер Виртуализации 9.1 все указанные службы добавляются и запускаются автоматически. Веб-интерфейс PVE должен быть доступен сразу после перезагрузки после установки дистрибутива.}}
 
 
Дальнейшие настройки кластера удобно делать через веб-интерфейс.
 
 
Веб-интерфейс PVE доступен по адресу https://<внешний-ip-адрес>:8006. Потребуется пройти аутентификацию (логин по умолчанию: root, пароль указывается в процессе установки):
 
 
[[Изображение:Pve_auth.png|Аутентификация в веб-интерфейсе PVE]]
 
 
= Установка и настройка PVE =
 
В качестве сервера для развёртывания PVE нужно использовать серверный дистрибутив Альт на базе 8-й платформы и доустановить необходимые пакеты штатным способом любым штатным способом ({{cmd|apt-get}}, {{cmd|aptitude}}, {{cmd|synaptic}}) установить пакет {{cmd|pve-manager}}. Все необходимые компоненты при этом будут установлены автоматически. Также следует убедиться в том, что пакет systemd обновлён до версии, находящейся в репозитории P8.
 
<pre>
 
На всех нодах:
 
# apt-get install pve-manager
 
</pre>
 
 
Рассмотрим настройку кластера PVE. Локальную установку будем считать частным случаем кластера из одного узла.
 
Рассмотрим настройку кластера PVE. Локальную установку будем считать частным случаем кластера из одного узла.
  
 
== Настройка сетевой подсистемы ==
 
== Настройка сетевой подсистемы ==
: Если в файле options интерфейса не задан TYPE=, pve-manager завершается с ошибкой
 
 
 
Сначала на всех узлах кластера настроим Ethernet-мост в соответствии с [[Etcnet#Настройка Ethernet-моста|руководством]]:
 
Сначала на всех узлах кластера настроим Ethernet-мост в соответствии с [[Etcnet#Настройка Ethernet-моста|руководством]]:
  
 
<pre>
 
<pre>
#ip=$(hostname -i)
+
# mkdir /etc/net/ifaces/vmbr0
#cat > /etc/net/ifaces/ens18/options << EOF
+
# mv /etc/net/ifaces/eth0/* /etc/net/ifaces/vmbr0/
TYPE=eth
+
# cp /etc/net/ifaces/vmbr0/options /etc/net/ifaces/eth0/
EOF
+
# cat <<EOF > /etc/net/ifaces/vmbr0/options
#mkdir -p /etc/net/ifaces/vmbr0
 
#cat > /etc/net/ifaces/vmbr0/options << EOF
 
 
BOOTPROTO=static
 
BOOTPROTO=static
TYPE=bri
 
HOST='ens18'
 
 
CONFIG_WIRELESS=no
 
CONFIG_WIRELESS=no
 
CONFIG_IPV4=yes
 
CONFIG_IPV4=yes
EOF
+
HOST='eth0'
#cat > /etc/net/ifaces/vmbr0/ipv4address << EOF
+
ONBOOT=yes
$ip/21
+
TYPE=bri
EOF
 
#cat > /etc/net/ifaces/vmbr0/ipv4route << EOF
 
default via 10.88.8.1
 
EOF
 
cat > /etc/net/ifaces/vmbr0/resolv.conf << EOF
 
search example.com test.com
 
nameserver 10.0.0.0
 
 
EOF
 
EOF
 
# cat <<EOF  > /etc/net/ifaces/vmbr0/brctl
 
# cat <<EOF  > /etc/net/ifaces/vmbr0/brctl
Строка 233: Строка 92:
 
</pre>
 
</pre>
  
Имя интерфейса, обозначенного здесь как ens18, следует указать в соответствии с реальной конфигурацией сервера.
+
Имя интерфейса, обозначенного здесь как eth0, следует указать в соответствии с реальной конфигурацией сервера.
 +
 
 +
При установленных пакетах {{pkg|alterator-net-eth}} и {{pkg|alterator-net-bridge}} вместо всего этого можно просто воспользоваться web-интерфейсом.
  
{{Attention|Данная последовательность команд приводит к желаемому результату только в том случае, если интерфейс, который является хостом для моста, ранее не настраивался. В противном случае необходимо также удалить или очистить ipv4address, ipv4route и resolv.conf, иначе могут возникнуть проблемы при дальнейшей настройке.  }}
+
Основная часть разработки PVE ведётся под ОС Debian, и в связи с этим в свежих версиях PVE иногда возникают забавные нюансы. Так в текущей версии конфигурация Ethernet-мостов и информация о временны́х зонах считывается из специфичных для Debian и его производных конфигурационных файлов {{path|/etc/network/interfaces}} и {{path|/etc/timezone}}. Поэтому, пока ошибка не исправлена, настройки придётся продублировать:
  
При установленных пакетах {{pkg|alterator-net-eth}} и {{pkg|alterator-net-bridge}} вместо всего этого можно просто воспользоваться web-интерфейсом.
+
<pre>
{{Attention|При этом нужно учесть, что мост, созданный через веб-интерфейс, будет иметь имя br*, в то время как для PVE стандартом является vmbr*. Это может приводить к труднодиагностируемым и трудноразрешимым проблемам, препятствующим нормальному запуску PVE}}
+
# mkdir /etc/network
 +
# printf "\nauto vmbr0\n\tiface vmbr0 inet static\n\taddress 10.0.0.251\n\tnetmask 255.255.255.0\n\tgateway 10.0.0.1\n\tbridge_ports eth0\n\tbridge_stp off\n\tbridge_fd 0\n" >> /etc/network/interfaces
 +
# . /etc/sysconfig/clock
 +
# echo $ZONE > /etc/timezone
 +
# ln -sf /usr/share/zoneinfo/$ZONE /etc/localtime
 +
</pre>
  
 
Далее необходимо обеспечить взаимно однозначное прямое и обратное преобразование имён для всех узлов кластера. Крайне желательно использовать DNS, но в крайнем случае можно обойтись соответствующими записями в локальных файлах {{path|/etc/hosts}}:
 
Далее необходимо обеспечить взаимно однозначное прямое и обратное преобразование имён для всех узлов кластера. Крайне желательно использовать DNS, но в крайнем случае можно обойтись соответствующими записями в локальных файлах {{path|/etc/hosts}}:
  
 
<pre>
 
<pre>
# echo "10.88.8.251 pve1.localdomain pve1" >> /etc/hosts
+
# echo "10.0.0.251 pve1.localdomain pve1" >> /etc/hosts
# echo "10.88.8.252 pve2.localdomain pve2" >> /etc/hosts
+
# echo "10.0.0.252 pve2.localdomain pve2" >> /etc/hosts
# echo "10.88.8.253 pve3.localdomain pve3" >> /etc/hosts
 
 
</pre>
 
</pre>
  
Строка 251: Строка 116:
  
 
== Настройка взаимодействия компонентов PVE ==
 
== Настройка взаимодействия компонентов PVE ==
В качестве транспорта для передачи команд между узлами кластера применяется протокол SSH.
+
В качестве транспорта для передачи команд между узлами кластера применяется протокол SSH. Если мы настраиваем локальную установку PVE, ничего специального делать не нужно, а если узлов в кластере будет несколько, необходимо на каждом узле разрешить передачу переменной окружения {{path|LC_PVE_TICKET}}:
Для передачи команд между узлами кластера необходимо обеспечить взаимную беспарольную аутентификацию пользователя root. Это можно сделать вручную, а можно при добавлении нового узла в кластер PVE разрешить на «ведущем» узле вход пользователя root по паролю и ввести пароль. После этого взаимная беспарольная аутентификация root будет настроена автоматически утилитами PVE, и вход root по паролю можно будет снова отключить.
+
 
 +
<pre>
 +
# N=$(($(sed -n '/^AcceptEnv/{=}' /etc/openssh/sshd_config | tail -1) + 1)); sed -i "${N}i AcceptEnv LC_PVE_TICKET\n" /etc/openssh/sshd_config
 +
# N=$(($(sed -n '/^[[:space:]]*SendEnv/{=}' /etc/openssh/ssh_config | tail -1) + 1)); sed -i "${N}i \ \ \ \ SendEnv LC_PVE_TICKET\n" /etc/openssh/ssh_config
 +
# systemctl restart sshd
 +
</pre>
 +
 
 +
Кроме того, для передачи команд между узлами кластера необходимо обеспечить взаимную беспарольную аутентификацию пользователя root. Это можно сделать вручную, а можно при добавлении нового узла в кластер PVE разрешить на «ведущем» узле вход пользователя root по паролю и ввести пароль. После этого взаимная беспарольная аутентификация root будет настроена автоматически утилитами PVE, и вход root по паролю можно будет снова отключить.
  
 
Важно понимать, что в сконфигурированном кластере PVE все узлы равноправны. «Ведущим», «головным» и так далее один из узлов становится только в момент добавления в кластер нового узла. После добавления новый узел может стать таким же ведущим при проведении следующей процедуры добавления очередного узла в кластер.
 
Важно понимать, что в сконфигурированном кластере PVE все узлы равноправны. «Ведущим», «головным» и так далее один из узлов становится только в момент добавления в кластер нового узла. После добавления новый узел может стать таким же ведущим при проведении следующей процедуры добавления очередного узла в кластер.
  
 
Теперь осталось настроить ещё два компонента системы, которые утилиты PVE пока не могут полностью автоматически настроить при запуске кластера. Это демон {{cmd|rrdcached}}, отвечающий за хранение данных мониторинга активности подсистем кластера, и {{cmd|corosync}} — комплекс ПО, обеспечивающий в пределах кластера элементы высокой доступности.
 
Теперь осталось настроить ещё два компонента системы, которые утилиты PVE пока не могут полностью автоматически настроить при запуске кластера. Это демон {{cmd|rrdcached}}, отвечающий за хранение данных мониторинга активности подсистем кластера, и {{cmd|corosync}} — комплекс ПО, обеспечивающий в пределах кластера элементы высокой доступности.
 +
 
<pre>
 
<pre>
Выполнить на всех нодах:
+
# cp /usr/share/doc/pve-cluster/rrdcached.sysconfig /etc/sysconfig/rrdcached
# sh /usr/share/doc/pve-cluster/pve-firsttime
+
# mkdir -p /var/lib/rrdcached/{db,journal}
# rm -f /etc/corosync/corosync.conf
 
</pre>
 
Для версии pve-cluster 6.0  и выше:
 
<pre>
 
 
# rm -f /etc/corosync/corosync.conf
 
# rm -f /etc/corosync/corosync.conf
 
</pre>
 
</pre>
Строка 273: Строка 142:
  
 
<pre>
 
<pre>
# systemctl start ntpd rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target
+
# systemctl start syslogd ntpd rrdcached ksmtuned crond lxcfs cgmanager nfs-client.target
# systemctl enable ntpd rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target
+
# systemctl enable syslogd ntpd rrdcached ksmtuned crond lxcfs cgmanager nfs-client.target
 
</pre>
 
</pre>
  
Для версии 6.0 (в связи с заменой ntpd на chrony):
+
Далее, на «головном» (см. выше) узле кластера выполняем команды собственно инициализации конкретного кластера PVE, в данном случае — «mypve»:
<pre>
 
# systemctl start chronyd rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target
 
# systemctl enable chronyd rrdcached ksmtuned crond lxcfs openvswitch nfs-client.target
 
</pre>
 
Также на версии 6.0 может потребоваться предварительно доустановить nfs-clients
 
  
Далее, на «головном» (см. выше) узле кластера выполняем команды собственно инициализации конкретного кластера PVE, в данном случае — «mypve»:
 
{{Attention|Если после переустановки pve не возможно инициализировать кластер: cluster config '/etc/pve/corosync.conf' already exists удалите файл /etc/pve/corosync.conf  }}
 
 
<pre>
 
<pre>
 
# systemctl start pve-cluster
 
# systemctl start pve-cluster
# ip=$(hostname -i)
+
# pvecm create mypve
# pvecm create pve --ring0_addr $ip
+
</pre>
  
Для версии pve-cluster 6.0 и выше:
+
На «подчинённых» (см. выше) узлах:
# systemctl start pve-cluster
 
# ip=$(hostname -i)
 
# pvecm create pve
 
</pre>
 
  
Если на данном этапе получили ошибку, загляните на форум за [https://forum.altlinux.org/index.php?topic=43400.0 возможным решением]
 
 
На «подчинённых» (см. выше) узлах:
 
{{Attention|Если при добавлении узла возникает ошибка: * cluster config '/etc/pve/corosync.conf' already exists
 
необходимо добавить опцию -force  (В версии 6.0.7 данной опции нет, что подтверждает man) }}
 
 
<pre>
 
<pre>
ip=$(hostname -i)
+
# pvecm add <головной_узел>
systemctl start pve-cluster
+
# systemctl start corosync pve-cluster
pvecm add 10.88.10.251 --ring0_addr $ip
 
 
 
Для версии pve-cluster 6.0 и выше:
 
systemctl start pve-cluster
 
pvecm add 10.88.10.251 --use_ssh
 
 
</pre>
 
</pre>
  
Далее, запускаем остальные службы и добавляем их в список служб, запускаемых при старте узла:
+
Далее, запускаем пользовательский интерфейс и добавляем его в список служб, запускаемых при старте узла:
  
 
<pre>
 
<pre>
# systemctl start lxc lxc-net lxc-monitord pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy
+
# systemctl start pve-manager
# systemctl enable corosync lxc lxc-net lxc-monitord pve-cluster pvedaemon pve-firewall pvestatd pve-ha-lrm pve-ha-crm spiceproxy pveproxy pve-guests
+
# systemctl enable pve-manager
 
</pre>
 
</pre>
  
Строка 346: Строка 194:
 
[[Файл:Pve-storage-types.png|900px|Выбор бэкенда хранилища данных]]
 
[[Файл:Pve-storage-types.png|900px|Выбор бэкенда хранилища данных]]
  
При создании каждому хранилищу данных присваивается роль или набор ролей. Например, хранение контейнеров, образов виртуальных дисков, файлов .iso и так далее. Список возможных ролей зависит от бэкенда хранилища. Например, для NFS или каталога локальной файловой системы доступны любые роли или наборы ролей.
+
При создании каждому хранилищу данных присваивается роль или набор ролей. Например, хранение контейнеров, образов виртуальных дисков, файлов .iso и так далее. Список возможных ролей зависит от бэкенда хранилища. Например, для NFS или каталога локальной файловой системы доступны любые роли или наборы ролей, а хранилища на базе CEPH можно использовать только для хранения ISO-образов или шаблонов контейнеров.
  
 
[[Файл:Pve-storage-roles.png|900px|Выбор ролей хранилища данных]]
 
[[Файл:Pve-storage-roles.png|900px|Выбор ролей хранилища данных]]
  
Сразу после инициализации кластера в пределах каждого из узлов нам доступно одно локальное хранилище данных. Этого уже вполне достаточно для начала работы.
+
Сразу после инициализации кластера в пределах каждого из узлов нам доступно одно локальное хранилище данных. Этого ужу вполне достаточно для начала работы.
  
 
=== Создание виртуальной машины ===
 
=== Создание виртуальной машины ===
Строка 402: Строка 250:
 
'''Подготовка образа диска'''<br>
 
'''Подготовка образа диска'''<br>
 
Предположим что файл с образом диска называется win7.vmdk<br>
 
Предположим что файл с образом диска называется win7.vmdk<br>
С помощью vmware-vdiskmanager (утилита поставляется в комплекте с VMWare Workstation) Вам необходимо преобразовать Ваш образ диска в тип "single growable virtual disk". Для этого в перейдите в папку с образами дисков и выполните следующую команду:
+
*С помощью vmware-vdiskmanager (утилита поставляется в комплекте с VMWare Workstation) Вам необходимо преобразовать Ваш образ диска в тип "single growable virtual disk". Для этого в перейдите в папку с образами дисков и выполните следующую команду:
 
<pre>"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager" -r win7.vmdk -t 0 win7-pve.vmdk</pre>
 
<pre>"C:\Program Files\VMware\VMware Server\vmware-vdiskmanager" -r win7.vmdk -t 0 win7-pve.vmdk</pre>
 
'''Подключение образа диска к виртуальной машине на основе Directory Storage'''<br>
 
'''Подключение образа диска к виртуальной машине на основе Directory Storage'''<br>
Создайте новую виртуальную машину KVM, используя web-интерфейс ALT PVE, но не запускайте её. Посмотрите VMID, созданной виртуальной машины (например 100).<br>
+
*Создайте новую виртуальную машину KVM, используя web-интерфейс ALT PVE, но не запускайте её. Посмотрите VMID, созданной виртуальной машины (например 102).
Скопируйте преобразованный образ win7-pve.vmdk в директорию с образами виртуальных машин <pre>/var/lib/vz/images/VMID</pre> (для этого можно воспользоваться WinSCP).<br>
+
*Скопируйте преобразованный образ win7-pve.vmdk в директорию с образами виртуальных машин <pre>/var/lib/vz/images/VMID</pre> (для этого можно воспользоваться WinSCP).
Преобразуйте файл win7-pve.vmdk в qemu формат:
+
*Преобразуйте файл win7-pve.vmdk в qemu формат:
 
<pre># qemu-img convert -f vmdk win7-pve.vmdk -O qcow2 win7-pve.qcow2</pre>
 
<pre># qemu-img convert -f vmdk win7-pve.vmdk -O qcow2 win7-pve.qcow2</pre>
 
Для подключения образа диска к созданной виртуальной машине Вам необходимо добавить в конфигурационный файл {{path|/etc/pve/nodes/node01/qemu-server/VMID.conf}} виртуальной машины следующую строчку:
 
Для подключения образа диска к созданной виртуальной машине Вам необходимо добавить в конфигурационный файл {{path|/etc/pve/nodes/node01/qemu-server/VMID.conf}} виртуальной машины следующую строчку:
 
<pre>unused0: locald:100/win7-pve.qcow2.qcow2</pre>
 
<pre>unused0: locald:100/win7-pve.qcow2.qcow2</pre>
где 100 это VMID, а locald это имя хранилища в ALT PVE. Далее перейдите в web-интерфейс ALT PVE на вкладку Hardware, созданной виртуальной машины. В списке устройств вы увидите неиспользуемый жесткий диск, щелкните на него, выберете режим IDE и нажмите кнопку Add:<br>
+
где 100 это VMID, а locald это имя хранилища в ALT PVE. Далее перейдите в web-интерфейс ALT PVE на вкладку Hardware, созданной виртуальной машины. В списке устройств вы увидите неиспользуемый жесткий диск, щелкните на него и нажмите кнопку Add:<br>
 
[[Файл:Alt pve add disk.jpg|600px]]<br>
 
[[Файл:Alt pve add disk.jpg|600px]]<br>
'''Подключение образа диска к виртуальной машине на основе LVM Storage'''<br>
+
'''Подключение образа диска к виртуальной машине на основе LVM Storage'''
Создайте виртуальную машину используя web-интерфейс ALT PVE с диском большего размера,чем диск в образе vmdk. Посмотреть размер диска в образе можно командой:
+
*Создайте виртуальную машину используя web-интерфейс ALT PVE с диском большего размера,чем диск в образе vdmk. Посмотреть размер диска в образе можно командой:
 
<pre># qemu-img info win7-pve.vmdk  
 
<pre># qemu-img info win7-pve.vmdk  
 
image: win7-pve.vmdk
 
image: win7-pve.vmdk
Строка 431: Строка 279:
 
             cluster size: 65536
 
             cluster size: 65536
 
             format:</pre>
 
             format:</pre>
В данном случае необходимо создать диск в режиме IDE размером не меньше 127GB, не запускайте виртуальную машину.<br>
+
В данном случае необходимо создать диск размером не меньше 127GB, не запускайте виртуальную машину.
Скопируйте преобразованный образ win7-pve.vmdk на нужную ноду кластера.<br>
+
*Скопируйте преобразованный образ win7-pve.vmdk на нужную ноду кластера.
Перейдите в консоль ноды кластера и посмотрите как называется LVM диск созданной виртуальной машины (он должен быть в статусе ACTIVE):
+
*Далее перейдите в консоль ноды кластера и посмотрите как называется LVM диск созданной виртуальной машины (он должен быть в статусе ACTIVE):
 
<pre># lvscan
 
<pre># lvscan
 +
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
 
   ACTIVE            '/dev/sharedsv/vm-101-disk-1' [130,00 GiB] inherit</pre>
 
   ACTIVE            '/dev/sharedsv/vm-101-disk-1' [130,00 GiB] inherit</pre>
Далее необходимо сконвертировать образ vdmk в raw формат непосредственно на LVM-устройство:
+
*Далее необходимо сконвертировать образ vdmk в raw формат непосредственно на LVM-устройство:
 
<pre># qemu-img convert -f vmdk win7-pve.vmdk -O raw /dev/sharedsv/vm-101-disk-1</pre>
 
<pre># qemu-img convert -f vmdk win7-pve.vmdk -O raw /dev/sharedsv/vm-101-disk-1</pre>
'''Подключение образа диска к виртуальной машине на основе CEPH Storage'''<br>
+
Кроме того Ваш образ диска может быть в формате flat, тогда при попытке конвертировать его вы получите ошибку "Operation not permitted". Вы можете посмотреть настоящий формат вашего .vdmk файла с помощью команды "file". Если файл в формате flat то вы получите примерно такой вывод:
Создайте виртуальную машину используя web-интерфейс ALT PVE с диском большего размера,чем диск в образе vmdk.<br>
 
Скопируйте преобразованный образ win7-pve.vmdk на нужную ноду кластера.<br>
 
Перейдите в консоль ноды кластера. Имя нужного пула можно посмотреть на вкладке Datacenter->Storage->rbd-storage:<br>
 
[[Файл:Alt pve rbd pool.jpg|500px]]<br>
 
Нам необходимо отобразить образ из пула CEPH в локальное блочное устройство:
 
<pre># rbd map rbd01/vm-100-disk-1
 
/dev/rbd0</pre>
 
Далее необходимо сконвертировать образ vdmk в raw формат непосредственно на отображенное устройство:
 
<pre># qemu-img convert -f vmdk win7-pve.vmdk -O raw /dev/rbd0</pre>
 
'''Проблемы с образом VMware'''<br>
 
Кроме того Ваш образ диска может быть в формате flat, тогда при попытке конвертировать его вы получите ошибку "Operation not permitted". Вы можете посмотреть настоящий формат вашего .vdmk файла с помощью команды "file". Если файл в формате flat то вы получите примерно такой вывод:
 
 
<pre># file myVMwFlatImage-pre.vmdk
 
<pre># file myVMwFlatImage-pre.vmdk
 
myVMwFlatImage-pre.vmdk: x86 boot sector; partition 1: ID=0x83, active, starthead 1,
 
myVMwFlatImage-pre.vmdk: x86 boot sector; partition 1: ID=0x83, active, starthead 1,
 
   startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845,
 
   startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845,
 
   16563015 sectors, code offset 0x48</pre>
 
   16563015 sectors, code offset 0x48</pre>
Очень просто конвертировать такой файл из .vdmk в .qcow2 просто убрав параметр "-f vdmk" из предыдущей команды, предоставив qemu-img автоматически определить формат исходного файла:
+
Очень просто конвертировать такой файл из .vdmk в .qcow2 просто убрав параметр "-f vdmk" из предыдущей команды, предоставив qume-img автоматически определить формат исходного файла:
 
<pre># qemu-img convert myVMwFlatImage-pve.vmdk -O qcow2 myVMwFlatImage-pve.qcow2</pre>
 
<pre># qemu-img convert myVMwFlatImage-pve.vmdk -O qcow2 myVMwFlatImage-pve.qcow2</pre>
 
Если ваша виртуальная машина KVM стартует, но не грузится с ошибкой "booting from hard disk...boot failed: not a bootable disk", то попробуйте при конвертировании вместо типа диска "single growable virtual disk"  тип "preallocated virtual disk". Для этого в командной строке запустите vmvare-vdiskmanager без параметров, Вы увидите справку по работе с командой. Тип диска при конвертации задает параметр -t <disk-type>:
 
Если ваша виртуальная машина KVM стартует, но не грузится с ошибкой "booting from hard disk...boot failed: not a bootable disk", то попробуйте при конвертировании вместо типа диска "single growable virtual disk"  тип "preallocated virtual disk". Для этого в командной строке запустите vmvare-vdiskmanager без параметров, Вы увидите справку по работе с командой. Тип диска при конвертации задает параметр -t <disk-type>:
Строка 468: Строка 306:
 
Имейте ввиду, что при этом vmware-vdiskmanager создаст два файла. Первый файл {{path|whatever-pve.vmdk}} очень маленький, это обычный текстовый файл со ссылкой на образ. Второй файл {{path|whatever-pve-flat.vmdk}}, который имеет размер всего Вашего виртуального диска и именно его надо конвертировать в kvm.<br>
 
Имейте ввиду, что при этом vmware-vdiskmanager создаст два файла. Первый файл {{path|whatever-pve.vmdk}} очень маленький, это обычный текстовый файл со ссылкой на образ. Второй файл {{path|whatever-pve-flat.vmdk}}, который имеет размер всего Вашего виртуального диска и именно его надо конвертировать в kvm.<br>
 
'''Адаптация новой виртуальной машины KVM'''
 
'''Адаптация новой виртуальной машины KVM'''
*Проверьте режим работы жесткого диска для Windows - IDE, для Linux SCSI
+
*Перейдите на вкладку Hardware в web-интерфейсе виртуальной машины и удалите дефолтный жесткий диск
*Режим VIRTIO жесткого диска:
+
*Добавьте сконвертированный образ жесткого диска в режиме IDE для Windows или в режиме SCSI для Linux
**Режим VIRTIO также доступен для Windows, но сразу загрузиться в этом режиме система не может
+
**Режим virtio также доступен для Windows, но сразу загрузится в этом режиме система не может. Поэтому загрузитесь сначала в режиме IDE и выключите машину, добавьте еще один диск в режиме virtio и включите машину. Далее снова выключите машину. И измените режим основного диска с IDE на virtio. Теперь можете снова загрузить систему, которая должна применить virtio драйвер и выдать сообщение, что драйвер от RedHat.
**Загрузитесь сначала в режиме IDE и выключите машину, добавьте еще один диск в режиме VIRTIO и включите машину, Windows установит нужные драйвера
 
**Выключите машину
 
**Измените режим основного диска с IDE на VIRTIO
 
**Загрузите систему, которая должна применить VIRTIO драйвер и выдать сообщение, что драйвер от RedHat
 
 
*Включите виртуальную машину
 
*Включите виртуальную машину
 
*Первое включение займет какое-то время пока будут загружены необходимые драйвера
 
*Первое включение займет какое-то время пока будут загружены необходимые драйвера
*Драйвера VIRTIO для Windows можно скачать [https://fedoraproject.org/wiki/Windows_Virtio_Drivers здесь]
+
*Не забудьте установить "Paravirtualized Network Drivers" для Windows
  
 
== Контейнеры (CT) ==
 
== Контейнеры (CT) ==
Строка 483: Строка 317:
 
В отличие от виртуальной машины, которая с точки зрения ОС, запущенной на физическом узле, представляет собой один процесс гипервизора, процессы контейнера выполняются на том же самом ядре, что и остальные процессы ОС. То есть, если мы запустим VM и CT на одном и том же физическом узле PVE, процессы CT будут выполняться «рядом» с процессами гипервизора. Разница будет только в применении к процессам контейнеров механизмов изоляции — пространств имён (Namespaces) и групп управления (CGroups) — работающих на уровне ядра Linux.
 
В отличие от виртуальной машины, которая с точки зрения ОС, запущенной на физическом узле, представляет собой один процесс гипервизора, процессы контейнера выполняются на том же самом ядре, что и остальные процессы ОС. То есть, если мы запустим VM и CT на одном и том же физическом узле PVE, процессы CT будут выполняться «рядом» с процессами гипервизора. Разница будет только в применении к процессам контейнеров механизмов изоляции — пространств имён (Namespaces) и групп управления (CGroups) — работающих на уровне ядра Linux.
  
Существует несколько реализаций изолированных контейнеров, базирующихся на этих механизмах. Например [https://openvz.org OpenVZ] и [https://linuxcontainers.org LXC], которые отличаются развитостью и проработанностью механизмов управления. В PVE версий 4+ используется реализация LXC (до 3 версии использовалась OpenVZ), обёрнутая дополнительным собственным пользовательским интерфейсом, делающим процесс создания и обслуживания контейнеров ещё более удобным.
+
Существует несколько реализаций изолированных контейнеров, базирующихся на этих механизмах. Например [https://openvz.org OpenVZ] и [https://linuxcontainers.org LXC], которые отличаются развитостью и проработанностью механизмов управления. В PVE используется реализация LXC, обёрнутая дополнительным собственным пользовательским интерфейсом, делающим процесс создания и обслуживания контейнеров ещё более удобным.
  
Процесс создания контейнера во многом схож с процессом создания виртуальной машины. Разница в том, что создание контейнера соответствует созданию VM и одновременно установке туда операционной системы. Эквивалентом инсталляционному диску является шаблон, из которого разворачивается контейнер. Это архив, содержащий корневую файловую систему будущего контейнера. Примеры шаблонов контейнеров можно найти на [http://download.proxmox.com/images/system/ сайте разработчиков PVE] и в [https://openvz.org/Download/template/precreated коллекции шаблонов OpenVZ].
+
Процесс создания контейнера во многом схож с процессом создания виртуальной машины. Разница в том, что создание контейнера соответствует созданию VM и одновременно установке туда операционной системы. Эквивалентом инсталляционному диску является шаблон, из которого разворачивается контейнер. Это архив, содержащий корневую файловую систему будущего контейнера. Примеры шаблонов контейнеров можно найти на [http://download.proxmox.com/appliances/ сайте разработчиков PVE] и в [https://openvz.org/Download/template/precreated коллекции шаблонов OpenVZ].
  
Важно помнить, что [[Шаблоны для развёртывания CT в PVE|шаблоны, пригодные для развёртывания CT в PVE]], имеют собственную нотацию имён, отличающуюся от таковых, например, в OpenVZ. Поэтому перед загрузкой очередного шаблона в хранилище PVE не забываем переименовать его соответствующим образом.
+
Важно помнить, что шаблоны, пригодные для развёртывания CT в PVE, имеют собственную нотацию имён, отличающуюся от таковых, например, в OpenVZ. Поэтому перед загрузкой очередного шаблона в хранилище PVE не забываем переименовать его соответствующим образом.
  
 
[[Файл:Pve-template-load.png|900px|Загрузка шаблона контейнера]]
 
[[Файл:Pve-template-load.png|900px|Загрузка шаблона контейнера]]
Строка 502: Строка 336:
  
 
[[Файл:Pve-node-console.png|900px|Доступ к консоли через веб-интерфейс]]
 
[[Файл:Pve-node-console.png|900px|Доступ к консоли через веб-интерфейс]]
 
 
=== Где взять готовые контейнеры ===
 
 
# Загрузить при помощи встроенной училиты pveam ("Из коробки" не работает из-за [[altbug:37631]])
 
# Загрузить вручную с [http://download.proxmox.com/images/system/ сайта Proxmox]
 
# Загрузить шаблоны LXC с [https://uk.images.linuxcontainers.org/images/ официального сайта]
 
# Загрузить готовое окружение для решения конкретной задачи (на базе Debian) [http://mirror.turnkeylinux.org/turnkeylinux/images/proxmox/ отсюда]
 
# Создать контейнер самому
 
 
{{Attention|Следует учитывать, что будут работать не все контейнеры, созданные для LXC, т.к. система, на базе которой создан контейнер, должна поддерживаться скриптами PVE }}
 
  
 
== Обслуживание виртуальных окружений ==
 
== Обслуживание виртуальных окружений ==
Строка 555: Строка 378:
  
 
[[Категория:Admin]]
 
[[Категория:Admin]]
[[Категория:Миграция]]
 
[[Категория:Виртуализация]]
 
 
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
 
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}

Обратите внимание, что все добавления и изменения текста статьи рассматриваются, как выпущенные на условиях лицензии CC-BY-SA-3.0.

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Вики-разметка
Заголовки: 1-го: == ==, 2-го: === ===, 3-го: ==== ==== уровня.
Быстрая вставка: «» | [[]] [[|]] {{}} {{|}} [[Категория:]] [[altbug:]] <source lang=""></source> <pre></pre> <!-- -->.
Определения: {{man|}} {{lists|}} {{cmd|}} {{path|}} {{prg|}} {{pkg|}} {{term|}} {{span||}} {{altbug|}}
Выделение: ''italics'', '''bold''', <tt>моноширинный</tt>, <code>код</code>.
Списки: * ненумерованный список, ** вложенный список, # нумерованный список, ## вложенный нумерованный список, *# вложенный смешанный список, ;список :определений.
Verbatim: Пробел в начале строки или <pre>Явный тэг</pre>
Ссылки: [http://www.altlinux.ru/ внешние], [[Main Page|внутренние]], [http://altlinux.ru], [[Main Page]]
Шаблоны: {{Crap}} {{D}} {{Policy}} {{DraftPolicy}} {{Merge|}} {{Улучшение}} {{Тимовец|}}