Ответ
Работал с Proxmox VE 2 года в роли DevOps-инженера: развертывал кластеры, настраивал Ceph-хранилища, автоматизировал через API. Основной use case — приватное облако для разработки и тестирования.
Типичная архитектура кластера:
┌─────────────────────────────────────────────────────┐
│ Proxmox Cluster (3+ nodes) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ │ CPU: 32 │ │ CPU: 32 │ │ CPU: 32 │ │
│ │ RAM: 128 │ │ RAM: 128 │ │ RAM: 128 │ │
│ │ Storage: │ │ Storage: │ │ Storage: │ │
│ │ Ceph OSD │ │ Ceph OSD │ │ Ceph OSD │ │
│ └─────┬────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └────────────┼─────────────┘ │
│ Ceph Network (10G) │
└─────────────────────────────────────────────────────┘
Автоматизация через Proxmox API:
import proxmoxer
import json
# Подключение к кластеру
proxmox = proxmoxer.ProxmoxAPI(
'pve-cluster.example.com',
user='root@pam',
password='{{ vault_proxmox_password }}',
verify_ssl=False
)
# Создание VM из шаблона
def create_vm_from_template(vm_name, template_id=9000):
# Клонирование шаблона
task_id = proxmox.nodes('pve1').qemu(template_id).clone.post(
newid=100,
name=vm_name,
storage='local-lvm',
full=1
)
# Ожидание завершения клонирования
while True:
status = proxmox.nodes('pve1').tasks(task_id).status.get()
if status['status'] == 'stopped':
break
time.sleep(2)
# Настройка параметров VM
proxmox.nodes('pve1').qemu(100).config.post(
cores=2,
memory=4096,
net0='virtio,bridge=vmbr0,tag=100'
)
# Запуск VM
proxmox.nodes('pve1').qemu(100).status.start.post()
return 100
Ключевые задачи:
- Настройка Ceph для распределенного хранилища:
# На каждой ноде pveceph install pveceph init --network 10.0.100.0/24 pveceph createmon pveceph createosd /dev/sdb
Создание pool
ceph osd pool create vm-data 128 pvesm add ceph vm-data --pool vm-data
2. **High Availability для критичных VM:**
```bash
# Включение HA для VM
ha-manager add vm:100 --state started --max_relocate 2 --max_restart 2
# Просмотр статуса
ha-manager status
- Резервное копирование через Proxmox Backup Server:
# Настройка хранилища PBS pvesm add pbs backup-pbs --server backup.example.com --datastore main --username root@pam --password secret
Планирование бэкапов
pvesh set /nodes/pve1/qemu/100 --protection 1 pvesh create /nodes/pve1/qemu/100/snapshot --snapname "pre-update" --description "Before OS update"
4. **Сетевые конфигурации:**
- VLAN tagging на Linux bridges
- SDN (Software Defined Networking) для изоляции tenant'ов
- OVS (Open vSwitch) для сложных сетевых топологий
**Интеграция с инфраструктурой:**
- Terraform provider `telmate/proxmox` для управления как кодом
- Ansible для конфигурации гостевых ОС
- Prometheus + `pve-exporter` для мониторинга
- Alertmanager для уведомлений о проблемах с хранилищем или HA Ответ 18+ 🔞
Слушай, а вот Proxmox — это вообще отдельная религия, я тебе скажу. Два года с ним провозился, как DevOps, и знаешь что? Это пиздопроебебина уровня «я сам себе облако построил». Представь: вместо того чтобы платить дохуя денег за AWS, ты берешь три сервера, ставишь на них Proxmox VE и получаешь своё приватное облако для разработки и тестирования. И оно, блядь, реально работает, а не просто в презентации красиво.
Вот смотри, как обычно выглядит кластер, который я настраивал. Три ноды, не меньше, иначе нихуя не будет HA. На каждой — процессоров по 32 ядра, оперативки по 128 гигов, и самое главное — хранилище Ceph, чтобы всё было распределённое и отказоустойчивое. Отдельная сеть на 10 гигабит под него, иначе производительность будет — хуй с горы.
┌─────────────────────────────────────────────────────┐
│ Proxmox Cluster (3+ nodes) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ │ CPU: 32 │ │ CPU: 32 │ │ CPU: 32 │ │
│ │ RAM: 128 │ │ RAM: 128 │ │ RAM: 128 │ │
│ │ Storage: │ │ Storage: │ │ Storage: │ │
│ │ Ceph OSD │ │ Ceph OSD │ │ Ceph OSD │ │
│ └─────┬────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └────────────┼─────────────┘ │
│ Ceph Network (10G) │
└─────────────────────────────────────────────────────┘
А теперь самое вкусное — автоматизация. Потому что вручную создавать виртуалки — это, ёпта, как в 2002-м году жить. Тут на помощь приходит их API. Смотри, какой простой код на Python:
import proxmoxer
import json
# Подключение к кластеру
proxmox = proxmoxer.ProxmoxAPI(
'pve-cluster.example.com',
user='root@pam',
password='{{ vault_proxmox_password }}',
verify_ssl=False
)
# Создание VM из шаблона
def create_vm_from_template(vm_name, template_id=9000):
# Клонирование шаблона
task_id = proxmox.nodes('pve1').qemu(template_id).clone.post(
newid=100,
name=vm_name,
storage='local-lvm',
full=1
)
# Ожидание завершения клонирования
while True:
status = proxmox.nodes('pve1').tasks(task_id).status.get()
if status['status'] == 'stopped':
break
time.sleep(2)
# Настройка параметров VM
proxmox.nodes('pve1').qemu(100).config.post(
cores=2,
memory=4096,
net0='virtio,bridge=vmbr0,tag=100'
)
# Запуск VM
proxmox.nodes('pve1').qemu(100).status.start.post()
return 100
Написал такую функцию — и потом хоть сто виртуалок в минуту создавай. Красота, да? Но это только цветочки.
Основные задачи, которые приходилось решать, просто волнение ебать:
- Ceph. Без него нихуя. Настраивал распределённое хранилище, чтобы если одна нода накрылась медным тазом, виртуалки с других подхватывались. Команды вроде этих:
# На каждой ноде
pveceph install
pveceph init --network 10.0.100.0/24
pveceph createmon
pveceph createosd /dev/sdb
# Создание pool
ceph osd pool create vm-data 128
pvesm add ceph vm-data --pool vm-data
Главное — диск под OSD выбрать нормальный, а не какой-нибудь древний SAS, который уже бздит. Иначе производительность будет — ядрёна вошь.
- High Availability. Это когда виртуалка критически важная и должна жить вечно. Настроил — и спи спокойно.
# Включение HA для VM
ha-manager add vm:100 --state started --max_relocate 2 --max_restart 2
# Просмотр статуса
ha-manager status
Видишь статус started — и доверия ебать ноль, но хоть так.
- Бэкапы. Без них — пидарас шерстяной. Подключал Proxmox Backup Server, чтобы снапшоты хранились отдельно.
# Настройка хранилища PBS
pvesm add pbs backup-pbs --server backup.example.com
--datastore main --username root@pam --password secret
# Планирование бэкапов
pvesh set /nodes/pve1/qemu/100 --protection 1
pvesh create /nodes/pve1/qemu/100/snapshot
--snapname "pre-update" --description "Before OS update"
Сделал снапшот перед обновлением — и хоть всё к чертям, откатился за минуту.
- Сети. Тут можно разойтись: и обычные VLAN на бриджах, и SDN для изоляции разных команд, и OVS, если уж совсем хитрая жопа и сложная топология нужна.
А ещё интеграция со всей остальной инфраструктурой — это отдельная песня:
- Terraform. Провайдер
telmate/proxmoxпозволяет управлять всем как кодом. Написал конфиг — и кластер как под копирку. - Ansible. Внутрь виртуалок залез, всё настроил.
- Мониторинг. Prometheus с
pve-exporterвыводит все метрики, а Alertmanager орёт, если с Ceph что-то не так. Проснулся ночью от уведомления — и сразу понятно, что пора впендюрить проблему.
В общем, Proxmox — это мощный инструмент, если руки из правильного места. Сначала, конечно, охуеваешь от количества настроек, но потом, когда всё работает, понимаешь — оно того стоит. Можно и облако своё построить, и с публичными провайдерами не связываться. Главное — Ceph не запороть на этапе настройки, а то будет тебе нигерсраки.