proxmox bulk start что это

Настройка кластера Proxmox VE

В данной инструкции мы сначала соберем кластер Proxmox для управления всеми хостами виртуализации из единой консоли, а затем — кластер высокой доступности (HA или отказоустойчивый). В нашем примере мы будем работать с 3 серверами — pve1, pve2 и pve3.

Мы не станем уделять внимание процессу установки Proxmox VE, а также настройки сети и других функций данного гипервизора — все это можно прочитать в пошаговой инструкции Установка и настройка Proxmox VE.

Подготовка нод кластера

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

* в данном примере у нас в hosts занесены наши два сервера Proxmox, из которых мы будем собирать кластер.

Настройка кластера

Построение кластерной системы выполняется в 2 этапа — сначала мы создаем кластер на любой из нод, затем присоединяем к данному кластеру остальные узлы.

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

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Для создания кластера нам нужно задать его имя и, желательно, выбрать IP-адрес интерфейса, на котором узел кластера будет работать:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

. кликаем Создать — процесс не должен занять много времени. В итоге, мы должны увидеть «TASK OK»:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Присоединение ноды к кластеру

На первой ноде, где создали кластер, в том же окне станет активна кнопка Данные присоединения — кликаем по ней:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

В открывшемся окне копируем данные присоединения:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

В поле «Данные» вставляем данные присоединения, которые мы скопировали с первой ноды — поля «Адрес сервера» и «Отпечаток заполняться автоматически». Заполняем пароль пользователя root первой ноды и кликаем Присоединение:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Присоединение также не должно занять много времени. Ждем несколько минут для завершения репликации всех настроек. Кластер готов к работе — при подключении к любой из нод мы будем подключаться к кластеру:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

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

Посмотреть статус работы кластера можно командой в SSH:

Отказоустойчивый кластер

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

Для настройки отказоустойчивости (High Availability или HA) нам нужно:

1. Подготовка кластера

Процесс добавления 3-о узла аналогичен процессу, описанному выше — на одной из нод, уже работающей в кластере, мы копируем данные присоединения; в панели управления третьего сервера переходим к настройке кластера и присоединяем узел.

2. Добавление хранилища

Подробное описание процесса настройки самого хранилища выходит за рамки данной инструкции. В данном примере мы разберем пример и использованием СХД, подключенное по iSCSI.

Если наша СХД настроена на проверку инициаторов, на каждой ноде смотрим командой:

. IQN инициаторов. Пример ответа:

* где iqn.1993-08.org.debian:01:4640b8a1c6f — IQN, который нужно добавить в настройках СХД.

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

В открывшемся окне указываем настройки для подключения к хранилке:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

* где ID — произвольный идентификатор для удобства; Portal — адрес, по которому iSCSI отдает диски; Target — идентификатор таргета, по которому СХД отдает нужный нам LUN.

Нажимаем добавить, немного ждем — на всех хостах кластера должно появиться хранилище с указанным идентификатором. Чтобы использовать его для хранения виртуальных машин, еще раз добавляем хранилище, только выбираем LVM:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Задаем настройки для тома LVM:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

* где было настроено:

Нажимаем Добавить — мы должны увидеть новое устройство для хранения виртуальных машин.

Для продолжения настройки отказоустойчивого кластера создаем виртуальную машину на общем хранилище.

3. Настройка отказоустойчивости

Создание группы

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Вносим настройки для группы и выбираем галочками участников группы:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Также мы можем задать приоритеты для серверов, если отдаем каким-то из них предпочтение.

Нажимаем OK — группа должна появиться в общем списке.

Настраиваем отказоустойчивость для виртуальной машины

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

В открывшемся окне выбираем виртуальную машину и группу:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

. и нажимаем Добавить.

4. Проверка отказоустойчивости

После выполнения всех действий, необходимо проверить, что наша отказоустойчивость работает. Для чистоты эксперимента, можно выключиться сервер, на котором создана виртуальная машина, добавленная в HA.

Важно учесть, что перезагрузка ноды не приведет к перемещению виртуальной машины. В данном случае кластер отправляет сигнал, что он скоро будет доступен, а ресурсы, добавленные в HA останутся на своих местах.

Для выключения ноды можно ввести команду:

Ручное перемещение виртуальной машины

Представим ситуацию, что у нас произошел сбой одного из узлов кластера, но при этом виртуальная машина не переехала на рабочую ноду. Например, если сервер был отправлен в перезагрузку, но не смог корректно загрузиться. В консоли управления нет возможности мигрировать виртуалку с неработающего сервера. Поэтому нам понадобиться командная строка.

И так, открываем SSH-консоль сервера, на любой работающем сервере Proxmox. Переходим в каталог qemu-server той ноды, которая не работает:

* мы предполагаем, что у нас вышел из строя сервер pve1.

Смотрим содержимое каталога:

Мы должны увидеть конфигурационные файлы запущенных виртуальных машин, например:

* в нашем примере у нас запущена только одна виртуальная машина с идентификатором 100.

* где pve2 — имя второй ноды, на которой мы запустим виртуальный сервер.

. проверяем, что виртуальная машина появилась в системе. В противном случае, перезапускаем службы:

systemctl restart pvestatd

systemctl restart pvedaemon

systemctl restart pve-cluster

Сбрасываем состояние для HA:

* в данном примере мы сбросили состояние для виртуальной машины с идентификатором 100. Если это не сделать, то при запуске виртуалки ничего не будет происходить.

После виртуальную машину можно запустить:

Репликация виртуальных машин

Если у нас нет общего дискового хранилища, мы можем настроить репликацию виртуальных машин между нодами. В таком случае мы получим, относительно, отказоустойчивую среду — в случае сбоя, у нас будет второй сервер, на котором есть аналогичный набор виртуальных машин.

Настройка ZFS

Репликация может выполняться только на тома ZFS. Подробная работа с данной файловой системой выходит за рамки данной инструкции, однако, мы разберем основные команды, с помощью которых можно создать необходимы том.

Пул ZFS необходимо создавать из командной строки, например:

* в данном примере мы создадим пул с названием zpool1 из диска /dev/sdc.

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Задаем настройки для создания хранилища из созданного ранее пула ZFS:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

* в данном примере мы создаем хранилище из пула zpool1; название для хранилище задаем zfs-pool, также ставим галочку Дисковое резервирование. Остальные настройки оставляем по умолчанию.

После этого мы должны либо перенести виртуальную машину на хранилище ZFS, либо создать в нем новую машину.

Настройка репликации

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Задаем настройки для репликации виртуальной машины:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

* в данном примере мы указываем системе проверять и реплицировать изменения каждые 15 минут для виртуальной машины с идентификатором 100. Репликация должна проводиться на сервер pve2.

Нажимаем Создать — теперь ждем репликации по расписанию или форсируем событие, кликнув по Запустить сейчас:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

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

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

Мы увидим, примерно, следующее:

Membership information
———————-
Nodeid Votes Name
1 1 pve1 (local)
2 1 pve2
3 1 pve3

* где pve1, pve2, pve3 — узлы кластера; local указываем на ноду, с которой мы выполняем команду pvecm.

Для удаления узла, например, pve2 вводим:

pvecm delnode pve2

Ждем немного времени, пока не пройдет репликация. В консоли управления Proxmox удаленный сервер должен пропасть

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

Рассмотрим процесс удаления нод из кластера и самого кластера. Данные действия не могут быть выполнены из веб-консоли — все операции делаем в командной строке.

Подключаемся по SSH к одной из нод кластера. Смотрим все узлы, которые присоединены к нему:

Мы получим список нод — удалим все, кроме локальной, например:

pvecm delnode pve2

pvecm delnode pve3

* в данном примере мы удалили ноды pve2 и pve3.

Необходимо подождать, минут 5, чтобы прошла репликация между нодами. После останавливаем следующие службы:

systemctl stop pvestatd pvedaemon pve-cluster corosync

Подключаемся к базе sqlite для кластера PVE:

Удаляем из таблицы tree все записи, поле name в которых равно corosync.conf:

> DELETE FROM tree WHERE name = ‘corosync.conf’;

Отключаемся от базы:

Удаляем файл блокировки:

Удаляем файлы, имеющие отношение к настройке кластера:

Запускаем ранее погашенные службы:

systemctl start pvestatd pvedaemon pve-cluster corosync

Источник

Bulk migrate via command line

churnd

Active Member

Sometimes I want to bulk migrate my VMs from the command line rather than using the web interface. To do this, I just run a for loop like so:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

t.lamprecht

Proxmox Staff Member

No, should be OK like it is, on PVE4.X atleast.

Can you please post the output from:

Best regards,
Thomas

churnd

Active Member

No, should be OK like it is, on PVE4.X atleast.

Can you please post the output from:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

t.lamprecht

Proxmox Staff Member

The difference between a HA managed machine and a «normal» one is here that when we make an Action (shutdown, start, migrate) to an HA Resource (e.g. through `qm` or `pct`) the original task only redirects it to the HA Manager which executes the action in a background worker.

So your script waits for each migration to finish before it starts the next when it’s a non-HA managed machine but if it’s ha-manage it changes the status from all machines given to migrate and they get all migrated at once, or at least 4 because we limit the possible active HA workers to 4.

I tried to reproduce your problem but failed yet, I’ll retry with more VMs.

Can you look in the log (journalctl) to see what happens in the background task? The error message determines that this task failed.

Best regards,
Thomas

churnd

Active Member

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

t.lamprecht

Proxmox Staff Member

Thanks for the followup!

I could vaguely reproduce this a few days ago and I’m on it.

The current state would be that when an migration fails, we place it in the started/stopped state (depending if it’s enabled or not) on the original node.

Here it comes to an race condition where the API says the migration failed but shortly after that it succeeded non the less.
Thus the ha manager places it in the started state on origin node whereas it already runs on the target node => node mismatch.

Can you please open a bug report on https://bugzilla.proxmox.com/ for the ha-manager whit the summed up infos or at least a link to this thread?
Makes it easier to track the issue

A bug regarding failure of concurrent live migrations in our qemu-server package was also already fixed and is in the pvetest repo, this should also fix some issues related to this one.

Best regards,
Thomas

Источник

Работа с кластером Proxmox: установка, настройка сети, ZFS, решение распространенных проблем

За последние несколько лет я очень тесно работаю с кластерами Proxmox: многим клиентам требуется своя собственная инфраструктура, где они могут развивать свой проект. Именно поэтому я могу рассказать про самые распространенные ошибки и проблемы, с которыми также можете столкнуться и вы. Помимо этого мы конечно же настроим кластер из трех нод с нуля.
proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это

Proxmox кластер может состоять из двух и более серверов. Максимальное количество нод в кластере равняется 32 штукам. Наш собственный кластер будет состоять из трех нод на мультикасте (в статье я также опишу, как поднять кластер на уникасте — это важно, если вы базируете свою кластерную инфраструктуру на Hetzner или OVH, например). Коротко говоря, мультикаст позволяет осуществлять передачу данных одновременно на несколько нод. При мультикасте мы можем не задумываться о количестве нод в кластере (ориентируясь на ограничения выше).

Сам кластер строится на внутренней сети (важно, чтобы IP адреса были в одной подсети), у тех же Hetzner и OVH есть возможность объединять в кластер ноды в разных датацентрах с помощью технологии Virtual Switch (Hetzner) и vRack (OVH) — о Virtual Switch мы также поговорим в статье. Если ваш хостинг-провайдер не имеет похожие технологии в работе, то вы можете использовать OVS (Open Virtual Switch), которая нативно поддерживается Proxmox, или использовать VPN. Однако, я рекомендую в данном случае использовать именно юникаст с небольшим количеством нод — часто возникают ситуации, где кластер просто “разваливается” на основе такой сетевой инфраструктуры и его приходится восстанавливать. Поэтому я стараюсь использовать именно OVH и Hetzner в работе — подобных инцидентов наблюдал в меньшем количестве, но в первую очередь изучайте хостинг-провайдера, у которого будете размещаться: есть ли у него альтернативная технология, какие решения он предлагает, поддерживает ли мультикаст и так далее.

Установка Proxmox

Proxmox может быть установлен двумя способами: ISO-инсталлятор и установка через shell. Мы выбираем второй способ, поэтому установите Debian на сервер.

Перейдем непосредственно к установке Proxmox на каждый сервер. Установка предельно простая и описана в официальной документации здесь.

Добавим репозиторий Proxmox и ключ этого репозитория:

Обновляем репозитории и саму систему:

После успешного обновления установим необходимые пакеты Proxmox:

Заметка: во время установки будет настраиваться Postfix и grub — одна из них может завершиться с ошибкой. Возможно, это будет вызвано тем, что хостнейм не резолвится по имени. Отредактируйте hosts записи и выполните apt-get update

С этого момента мы можем авторизоваться в веб-интерфейс Proxmox по адресу https:// :8006 (столкнетесь с недоверенным сертификатом во время подключения).

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 1. Веб-интерфейс ноды Proxmox

Установка Nginx и Let’s Encrypt сертификата

Мне не очень нравится ситуация с сертификатом и IP адресом, поэтому я предлагаю установить Nginx и настроить Let’s Encrypt сертификат. Установку Nginx описывать не буду, оставлю лишь важные файлы для работы Let’s encrypt сертификата:

Команда для выпуска SSL сертификата:

Не забываем после установки SSL сертификата поставить его на автообновление через cron:

Отлично! Теперь мы можем обращаться к нашему домену по HTTPS.

Заметка: чтобы отключить информационное окно о подписке, выполните данную команду:

Перед подключением в кластер настроим сетевые интерфейсы на гипервизоре. Стоит отметить, что настройка остальных нод ничем не отличается, кроме IP адресов и названия серверов, поэтому дублировать их настройку я не буду.

Создадим сетевой мост для внутренней сети, чтобы наши виртуальные машины (в моем варианте будет LXC контейнер для удобства) во-первых, были подключены к внутренней сети гипервизора и могли взаимодействовать друг с другом. Во-вторых, чуть позже мы добавим мост для внешней сети, чтобы виртуальные машины имели свой внешний IP адрес. Соответственно, контейнеры будут на данный момент за NAT’ом у нас.

Работать с сетевой конфигурацией Proxmox можно двумя способами: через веб-интерфейс или через конфигурационный файл /etc/network/interfaces. В первом варианте вам потребуется перезагрузка сервера (или можно просто переименовать файл interfaces.new в interfaces и сделать перезапуск networking сервиса через systemd). Если вы только начинаете настройку и еще нет виртуальных машин или LXC контейнеров, то желательно перезапускать гипервизор после изменений.

Теперь создадим сетевой мост под названием vmbr1 во вкладке network в веб-панели Proxmox.

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 2. Сетевые интерфейсы ноды proxmox1

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 3. Создание сетевого моста

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 4. Настройка сетевой конфигурации vmbr1

Настройка предельно простая — vmbr1 нам нужен для того, чтобы инстансы получали доступ в Интернет.

Теперь перезапускаем наш гипервизор и проверяем, создался ли интерфейс:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 5. Сетевой интерфейс vmbr1 в выводе команды ip a

Заметьте: у меня уже есть интерфейс ens19 — это интерфейс с внутренней сетью, на основе ее будет создан кластер.

Повторите данные этапы на остальных двух гипервизорах, после чего приступите к следующему шагу — подготовке кластера.

Также важный этап сейчас заключается во включении форвардинга пакетов — без нее инстансы не будут получать доступ к внешней сети. Открываем файл sysctl.conf и изменяем значение параметра net.ipv4.ip_forward на 1, после чего вводим следующую команду:

В выводе вы должны увидеть директиву net.ipv4.ip_forward (если не меняли ее до этого)

Настройка Proxmox кластера

Теперь перейдем непосредственно к кластеру. Каждая нода должна резолвить себя и другие ноды по внутренней сети, для этого требуется изменить значения в hosts записях следующих образом (на каждой ноде должна быть запись о других):

Также требуется добавить публичные ключи каждой ноды к остальным — это требуется для создания кластера.

Создадим кластер через веб-панель:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 6. Создание кластера через веб-интерфейс

После создания кластера нам необходимо получить информацию о нем. Переходим в ту же вкладку кластера и нажимаем кнопку “Join Information”:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 7. Информация о созданном кластере

Данная информация пригодится нам во время присоединения второй и третьей ноды в кластер. Подключаемся к второй ноде и во вкладке Cluster нажимаем кнопку “Join Cluster”:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 8. Подключение к кластеру ноды

Разберем подробнее параметры для подключения:

Вторая нода успешно подключена! Однако, такое бывает не всегда. Если вы неправильно выполните шаги или возникнут сетевые проблемы, то присоединение в кластер будет провалено, а сам кластер будет “развален”. Лучшее решение — это отсоединить ноду от кластера, удалить на ней всю информацию о самом кластере, после чего сделать перезапуск сервера и проверить предыдущие шаги. Как же безопасно отключить ноду из кластера? Для начала удалим ее из кластера на первом сервере:

После чего нода будет отсоединена от кластера. Теперь переходим на сломанную ноду и отключаем на ней следующие сервисы:

Proxmox кластер хранит информацию о себе в sqlite базе, ее также необходимо очистить:

Данные о коросинке успешно удалены. Удалим оставшиеся файлы, для этого необходимо запустить кластерную файловую систему в standalone режиме:

Перезапускаем сервер (это необязательно, но перестрахуемся: все сервисы по итогу должны быть запущены и работать корректно. Чтобы ничего не упустить делаем перезапуск). После включения мы получим пустую ноду без какой-либо информации о предыдущем кластере и можем начать подключение вновь.

Установка и настройка ZFS

ZFS — это файловая система, которая может использоваться совместно с Proxmox. С помощью нее можно позволить себе репликацию данных на другой гипервизор, миграцию виртуальной машины/LXC контейнера, доступ к LXC контейнеру с хост-системы и так далее. Установка ее достаточно простая, приступим к разбору. На моих серверах доступно три SSD диска, которые мы объединим в RAID массив.

Обновляем список пакетов:

Устанавливаем требуемые зависимости:

Устанавливаем сам ZFS:

Если вы в будущем получите ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first, то выполните следующую команду:

Теперь приступим непосредственно к настройке. Для начала нам требуется отформатировать SSD и настроить их через parted:

Аналогичные действия необходимо произвести и для других дисков. После того, как все диски подготовлены, приступаем к следующему шагу:

Мы выбираем ashift=12 из соображений производительности — это рекомендация самого zfsonlinux, подробнее про это можно почитать в их вики: github.com/zfsonlinux/zfs/wiki/faq#performance-considerations

Применим некоторые настройки для ZFS:

Теперь нам надо рассчитать некоторые переменные для вычисления zfs_arc_max, я это делаю следующим образом:

В данный момент пул успешно создан, также мы создали сабпул data. Проверить состояние вашего пула можно командой zpool status. Данное действие необходимо провести на всех гипервизорах, после чего приступить к следующему шагу.

Теперь добавим ZFS в Proxmox. Переходим в настройки датацентра (именно его, а не отдельной ноды) в раздел «Storage», кликаем на кнопку «Add» и выбираем опцию «ZFS», после чего мы увидим следующие параметры:

ID: Название стораджа. Я дал ему название local-zfs
ZFS Pool: Мы создали rpool/data, его и добавляем сюда.
Nodes: указываем все доступные ноды

Данная команда создает новый пул с выбранными нами дисками. На каждом гипервизоре должен появится новый storage под названием local-zfs, после чего вы сможете смигрировать свои виртуальные машины с локального storage на ZFS.

Репликация инстансов на соседний гипервизор

В кластере Proxmox есть возможность репликации данных с одного гипервизора на другой: данный вариант позволяет осуществлять переключение инстанса с одного сервера на другой. Данные будут актуальны на момент последней синхронизации — ее время можно выставить при создании репликации (стандартно ставится 15 минут). Существует два способа миграции инстанса на другую ноду Proxmox: ручной и автоматический. Давайте рассмотрим в первую очередь ручной вариант, а в конце я предоставлю вам Python скрипт, который позволит создавать виртуальную машину на доступном гипервизоре при недоступности одного из гипервизоров.

Для создания репликации необходимо перейти в веб-панель Proxmox и создать виртуальную машину или LXC контейнер. В предыдущих пунктах мы с вами настроили vmbr1 мост с NAT, что позволит нам выходить во внешнюю сеть. Я создам LXC контейнер с MySQL, Nginx и PHP-FPM с тестовым сайтом, чтобы проверить работу репликации. Ниже будет пошаговая инструкция.

Загружаем подходящий темплейт (переходим в storage —> Content —> Templates), пример на скриншоте:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 10. Local storage с шаблонами и образами ВМ

Нажимаем кнопку “Templates” и загружаем необходимый нам шаблон LXC контейнера:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 11. Выбор и загрузка шаблона

Теперь мы можем использовать его при создании новых LXC контейнеров. Выбираем первый гипервизор и нажимаем кнопку “Create CT” в правом верхнем углу: мы увидим панель создания нового инстанса. Этапы установки достаточно просты и я приведу лишь конфигурационный файл данного LXC контейнера:

Кликаем на LXC контейнер и переходим во вкладку “Replication”, где создаем параметр репликации с помощью кнопки “Add”:

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 12. Создание репликации в интерфейсе Proxmox

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 13. Окно создания Replication job

Я создал задачу реплицировать контейнер на вторую ноду, как видно на следующем скриншоте репликация прошла успешно — обращайте внимание на поле “Status”, она оповещает о статусе репликации, также стоит обращать внимание на поле “Duration”, чтобы знать, сколько длится репликация данных.

proxmox bulk start что это. Смотреть фото proxmox bulk start что это. Смотреть картинку proxmox bulk start что это. Картинка про proxmox bulk start что это. Фото proxmox bulk start что это
Изображение 14. Список синхронизаций ВМ

Теперь попробуем смигрировать машину на вторую ноду с помощью кнопки “Migrate”

Начнется миграция контейнера, лог можно просмотреть в списке задач — там будет наша миграция. После этого контейнер будет перемещен на вторую ноду.

Ошибка “Host Key Verification Failed”

Иногда при настройке кластера может возникать подобная проблема — она мешает мигрировать машины и создавать репликацию, что нивелирует преимущества кластерных решений. Для исправления этой ошибки удалите файл known_hosts и подключитесь по SSH к конфликтной ноде:

Примите Hostkey и попробуйте ввести эту команду, она должна подключить вас к серверу:

Особенности сетевых настроек на Hetzner

Переходим в панель Robot и нажимаем на кнопку “Virtual Switches”. На следующей странице вы увидите панель создания и управления интерфейсов Virtual Switch: для начала его необходимо создать, а после “подключить” выделенные сервера к нему. В поиске добавляем необходимые сервера для подключения — их не не нужно перезагружать, только придется подождать до 10-15 минут, когда подключение к Virtual Switch будет активно.

После добавления серверов в Virtual Switch через веб-панель подключаемся к серверам и открываем конфигурационные файлы сетевых интерфейсов, где создаем новый сетевой интерфейс:

Давайте разберем подробнее, что это такое. По своей сути — это VLAN, который подключается к единственному физическому интерфейсу под названием enp4s0 (он у вас может отличаться), с указанием номера VLAN — это номер Virtual Switch’a, который вы создавали в веб-панели Hetzner Robot. Адрес можете указать любой, главное, чтобы он был локальный.

Отмечу, что конфигурировать enp4s0 следует как обычно, по сути он должен содержать внешний IP адрес, который был выдан вашему физическому серверу. Повторите данные шаги на других гипервизорах, после чего перезагрузите на них networking сервис, сделайте пинг до соседней ноды по IP адресу Virtual Switch. Если пинг прошел успешно, то вы успешно установили соединение между серверами по Virtual Switch.

Я также приложу конфигурационный файл sysctl.conf, он понадобится, если у вас будут проблемы с форвардингом пакетом и прочими сетевыми параметрами:

Добавление IPv4 подсети в Hetzner

Перед началом работ вам необходимо заказать подсеть в Hetzner, сделать это можно через панель Robot.

Создадим сетевой мост с адресом, который будет из этой подсети. Пример конфигурации:

Теперь переходим в настройки виртуальной машины в Proxmox и создаем новый сетевой интерфейс, который будет прикреплен к мосту vmbr2. Я использую LXC контейнер, его конфигурацию можно изменять сразу же в Proxmox. Итоговая конфигурация для Debian:

Обратите внимание: я указал 26 маску, а не 29 — это требуется для того, чтобы сеть на виртуальной машине работала.

Добавление IPv4 адреса в Hetzner

Ситуация с одиночным IP адресом отличается — обычно Hetzner дает нам дополнительный адрес из подсети сервера. Это означает, что вместо vmbr2 нам требуется использоваться vmbr0, но на данный момент его у нас нет. Суть в том, что vmbr0 должен содержать IP адрес железного сервера (то есть использовать тот адрес, который использовал физический сетевой интерфейс enp2s0). Адрес необходимо переместить на vmbr0, для этого подойдет следующая конфигурация (советую заказать KVM, чтобы в случае чего возобновить работу сети):

Перезапустите сервер, если это возможно (если нет, перезапустите сервис networking), после чего проверьте сетевые интерфейсы через ip a:

Как здесь видно, enp2s0 подключен к vmbr0 и не имеет IP адрес, так как он был переназначен на vmbr0.

Теперь в настройках виртуальной машины добавляем сетевой интерфейс, который будет подключен к vmbr0. В качестве gateway укажите адрес, прикрепленный к vmbr0.

В завершении

Надеюсь, что данная статья пригодится вам, когда вы будете настраивать Proxmox кластер в Hetzner. Если позволит время, то я расширю статью и добавлю инструкцию для OVH — там тоже не все очевидно, как кажется на первый взгляд. Материал получился достаточно объемным, если найдете ошибки, то, пожалуйста, напишите в комментарии, я их исправлю. Всем спасибо за уделенное внимание.

Автор: Илья Андреев, под редакцией Алексея Жадан и команды «Лайв Линукс»

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *