Ответ
Работал с 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