Создание кластера Proxmox VE

Пошаговое объединение нескольких узлов Proxmox VE в кластер: подготовка сети, создание кластера, присоединение узлов, проверка quorum и базовая диагностика.

Кластер Proxmox VE объединяет несколько узлов в единое пространство управления. После объединения виртуальные машины, контейнеры, хранилища и права доступа отображаются в одном Datacenter.

В этой инструкции рассматривается только создание нового кластера и присоединение к нему дополнительных узлов.

Подходит для: Proxmox VE 8 и 9
Уровень сложности: высокий
Время выполнения: около 30–60 минут
Требуемый доступ: root-доступ ко всем узлам и отдельная сеть для кластерного трафика

Важное предупреждение

Присоединение узла к кластеру изменяет его локальную конфигурацию /etc/pve.

Узел, который добавляется в кластер, должен быть подготовлен заранее.

Перед началом:

  • создайте резервные копии VM и LXC;
  • сохраните конфигурацию /etc/pve;
  • убедитесь, что VM ID не пересекаются;
  • проверьте одинаковые имена storage;
  • настройте стабильные статические IP;
  • проверьте DNS и /etc/hosts;
  • обеспечьте доступ к консоли каждого узла.

Не добавляйте в кластер узел с важными локальными гостевыми системами без плана их сохранения и восстановления.

Что будет настроено

После выполнения инструкции:

  • будет подготовлена сеть узлов;
  • будет создан новый Proxmox-кластер;
  • дополнительные узлы будут присоединены;
  • будет проверен Corosync;
  • будет проверен quorum;
  • будут проверены узлы в веб-интерфейсе;
  • будут разобраны типичные ошибки присоединения.

Сколько узлов нужно

Для устойчивого quorum рекомендуется нечётное число голосов.

Практичный минимальный вариант:

3 узла

Кластер из двух узлов технически возможен, но при потере связи между ними возникает проблема quorum.

Для двухузловой схемы обычно добавляют внешний QDevice.

Настройка QDevice является отдельной темой.

Что даёт кластер

Кластер Proxmox VE предоставляет:

  • единый веб-интерфейс;
  • общую конфигурацию Datacenter;
  • миграцию VM и LXC;
  • общие ACL;
  • общие backup jobs;
  • централизованное управление storage;
  • основу для High Availability.

Само создание кластера не делает VM отказоустойчивыми автоматически.

Что кластер не заменяет

Кластер не заменяет:

  • резервное копирование;
  • shared storage;
  • High Availability;
  • мониторинг;
  • независимое питание;
  • резервную сеть;
  • корректный quorum.

Пример схемы

В статье используется пример:

pve01 — 192.0.2.11
pve02 — 192.0.2.12
pve03 — 192.0.2.13

Кластерное имя:

pve-cluster

Сеть Corosync:

192.0.2.0/24

Используйте параметры своей инфраструктуры.

Требования к именам узлов

Каждый узел должен иметь уникальное короткое имя:

pve01
pve02
pve03

Проверьте:

hostname
hostname -f
hostnamectl

Имя узла не следует менять после создания кластера без отдельной процедуры.

Проверка /etc/hostname

На первом узле:

cat /etc/hostname

Ожидается:

pve01

На втором:

pve02

На третьем:

pve03

Проверка /etc/hosts

На каждом узле добавьте все узлы кластера.

Пример:

127.0.0.1 localhost

192.0.2.11 pve01.example.com pve01
192.0.2.12 pve02.example.com pve02
192.0.2.13 pve03.example.com pve03

Не назначайте основное имя узла только на:

127.0.1.1

Проверка разрешения имён

На каждом узле:

getent hosts pve01
getent hosts pve02
getent hosts pve03

Проверьте FQDN:

getent hosts pve01.example.com

Все имена должны разрешаться в правильные статические IP.

Проверка связи

С каждого узла проверьте остальные:

ping -c 3 pve01
ping -c 3 pve02
ping -c 3 pve03

Проверьте маршруты:

ip route

Проверьте интерфейсы:

ip -br addr

Требования к задержке

Corosync чувствителен к:

  • высокой задержке;
  • потере пакетов;
  • нестабильному каналу;
  • перегруженной сети;
  • асимметричной маршрутизации.

Для cluster network используйте стабильную локальную сеть.

Не объединяйте узлы через обычный интернет без специально спроектированного защищённого канала.

Проверка MTU

На каждом узле:

ip link show

MTU на всём пути Corosync должен быть согласован.

Проверка пакетом без фрагментации:

ping -M do -s 1472 -c 3 192.0.2.12

Для MTU 1500 размер 1472 обычно проверяет полный IP-пакет без фрагментации.

Проверка времени

На каждом узле:

timedatectl

Проверьте:

System clock synchronized: yes

Сравните время:

date

Большое расхождение времени вызывает проблемы с журналами, сертификатами и аутентификацией.

Проверка версий Proxmox VE

На каждом узле:

pveversion -v

Узлы рекомендуется привести к одинаковой основной версии и близкому уровню обновлений.

Не объединяйте без проверки узлы с существенно различающимися версиями.

Обновление перед созданием кластера

На каждом узле:

apt update
apt full-upgrade

При установке нового ядра выполните перезагрузку и повторно проверьте:

uname -r
pveversion -v

Проверка VM ID

На каждом узле:

qm list
pct list

VM ID и CT ID должны быть уникальными в будущем кластере.

Пример конфликта:

pve01: VM 100
pve02: VM 100

После присоединения такой конфликт недопустим.

Проверка локальных гостевых систем

Присоединяемый узел желательно подготовить без VM и LXC.

Если на нём уже есть гости:

  1. Создайте backup.
  2. Скопируйте backup на внешнее storage.
  3. Удалите или перенесите гостей.
  4. Присоедините узел.
  5. Восстановите гостей с уникальными ID.

Проверка storage ID

На каждом узле:

cat /etc/pve/storage.cfg

До объединения локальные конфигурации могут различаться.

После присоединения узел получает кластерную конфигурацию storage.

Одинаковый Storage ID должен означать сопоставимое назначение.

Резервное копирование конфигурации

На каждом узле:

mkdir -p /root/pre-cluster-backup
cp -a /etc/pve   /root/pre-cluster-backup/etc-pve-$(date +%F-%H%M%S)

Сохраните сеть:

cp -a /etc/network/interfaces   /root/pre-cluster-backup/interfaces-$(date +%F-%H%M%S)

Сохраните hosts:

cp -a /etc/hosts   /root/pre-cluster-backup/hosts-$(date +%F-%H%M%S)

Скопируйте резервные данные за пределы узла.

Создание кластера через веб-интерфейс

На первом узле откройте:

Datacenter → Cluster

Нажмите:

Create Cluster

Укажите:

Cluster Name: pve-cluster

Выберите адрес cluster network.

Нажмите:

Create

Создание кластера через CLI

На первом узле:

pvecm create pve-cluster

Если требуется указать конкретный адрес link0:

pvecm create pve-cluster   --link0 192.0.2.11

Проверьте доступные параметры:

pvecm create --help

Проверка первого узла

pvecm status

Покажите узлы:

pvecm nodes

На этом этапе в кластере будет один узел.

Проверьте Corosync:

systemctl status corosync --no-pager

Проверьте cluster filesystem:

systemctl status pve-cluster --no-pager

Получение Join Information

В веб-интерфейсе первого узла:

Datacenter → Cluster → Join Information

Скопируйте:

  • IP узла;
  • fingerprint;
  • join information.

Не публикуйте join information в открытом виде.

Присоединение второго узла через веб-интерфейс

На втором узле откройте:

Datacenter → Cluster

Нажмите:

Join Cluster

Вставьте Join Information.

Укажите пароль:

root@pam

первого узла.

Выберите cluster network.

Подтвердите присоединение.

Присоединение через CLI

На втором узле:

pvecm add 192.0.2.11

Команда запросит пароль root первого узла и подтверждение fingerprint.

При необходимости укажите link0:

pvecm add 192.0.2.11   --link0 192.0.2.12

Что происходит при присоединении

Во время join:

  • узел получает cluster configuration;
  • локальный /etc/pve объединяется с кластерной файловой системой;
  • сертификаты обновляются;
  • веб-интерфейс может временно разорвать соединение;
  • локальная storage-конфигурация заменяется кластерной.

После join обновите страницу и войдите через любой узел.

Проверка после добавления второго узла

На любом узле:

pvecm status
pvecm nodes

Ожидаются два узла.

Проверьте:

Quorate: Yes

Добавление третьего узла

На третьем узле:

pvecm add 192.0.2.11

После присоединения:

pvecm nodes

Проверьте три узла.

Проверка quorum

pvecm status

Основные поля:

Nodes
Expected votes
Total votes
Quorum
Quorate

Для трёх узлов нормальная схема:

Expected votes: 3
Quorum: 2

Кластер сохраняет quorum при потере одного узла.

Проверка Corosync

corosync-cfgtool -s

Статистика quorum:

corosync-quorumtool -s

Проверка узлов:

corosync-quorumtool -l

Проверка cluster filesystem

mount |
grep /etc/pve

Ожидается файловая система:

fuse.pve-cluster

Проверьте:

ls -la /etc/pve/nodes/

Должны отображаться каталоги всех узлов.

Проверка веб-интерфейса

Откройте любой узел:

https://NODE_IP:8006

В дереве Datacenter должны отображаться:

pve01
pve02
pve03

Проверка сертификатов

После join Proxmox VE обновляет cluster certificates.

Проверьте службы:

systemctl status pveproxy --no-pager

При необходимости:

pvecm updatecerts
systemctl restart pveproxy

Не выполняйте обновление сертификатов без причины на работающем кластере.

Проверка storage после join

pvesm status

Проверьте:

  • какие storage active на каждом узле;
  • правильно ли указаны Nodes;
  • существуют ли локальные storage;
  • доступен ли shared storage.

Storage с одинаковым ID может быть ограничен списком узлов.

Ограничение storage по узлам

В веб-интерфейсе:

Datacenter → Storage → STORAGE_ID → Edit

Поле:

Nodes

позволяет указать, на каких узлах доступно хранилище.

Через конфигурацию storage это отображается параметром nodes.

Проверка миграции

До production-миграции создайте тестовую VM.

Проверьте:

  • одинаковые bridge;
  • одинаковые VLAN;
  • целевой storage;
  • CPU type;
  • cluster network.

Миграция VM является отдельной темой.

Кластерная сеть и management-сеть

Для небольшой лаборатории Corosync может использовать management-сеть.

Для production лучше выделить отдельную сеть.

Преимущества отдельной сети:

  • меньше влияние backup и migration;
  • ниже вероятность packet loss;
  • стабильнее quorum;
  • проще диагностика.

Corosync поддерживает несколько сетевых link.

Второй link может обеспечить резервирование кластерной связи.

Для него требуется:

  • отдельный интерфейс или VLAN;
  • отдельная подсеть;
  • независимый сетевой путь;
  • одинаковая конфигурация на всех узлах.

Настройка redundant links является отдельной темой.

Двухузловой кластер

При двух узлах quorum требует особого внимания.

Если связь между ними пропадает, кластер не может безопасно определить, какая сторона должна продолжить запись конфигурации.

Не используйте небезопасные постоянные обходы quorum.

Для устойчивой схемы добавьте:

  • третий узел;
  • либо QDevice.

Проверка HA

Создание кластера не включает HA автоматически.

Проверить:

ha-manager status

Для HA дополнительно нужны:

  • quorum;
  • shared storage или replication;
  • HA groups;
  • HA resources;
  • watchdog;
  • корректная сеть.

Типичные проблемы

pvecm add сообщает, что узел уже содержит гостей

Присоединяемый узел должен быть очищен от конфликтующей конфигурации.

Создайте backup гостей, удалите их с узла, выполните join и восстановите после объединения.

Hostname не разрешается

Проверьте:

hostname -f
getent hosts "$(hostname -f)"
cat /etc/hosts

Исправьте DNS или /etc/hosts до join.

Ошибка fingerprint

Сравните fingerprint, показанный первым узлом.

Не подтверждайте неизвестный fingerprint.

Узел добавился, но отображается offline

Проверьте:

pvecm status
systemctl status corosync --no-pager

Проверьте сеть и firewall.

Нет quorum

Проверьте:

corosync-quorumtool -s

Проверьте доступность узлов:

ping NODE_CLUSTER_IP

Проверьте Corosync journal:

journalctl -u corosync   -n 200   --no-pager

Corosync видит packet loss

Проверьте:

  • интерфейсы;
  • MTU;
  • ошибки NIC;
  • коммутатор;
  • перегрузку сети;
  • bonding;
  • VLAN;
  • дуплекс и скорость.

Команды:

ip -s link
ethtool INTERFACE

После join пропала локальная storage-конфигурация

Это ожидаемо: /etc/pve/storage.cfg является кластерным.

Добавьте storage заново на уровне Datacenter и ограничьте его нужным узлом.

Конфликт VM ID

Измените ID до присоединения либо восстановите backup с новым ID после join.

Веб-интерфейс показывает ошибку сертификата после join

Проверьте hostname и время.

При необходимости:

pvecm updatecerts
systemctl restart pveproxy

Удаление узла из кластера

Удаление узла требует отдельной безопасной процедуры.

Общий принцип:

  1. Перенести или выключить все VM и LXC.
  2. Удалить HA resources.
  3. Проверить quorum.
  4. Выключить удаляемый узел.
  5. Удалить его с оставшегося узла.
  6. Очистить остаточную конфигурацию.

Не выполняйте случайное pvecm delnode без подготовки.

Резервное копирование cluster configuration

Регулярно сохраняйте:

/etc/pve
/etc/network/interfaces
/etc/hosts
/etc/corosync/corosync.conf

Проверьте:

cp -a /etc/pve   /root/cluster-config-backup-$(date +%F-%H%M%S)

Храните копию вне кластера.

Безопасный порядок создания

  1. Подготовить минимум три узла.
  2. Настроить статические IP.
  3. Проверить hostname и /etc/hosts.
  4. Проверить время.
  5. Обновить все узлы.
  6. Проверить уникальность VM ID.
  7. Создать backup.
  8. Создать кластер на первом узле.
  9. Проверить Corosync.
  10. Добавить второй узел.
  11. Проверить quorum.
  12. Добавить третий узел.
  13. Проверить storage и сеть.
  14. Выполнить тестовую миграцию.

Быстрый набор команд

Создать кластер:

pvecm create pve-cluster

Добавить узел:

pvecm add FIRST_NODE_IP

Проверить состояние:

pvecm status

Показать узлы:

pvecm nodes

Проверить Corosync:

corosync-cfgtool -s
corosync-quorumtool -s

Итог

После выполнения инструкции:

  • подготовлены hostname, DNS и сеть;
  • создан новый Proxmox-кластер;
  • добавлены дополнительные узлы;
  • проверены Corosync и quorum;
  • проверена кластерная файловая система;
  • проверены storage и веб-интерфейс;
  • разобраны особенности двухузлового кластера.

Кластер следует считать готовым только после проверки quorum, хранилищ, сетевых bridge и тестовой миграции виртуальной машины.

← Предыдущая статья Настройка почтовых уведомлений в Proxmox VE Следующая статья → Настройка репликации виртуальной машины в Proxmox VE