Всем привет!!!
В этой заметке я расскажу как сделать Proxmox кластер из двух node и как это все будет работать. Делаю заметку для себя, но может быть пригодится и вам.
Оглавление
Введение
Кластер Proxmox (Proxmox Cluster) представляет собой гнездо виртуализации, состоящее из нескольких узлов Proxmox VE, объединенных в единую систему управления. Кластер Proxmox позволяет администраторам управлять несколькими физическими серверами как одним целым, обеспечивая высокую доступность и отказоустойчивость виртуализированной инфраструктуры.
Преимущества кластера Proxmox включают:
- Высокая доступность: В случае отказа одного из узлов, виртуальные машины автоматически мигрируют на другие работоспособные узлы, обеспечивая непрерывную работу системы.
- Балансировка нагрузки: Ресурсы кластера могут быть равномерно распределены между узлами для оптимальной производительности и эффективного использования ресурсов.
- Управление централизованно: Администраторы могут управлять всеми узлами кластера через единый интерфейс управления Proxmox VE.
- Масштабируемость: При необходимости можно легко добавлять новые узлы кластера для расширения вычислительных мощностей.
Кластер Proxmox обеспечивает гибкость, отказоустойчивость и простоту управления виртуализированной средой, что делает его популярным выбором для построения инфраструктуры виртуализации.
Лучше всего использовать кластер Proxmox из трех нод как это рекомендуют разработчики, но это дорогостоящее удовольствие. Поэтому разработчики придумали так называемый QDevice, который я в этом материале не буду рассматривать.
QDevice в контексте системы управления виртуализацией Proxmox VE (Proxmox Virtual Environment) представляет собой виртуальное устройство, которое используется для мониторинга и анализа качества услуг в среде виртуализации. QDevice в Proxmox VE позволяет отслеживать производительность виртуальных машин, измерять параметры сети и реагировать на возможные проблемы в работе виртуальной инфраструктуры. Это помогает администраторам сети эффективно управлять ресурсами и обеспечивать высокую доступность и производительность виртуализированных окружений.
Если у вас есть еще сервер, на котором можно запустить Debian и QDevice, то это будет лучше чем кластер из двух нод, так как в этом случаи будет работать механизм высокой доступности и многие вопросы отпадут сами собой. У меня такой возможности нет или я не хочу так делать. Мне нужно только две ноды в кластере Proxmox и все.
Кластер из двух нод может использоваться для повышения ручной отказоустойчивости и обеспечения некоторой резервной способности, но он не обеспечивает так называемого кворума, который необходим для автоматического принятия решений в случае отказа одной из нод. В кластере из двух нод возможно использовать методы репликации данных или настройки пассивного резервирования, чтобы обеспечить частичную защиту от отказов. По-простому говоря не работает высокая доступность HA и переключение виртуальных машин с ноды на ноду возможно только в ручном режиме.
Создание кластера
Для создания кластера необходимо, что бы выполнялось несколько условий:
- Название пулов ZFS должны быть одинаковые. Например, rpool для системного диска или dpool для второго пула на отдельных дисках.
- На присоединяемой ноде не должно быть создано виртуальных машин, потом их можно будет создавать.
- Операция выполняется от пользователя root
Начинать нужно с пока еще главной нодой, на которой созданы виртуальные машины. Далее узлы в кластере станут равнозначными.
Переходим в центр обработки данных, кластер и нажимаем создать кластер.
В открывшемся окне придумываем имя кластера и выбираем линки, через которые кластеры будут общаться между собой. В моем случаи только один такой линк.
Кластер создан на первой ноде.
Далее нужно нажать на кнопку данные присоединения и скопировать данные специальной кнопкой
Далее идем на вторую ноду, дата центр, кластер и жмем присоединиться к кластеру
Затем в открывшемся окне вставляйте данные присоединения к кластеру и он сам выведет нужный IP адрес. Вам будет достаточно ввести пароль от пользователя root первой ноды, указать IP адрес вашей ноды и присоединиться к кластеру
После этого начнется присоединение одной ноды к кластеру. Вам нужно подождать и через пару минут обновить страницу, так как она перестанет обновляться
После обновления страницы видно что оба узла находятся в одном кластере и на какой бы узел вы не зашли бы они будут отображаться и управляться с этого окна.
По факту Proxmox кластер из двух нод создан и работает, но что он нам дает.
Миграция VM
Самое первое преимущество, которое дает такой кластер из двух нод это возможность миграции. Щелкайте правой кнопкой по виртуальной машине и выбираем миграция.
Так же напоминаю, что должны быть созданы пулы ZFS с одинаковыми именами или должны быть общие ресурсы хранения ISCSI или NFS.
Обязательно должны быть установлены гостевые дополнения в виртуальной машине
В открывшемся окне система предупредит, какие диски и на какую ноду будет переносить.
Если наблюдать за статусом миграции, то можно увидеть как передаются все диски и оперативная память, если VM работала в это время, на другую ноду. Нужно только ждать. В это время виртуальная машина будет работать и даже не заметит процесса миграции.
Объем передаваемых данных зависит от реального их количества, а не от выделенного виртуальной машине. Например, ОЗУ, если выделено 8ГБ, а виртуальная машина использует только 3,5ГБ, то передаваться будет именно 3,5ГБ а не все 8ГБ.
Если диски виртуальной машины будут лежать в общем хранилище ISCSI или NFS, то миграция будет моментальной, нужно будет передать только ОЗУ на другую ноду.
В результате виртуальная машина мигрирует на другую ноду и даже не перезагрузится, все процессы продолжат работу.
Репликация VM
Второе преимущество Proxmox кластера из двух нод это возможность делать репликации виртуальных машин на другую ноду. Это похоже на резервную копию виртуальной машины, но так же позволяет запустить виртуальную машину на другой ноду, если эта нода по каким-то причинам перестанет работать.
Если диски виртуальной машины лежат на общем хранилище ISCSI или NFS, то репликация не нужна и работать не будет.
Репликация VM это копирование дисков виртуальной машины на другую ноду в реальном времени. Для этого перейдите на нужную виртуальную машину в раздел репликация и добавьте ее. Можно выбрать как часто делать репликацию, тут уже все на ваше усмотрение. Варианты от 15 минут до раз в неделю. От частоты выполнения репликации занимаемое место на двух нодах больше не станет, просто система будет делать это чаще.
Первая репликация будут долгой, так как будут скопированы все данные, а вторая и последующие репликации будут быстрыми, так как будут копироваться только изменения между текущим состоянием и прошлой репликацией.
После создания репликации она начнет ее первое выполнение, но какое-то время статус будет в ожидании.
Статус репликации можно смотреть в журнале.
Когда первая репликация будет закончена можно делать миграцию виртуальной машины пока ноды обе в работе. Такая миграция будет очень быстрой, так как система не будет копировать все данные, а только те изменения которые произошли с момента последней репликации. В общем очень быстро.
Причем, настройки репликации автоматически перестроятся на новые правила самостоятельно после миграции. Допустим до миграции репликация делалась с PVE2 на PVE1, то после миграции репликация будет выполняться с PVE1 на PVE2.
Неисправна одна Node
Еще одним преимуществом кластера является возможность восстанавливать работу виртуальной машины с поврежденной ноды на рабочую. В случаи с тремя нодами это можно делать автоматически, а так как у нас ноды всего две, то придется делать это вручную.
Допустим у нас сломалась втора нода PVE32 с виртуальной машиной, которую нужно восстановить. Тут нужно отметить, что у вас заблаговременно должна была быть настроена репликация.
Первое, что нужно знать, кворум с одной нодой не работает. Именно по этому их нужно три. По простому говоря кластер с одной нодой просто так не даст ничего изменить да же пользователю root.
Поэтому можно временно задать кворуму значение 1, что бы он перешел в рабочее состояние
pvecm expected 1
И кворум перейдет в состояние ОК
Теперь можно переместить виртуальную машину из сбойного PVE32 в исправный PVE31.
Напоминаю, что у вас должна быть сделана хотя бы одна репликация. Данные между репликацией и текущим состояние виртуальной машины естественно будут потеряны. Поэтому репликацию стоит делать по чаще.
Лучшим вариантом будет держать диски виртуальной машины на общем ресурсе СХД ISCSI или NFS
mv /etc/pve/nodes/pve32/qemu-server/100.conf /etc/pve/nodes/pve31/qemu-server/
Останется только запустить виртуальную машину и заняться починкой неисправной ноды. Когда неисправная нода запустится можно опять мигрировать на нее виртуальную машину или оставить ее на текущей ноде.
Основная Node
Для дома на постоянной основе мне нужна только одна нода кластера Proxmox, вторую я подключаю время от времени. Поэтому мне важно, что бы даже с одной нодой все работало как положено.
Для того что бы ноды в кластере функционировали без ошибок им нужен кворум, который достигается минимум двумя голосами. По умолчанию у каждой ноды по одному голосу.
Это означает, что при выходе из строя любой ноды, вторая превращается в неисправную автоматически, так как кворум не достижим с одним голосом. Когда это происходит вы не можете создавать, удалять виртуальные машины. Может быть что-то еще нельзя. В общем будут выходить ошибки с отказом.
Для решения этой проблемы можно выделить одну ноду как основную и дать ей 2 голоса вместо одного. Для этого нужно отредактировать один файл:
nano /etc/pve/corosync.conf
В этом файле нужно изменить два параметра:
- quorum votes – это количество голосов у ноды. У нужной ноды поменяйте значение с 1 на 2
- сonfig version – поменяйте это значение на один пункт больше. Это нужно, что бы данные изменения за синхронизировались между всеми двумя нодами или если у вас их больше то между всеми
И сразу после этого вы увидите результат своей работы
Теперь вторую ноду PVE32 можно выключать, если это необходимо, и ее выключение никак не отразится на работу другой ноды PVE31.
Теперь вы знаете как сделать Proxmox кластер из двух node, как это все работает, для чего нужно и какие есть особенности. Знаете что-то еще? Пишите в коментариях.