Перейти к содержанию

Proxmox

Proxmox VE. Установка

После установки сервера, в течение 15-20 минут выполняется установка сервиса Proxmox VE. На почту, привязанную к учетной записи, приходит оповещение об установленном сервере и ссылка в виде https://ip-адрес:8006, по которой необходимо пройти для доступа в web-интерфейс управления Proxmox VE:

  • Login - root;
  • Password - пароль системы.

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

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

Настройка сетевых интерфейсов

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

Настройки сети на сервере Proxmox VE:

Следует перейти в настройки физического интерфейса enp1s0f1 (сначала нажать на имя сетевого интерфейса, затем на кнопку Edit), скопировать IP-адрес, удалить его и нажать OK:

Добавить Linux Bridge, который будет работать через физический интерфейс enp1s0f1, ниже показаны шаги по добавлению:

Прописать IP-адрес, который ранее был скопирован, указать физический интерфейс (в нашем примере - enp1sf01). Обязательно нужно прописать название порта, иначе потребуется подключение по ILO и настройка конфигурационного файла по SSH. Затем, нажать OK:

В результате настройки сети должны выглядеть следующим образом:

После того, как убедились, что всё настроили корректно, нажать на кнопку Apply Configuration.

Настройка дисковой подсистемы

На серверах с одним диском может размещаться как сама система Proxmox VE, так и виртуальные серверы, ISO образы, шаблоны контейнеров, шаблоны операционных систем и т.д.

Примечание

В нашем примере установлен сервер с двумя дисками, на первом диске установлена система и будут размещены: ISO образы, а также Backup виртуальных серверов. На втором диске настроим размещение виртуальных серверов. Данные настройки показаны в качестве примера - в случае выхода из строя одного из дисков, либо перестанет работать операционная система, либо будут потеряны виртуальные серверы. Например: 2 диска объединить в RAID1 и установить систему, 2 диска объединить в RAID1 и использовать для установки виртуальных серверов (размер дисков зависит от инфраструктуры, которую планируется размещать на этом сервере).

Добавление второго диска

Перейти на сервер по SSH и проверить, что диск имеется и не используется системой, для этого можно использовать команду lsblk. На рисунке ниже видно, что система установлена на диск sda (sda1/sda2), раздел sdb свободен, его размер составляет 223GB:

После того как убедились, что диск есть и он не занят, следует перейти в web-интерфейс Proxmox VE:

Выбрать сервер (в нашем примере - 2667) и перейти в раздел Disks >> LVM:

Кликнуть на кнопку Create: Volume Group:

Откроется окно, в котором система предложит создать раздел на свободном диске, в нашем случае - это sdb:

В этом же окне (в разделе Add Storage) необходимо ввести название раздела. В нашем примере использовано название vms, т.к. планируется размещение виртуальных серверов. Затем нажать Create:

В результате в основном окне должны быть показаны диски:

Как видно, добавлен раздел vms.

После того, как добавлен второй диск и определено, что там будет размещаться, необходимо перенастроить систему таким образом, чтобы все виртуальные серверы размещались автоматически на втором диске. Для этого необходимо с левой стороны щелкнуть на Datacenter и выбрать пункт Storage:

Виртуальные серверы могут храниться на системном диске - sda, а также на новом диске - sdb:

У нас два диска, и мы решили, что на системном диске будут храниться только ISO-образы и Backup, а виртуальные серверы, образы системы, шаблоны, контейнеры будут размещаться на втором диске - sdb. Необходимо сделать настройки, выбрать нужный диск (local/vms) и в верхней части экрана нажать на кнопку Edit.

Выбрать диск local:

Кликнуть на выпадающий список Content, по умолчанию выбраны все пункты, необходимо нажать на них повторно, чтобы отключить их. Следует оставить только пункты ISO image и VZDump backup file и нажать OK для сохранения настроек:

После проделанных настроек должен быть получен следующий результат:

В настройках диска Local выставлен только параметр ISO image и VZDump backup.

Выполнить те же действия с диском vms: Edit >> выбрать два пункта Disk image и Container для размещения виртуальных серверов, нажать OK для сохранения:

Чтобы установить виртуальную машину, необходимо использовать ISO-образ. Его надо как-то загрузить на Proxmox. Сделать это не сложно, но следует помнить, что загрузить образ можно только на тот storage, который поддерживает такую возможность. В нашем примере был выбран параметр на диске Local. В него и загрузим образ виртуальной машины. Для этого следует открыть нужный storage и выбрать вкладку ISO Images, затем нажать кнопку Upload и выбрать нужный образ:

Откроется окно, в котором необходимо указать путь до ISO-образа:

Альтернативный способ загрузки ISO-образа в Proxmox - использовать scp или напрямую качать образ (через wget). Его необходимо положить в директорию /var/lib/vz/template/iso, если используется дефолтный storage, добавленный по умолчанию после установки. Затем следует дождаться окончания загрузки. Теперь этот образ можно использовать для установки ОС на виртуальную машину.

Установка виртуальной машины

Нажать на Datacenter в панели с левой стороны, чтобы перейти в основное окно:

Затем в правом верхнему углу кликнуть на кнопку Create VM:

В разделе General заполнить в VM ID: имя сервера (мы оставили его по умолчанию 100):

В разделе OS выбрать ISO-образ, который был загружен ранее, а также с правой стороны выбрать тип и версию операционной системы:

В разделе System можно выставить нужный SCSI Controller, BIOS (Legacy, UEFI) и другие параметры:

В разделе Disks возможно указать: BUS/Device: (IDE, SCSI, SATA...), Storage: указать размещение диска виртуального сервера на физическом диске сервера, Disk size: размер в GB:

В разделе CPU указать количество ядер:

В разделе Memory указать объем оперативной памяти:

В разделе Network указать интерфейс (Bridge), через который будет работать виртуальный сервер (в нашем примере - это Linux Bridge). С правой стороны в выпадающем списке необходимо выбрать интерфейс (Model) для виртуального сервера. Например, для Windows систем, лучше всего подходит в качестве совместимости - Model - e1000:

После выполнения указанных действий в основном окне должен отобразиться виртуальный сервер (имя 100 задается по умолчанию в первом окне, его можно менять при необходимости):

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

После запуска виртуального сервера необходимо открыть окно консоли - с правой стороны Console, либо также щелкнуть правой кнопкой мыши на сервере и в выпадающем списке в самом низу выбрать Console:

Откроется консольное окно, либо отдельно, либо с правой стороны. В нашем примере мы устанавливаем CentOS 7:

Следует кликнуть на ссылку Install CentOS 7 и начать установку системы. В первом окне выбрать язык и нажать Continue:

В основном окне выставить все необходимые настройки:

В разделе Network & HOST NAME прописать имя сервера и нажать на кнопку Configure:

В открывшемся окне перейти на вкладку IPv4 Settings >> Method: выбрать Manual (IP-адрес будет задан вручную), прописать IP-адрес, указать настройки DNS, обязательно поставить галочку Required IPv4 for this connection и нажать Save.

Затем в открывшемся окне перевести кнопку в статус ON и нажать кнопку Done для сохранения настроек:

После проделанных изменений в основном окне нажать на кнопку Begin Installation:

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

По окончанию установки система сообщит об успешной установке и попросит задать пароль на пользователя root, если он еще не задан. Для завершения конфигурации следует нажать на кнопку Finish configuration:

После система попросит нажать на кнопку Reboot для перезагрузки:

Как только виртуальный сервер перезагрузится, можно заходить на него по SSH, указав IP под пользователем root и паролем, который был указан при установке на предыдущем шаге.

Создание контейнера

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

Затем следует перейти в Datacenter – с правой стороны Storage:

На дисках должен быть параметр Container template:

Если же этого параметра нет, необходимо выбрать нужный диск с Type: Directory и нажать на кнопку Edit. В выпадающем списке Content выбрать Container Template и нажать OK для сохранения:

Затем кликнуть по названию диска, на котором выставлен параметр Container Template (в нашем случае диск local), и с правой стороны выбрать CT Templates, и перейти в окно, где можно загрузить нужный шаблон:

Для загрузки шаблонов следует в окне загрузки шаблонов нажать на кнопку Templates:

В открывшемся окне выбрать версию операционной системы, которая необходима в контейнере. Кликнуть на ее названии и нажать на кнопку Download:

Мы скачали Alpine:

Затем щелкнуть правой кнопкой мыши на имя физического сервера (в нашем случае это 26671) и выбрать Create CT:

В разделе General задать имя контейнера и указать пароль на root для входа в контейнер:

В разделе Template указать скачанный образ (в нашем случае - Alpine):

В разделе Disks в окне Storage указать, на каком физическом диске будет размещаться контейнер, в окне Disk size(GiB): размер диска в GB и с правой стороны помимо rootfs можно добавить разделы, которые могут понадобиться для работы контейнера. Например, /db - для хранения файлов базы данных:

В разделе CPU указать количество ядер:

В разделе Memory размер оперативной памяти:

В разделе Network указать Bridge, прописать IP-адрес, который приобретался для виртуальных серверов, указать параметр Static и нажать на кнопку Next:

В разделе DNS прописать адрес и имя домена, если имеются таковые.

В окне Confirm отображаются все настройки, которые были заданы, для финальной проверки, если всё корректно, нажать на кнопку Finish:

Откроется окно с выполнением задачи, и в случае корректной сборки должен быть получен статус TASK OK:

После проделанных настроек в основном окне, с правой стороны, должен отобразиться контейнер 101:

Следует щелкнуть по нему правой кнопкой мыши и нажать Start. Затем выбрать раздел Console и справа будет отображено консольное окно контейнера:

Следует ввести логин root и пароль, который был задан при настройке и перейти в контейнер.

Затем необходимо проверить созданные разделы дисков и настройки сети:

Как видно, IP-адрес и точки монтирования указаны корректно. Проверить корректность работы сети можно пропинговав адрес 8.8.8.8:

На этом первоначальная настройка сервера Proxmox закончена.

Тестирование работы кластера Proxmox. Настройка Ceph

Примечание

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

Предварительные настройки и подключение к серверу

Перед началом процедуры репликации необходимо провести ряд настроек и подключиться к первому серверу:

Шаг 1. В панели управления перейти в раздел Cluster и нажать кнопку Create Cluster:

Шаг 2. Ввести название кластера и сеть (или список подсетей) для стабильной работы кластера. После чего нажать на кнопку Create:

Шаг 3. В разделе Cluster перейти во вкладку Join information и скопировать информацию из окна Join information, данная информация нужна для подключения второго сервера к кластеру:

Шаг 4. На втором сервере в разделе Cluster перейти во вкладку Join Cluster:

И ввести информацию для подключения, скопированную на предыдущем шаге:

Задаем пароль (root) и IP-адрес сервера для подключения, после чего нажимаем на кнопку Join-имя кластера:

Шаг 5. Дождаться подключения к кластеру:

Создание ZFS-раздела для настройки репликации виртуального сервера

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

В основном окне управления серверами необходимо выбрать физический сервер и создать раздел ZFS:

В открывшемся окне необходимо ввести имя раздела в строке Name. Меню Create:ZFS разделено на несколько функциональных блоков: с правой стороны можно настроить RAID, а ниже выбрать диски для объединения в RAID-группу.

Важно обратить внимание на сообщение: Note: ZFS is not compatible with disks backed by a hardware RAID controller. Согласно рекомендации (на экран будет выведена ссылка на документацию) диски для ZFS должны быть презентованы в систему в обход аппаратного RAID-контроллера. После выполнения настроек необходимо завершить добавление диска - нажать кнопку Create:

В результате настроена дисковая подсистема на физических серверах:

После выполнения перечисленных настроек можно приступать к установке виртуального сервера. Для этого можно использовать эту инструкцию.

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

В основном окне управления серверами необходимо выбрать виртуальный сервер, который необходимо поставить на репликацию, в нашем случае он находится на физическом сервере prox1, имя виртуального сервера 100 (CentOS 7).

Шаг 1. Перейти в раздел Replication и нажать на кнопку Add:

Шаг 2. В открывшемся окне необходимо указать физический сервер, на который будет проводиться репликация, а также репликации:

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

Работа репликации

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

Информация по дискам:

  • data_zfs - на каждом сервере создан раздел zfs для настройки репликации виртуальных серверов;
  • local - установленная система;
  • pbs - Proxmox Backup Server;
  • rbd - Ceph-распределенная файловая система.

Информация по настройке сети:

  • Public network - предназначена для управления серверами Proxmox, также необходима для работы виртуальных серверов;
  • Cluster Network - служит для синхронизации данных между серверами, а также миграции виртуальных серверов в случае выхода из строя физического сервера (сетевой интерфейс должен быть не менее 10G).

Пример настройки в тестовой среде:

После сборки кластера из трех серверов можно настроить репликацию на 2 сервера. Таким образом, в миграции будет участвовать три физических сервера. В нашем случае репликация настроена на серверы prox2, prox3:

Для включения режима HA (высокая доступность, миграция виртуального сервера) на виртуальных серверах, необходимо щелкнуть на Datacenter, с правой стороны выбрать пункт HA и в нём нажать на кнопку Add:

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

Пример успешного добавления:

Также можем проверить, что режим HA включен на самом виртуальном сервере, для этого необходимо кликнуть на нужный виртуальный сервер (в нашем случае - CentOS7) и с правой стороны выбрать раздел Summary.

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

Проверка работы HA в случае выхода из строя сервера

После корректной настройки репликации виртуального сервера мы можем протестировать работу кластера. В нашем случае мы отключили все сетевые порты на физическом сервере prox1. Спустя некоторое время (в нашем случае - 4 минуты) происходит переключение виртуального сервера CentOS 7, и к нему можно получить доступ по сети.

Пример проверки результата переключения и доступности сервера:

В результате этого этапа был настроен кластер из трех серверов, внутренних дисков с ZFS и параметром HA на виртуальном сервере.

Переключение виртуального сервера с одного физического сервера на другой

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

После нажатия на кнопку Migrate откроется окно, в котором можно выбрать сервер, на который мы планируем мигрировать наш виртуальный сервер, выбираем сервер и нажимаем Migrate:

Статус миграции можно отследить в окне Task:

После успешного завершения миграции в окне Task будет выведено сообщение TASK OK:

Также мы увидим, что наш виртуальный сервер был перенесен на сервер prox3:

Тестирование работы Ceph

Внимание

Ceph мы настраивали в качестве тестов и не использовали его в продуктовой среде.

В интернете очень просто найти много материалов по установке Ceph на Proxmox, поэтому мы коротко опишем только шаги установки. Для установки Ceph необходимо выбрать один из физических серверов, выбрать раздел Ceph и нажать на кнопку Install Ceph:

Версия Ceph указана по умолчанию. Необходимо нажать кнопку Start nautilus installation, после установки система попросит указать настройки сети. В нашем случае настройка проводилась с первого сервера и в качестве примера указаны его IP-адреса:

Нажимаем кнопки Next и Finish для завершения установки. Конфигурация выполняется только на первом сервере, и на два других сервера она будет перенесена системой автоматически.

Затем необходимо настроить:

  • Monitor - роль координатора, обмен информации между серверами, желательно создавать нечетное количество, чтобы избежать ситуации (split-brain). Мониторы работают в кворуме: если упадет больше половины мониторов, кластер будет заблокирован для предотвращения рассогласованности данных;
  • OSD - юнит хранилища (как правило - диск), который хранит данные и обрабатывает запросы клиентов, обмениваясь данными с другими OSD. Обычно за каждый OSD отвечает отдельный OSD-демон, который может запускаться на любой машине, на которой установлен этот диск;
  • Pool - пул, объединяющий OSD. Будет использоваться для хранения виртуальных дисков серверов.

Затем необходимо выполнить добавление серверов с ролью Monitor и Manager. Для этого необходимо кликнуть на название физического сервера, перейти в раздел Monitor, пункт Create, и выбрать серверы, объединенные в кластер. И добавить их поочередно:

Аналогичные действия необходимо провести с серверов с ролью Manager. Для корректной работы кластера необходимо более одного сервера с этой ролью.

Добавление дисков OSD происходит аналогично:

Согласно рекомендации (на экран будет выведена ссылка на документацию) диски должны быть презентованы в систему в обход аппаратного RAID-контроллера. Использование аппаратного RAID-контроллера может негативно повлиять на стабильность и производительность реализации Ceph.

Пример настроенного Ceph (на всех трёх серверах диск /dev/sdc):

Последний шаг настройки Ceph - создание пула, который в дальнейшем будет указываться при создании виртуальных серверов. Для этого необходимо кликнуть на название физического сервера, перейти в раздел Pools и выполнить следующие настройки:

Описание значений использованных параметров:

  • Если Size=3 и Min.Size=2, то все будет хорошо, пока работают две из трех OSD плейсмент-групп. Если останется один OSD, кластер заморозит операции данной группы, пока не "оживет" хотя бы еще один OSD.
  • Если Size=Min.Size, то плейсмент-группа будет блокироваться при падении любого OSD, входящего в ее состав. Из-за высокого уровня "размазанности" данных большинство падений хотя бы одного OSD будет заканчиваться заморозкой всего или почти всего кластера. Поэтому параметр Size всегда должен быть хотя бы на один пункт больше параметра Min_Size.
  • Если Size=1, кластер будет работать, но поломка любой OSD будет означать безвозвратную потерю данных. Ceph позволяет выставить значение этого параметра, равное единице, но даже если администратор делает это с определенной целью и на короткое время, он берет на себя ответственность за возможные неполадки.
  • Pool (rbd), который мы создали выше, используется при создании виртуальной машины. В разделе Disks на нем будут располагаться диски наших виртуальных серверов:

Тестирование сервера Proxmox Backup

Предварительные настройки

Примечание

Установка сервера Proxmox Backup Server проводилась с ISO файла скачанного с официального сайта. Установка интуитивно понятна и выполняется в несколько кликов, поэтому мы не описывали шаги.

Для работы с Proxmox Backup Server после его установки, необходимо открыть в браузере ссылку https://IP-адрес который был указан в момент установки:8007/.

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

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

Для хранения информации необходимо добавить диски. Переходим на сервер по SSH и вводим команду lsblk. В нашем случае неразмеченный диск sdb. Его мы и будем использовать для хранения резервных копий:

Снова возвращаемся в web-интерфейс сервера и переходим в раздел Storage / Disks >> ZFS:

В открывшемся окне необходимо:

  1. Ввести наименование хранилища;
  2. Если дисков несколько - выбрать RAID;
  3. Выбрать диски для хранения;
  4. Нажать OK для применения настроек.

Результат выполнения:

Создание пользователей

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

Шаг 1. Перейти в меню Access Control и нажать кнопку Add:

Шаг 2. Ввести имя пользователя и пароль (дважды), затем нажать кнопку Add:

Затем необходимо создать Namespace - пространство для хранения информации. Для этого необходимо перейти в раздел Data:

Затем нажать кнопку Add NS с правой стороны:

И создать пространство для каждого пользователя, которых создавали ранее:

Результат создания:

Назначение прав доступа

Шаг 1. Для назначения прав доступа необходимо перейти в раздел Data:

Шаг 2. Перейти в подраздел Permissions и нажать на кнопку Add. В открывшемся окне указываем пользователя и Namespace:

Шаг 3. Выбрать роль из выпадающего списка:

Пример настройки доступов для пользователя user1 и user2 :

Добавления сервера Proxmox Backup на Proxmox серверах осуществляется согласно созданных прав доступа:

Заполняем все поля, ниже показан пример:

Fingerprint копируем на сервере Proxmox Backup – Dashboard:

После нажатия на кнопку Add, в основном окне управления Proxmox серверами появится созданный раздел:

Если перейти в Storage >> BackupSRV_user2, с правой стороны мы увидим, что нет резервных копий серверов, который были сделаны под другими пользователями:

Пример для User2:

Пример того, что было сделано ранее для пользователя User1:

Просмотр и управления бэкапами можно осуществить в разделе Backup, здесь возможно добавить сервер на backup и просмотреть статусы выполнения:

После нажатия на кнопку Add, в открывшемся окне можно выбрать серверы, которые необходимо поставить на Backup, время выполнения резервного копирования, режим резервного копирования, указать Storage, на котором будут располагаться резервные копии:

Во вкладке Retention можно указать количество хранимых копий:

Восстановление сервера из бекапа

Для того, чтобы восстановить сервер необходимо перейти на диск Proxmox Backup Server, который был подключен ранее. Выбрать виртуальный сервер, который следует восстановить и нажать на кнопку Restore:

При восстановлении сервера необходимо указать Storage - раздел, в который возможно восстановить, и Name - имя восстанавливаемого сервера, а также параметры сервера:

Существует возможность восстановления отдельных файлов, необходимо также выбрать сервер и нажать на кнопку File Restore, ниже показан пример структуры файловой системы и файлов: