LXC или Linux Containers. Как я уже писал ранее, под Proxmox VE можно запускать как полноценные виртуальные машины используя при этом гипервизор KVM, а также запускать контейнеры Linux. Тк. все ноды и шлюзы для Голоса работают под управлением Debian, то и запускать будем именно LXC.
Для запуска во-первых необходимо подключить диск, на котором этот контейнер будет работать. Под Proxmox VE это делается следущим образом.
Переходим в раздел диски и смотрим что есть в наличии на сервере. В данном случае имеем диск /dev/sda - это наш загрузочный диск. На нем находится хост-система и будут располагаться шаблоны (Templates), тех "линуксов", которые нам потребуются в дальнейшем. Хотя, я импользую только шаблон для Debian, но вы можете использовать ваш любимый дистрибутив.
Также на сервере есть NVMe SSD размером 128Гб, на котором будет тестовая нода Голоса. Рабочая у меня на данный момент занимает порядка чуть более 60Гб. Вот на этот диск и будем ставить первый контейнер.
выделяем этот диск и нажимает кнопку Initialize Disk with GPT
Если вдруг вы получите ошибку при инициализации о невозможности ее выполнения, то в консоли наберите команду
/sbin/sgdisk --zap-all /dev/nvme0n1
где /dev/nvme0n1 - ваше уcтройство SSD
Если все удачно, то диск становится готовый для использования
Теперь нужно создать на нем рабочий раздел. Для этого переходим в меню Directory и нажимаем кнопку Create: Directory
Получаем вот такое диалоговое окно
где Disk - устройство, которое размечаем, Filesystem - файловая система на нем (я использую ext4, и Name - имя, под которым этот раздел будет виден в системе. Я обычно использую вид диска - ssd, nvme или hdd и его размер. Галочка Add Storage должна быть выбрана! Затем нажимаем кнопку Create Если все прошло удачно получаем вот такую картинку
Теперь нужен шаблон для контейнера.
Выбираем директорию local, меню CT Templates и нажимаем кнопку Templates
Получаем вот такой спискок готовых шаблонов для загрузки на хост-систему
Выбираем тот дистрибутив, который нужен (я предпочитаю Debian, последний стабильный релиз которого, на данный момент - Bookworm) и нажимем кнопку Download
Все готово, шаблон "на базе".
Переходим к созданию контейнера.
В правом верхнем углу нажимаем кнопку Create CT
Получаем вот такое диалоговое окно. На первой вкладке которого заполняем следущие поля
Node - pve3 - это текущая хост-система
CT ID - идентификатор шаблона. Тут я хочу сделать одно замечание. Если у вас одна хост-система, допустим pve1, то номера начинаются с цифры 100. Если несколько, то соответвтвенно с 200, если это вторая pve2, с 300 - если третья pve3 и тд. Зачем и почему так? Все дело в том, что если у вас будет сервер бэкапов от Proxmox и вы начнете сохранять эти образы контейнеров, то там 100% возникнет нет, не путаница, а просто все 100-е контерйнеры будут перезаписаны друг на друга с разных нод (хост-систем). Либо если вы объедините ваши хост-системы в кластер, то также. Поэтому вот идентификаторы в рамках кластера или бэкапов должны быть различны!
Password и Confirm password - это пароль root (и подтверждение его) для этого контейнера.
На следущей вкладке выбираем шаблон, который будем использовать для этого контерйнера
На третьей закладке я выбираю тот диск на который я буду ставить контейнер и устанавливаю его размер. В этом примере это будет нода для Golos. Я выбираю 100Gb под контейнер и 28Gb оставляю "свободными" для контроллера SSD. Больше на этом диске ничего не будет. Нода, в нужной мне конфигурации, на данный момент занимает порядка чуть больше чем 60Gb.
Следущая закладка - CPU. Тут выбираем сколько CPU будет задействовать наш контейнер. Тк. нода Golos не умеет в многопоток, то 2 CPU (в данном случае рассматриваются не физические процессоры, а "потоки", и тк. физический процессор на этой хост системе имеет 6 ядер и 12 потоков, то я под Golos выделяю 2. 1 для непосредственно самой ноды и 1, чтобы при 100% загрузке первого, второй был рабочим и я без тормозов и лагов спокойно коннектился на нее по локальной сети)
На следущей закладке выбираем сколько памяти отдаем этому контейнеру
Я выделяю 16Gb оперативной памяти и 2Gb под swap.
Вот тут я опять хочу сделать небольшое отступление. Мы можем под контейнеры или виртуальные машины выделить как потоков, так и оперативки гораздо больше чем есть на самом деле. Но при этом получим глюкодром в том случае, если все они, или какая-то часть захотят использовать все выделенные ресурсы разом. Поэтому я никогда на своих собственных серверах не превышаю количество выделенных ресурсов над количеством физически доступных. И если какой-либо контейнер решит поработать "на все деньги", то остальные не почуствуют никакого дискомфорта. В ДЦ "иногда" имеет место перепродажа ресурсов сверх фактически имеющихся, "в надежде" что никто не будет "шалить".
На следущей закладке прописываются сетевые настройки для контейнера. Я покажу свои, у вас они, как правило будут собственные. Поэтому настраивайте сетевой интерфейс согласно вашим данным
Слудущая закладка DNS. Опять же здесь прописывате те значения, которые нужны вам
Ну и наконец на последней закладке вам показываются все значения, которые вы вводили на предыдущих экранах. В случае каких либо ошибок можно по кнопке Back откатиться назад и внести изменения. А если все правильно, то жмем Finish
Все готово. Контейнер создан. Запустить его можно по кнопке Start
Далее можно зайти на него через меню Console, либо по сети со своей рабочей машины через ssh и произвести "тонкую настройку" и установить ноду Golos или, например, ноду Prizm.