Proxmox Datacenter Manager ile Çoklu Küme Yönetimi ve Merkezi İzleme

Proxmox ortamınız büyüdükçe, tek bir cluster yönetmekten çıkıp birden fazla lokasyondaki kümeleri idare etmek zorunda kalıyorsunuz. İşte tam bu noktada Proxmox Datacenter Manager (PDM) devreye giriyor. Proxmox’un 2024 sonunda duyurduğu bu araç, birden fazla Proxmox VE cluster’ını tek bir arayüzden yönetmenizi ve izlemenizi sağlıyor. Bugün bu aracı gerçek dünya senaryolarıyla birlikte masaya yatıracağız.

Proxmox Datacenter Manager Nedir ve Neden İhtiyaç Duyulur?

Klasik Proxmox kurulumlarında her cluster kendi web arayüzüne sahiptir. İki, üç, hatta beş farklı konumdaki Proxmox cluster’ı yönetiyorsanız, her birinin arayüzüne ayrı ayrı girip kontrol etmek hem zaman kaybı hem de hata riski demektir. Bir problem olduğunda “hangi cluster’taydı bu VM acaba?” sorusunu sormak zorunda kalırsınız.

PDM, bu sorunu merkezi bir kontrol noktası oluşturarak çözüyor. Temel olarak şu yetenekleri sunuyor:

  • Çoklu cluster görünümü: Tüm Proxmox VE cluster’larınızı tek dashboard’dan izleme
  • Merkezi kaynak yönetimi: VM ve container’ları farklı cluster’lar arasında görebilme
  • Birleşik kullanıcı yönetimi: Realm ve kullanıcıları merkezi olarak yönetme
  • Toplu izleme: CPU, RAM, storage kullanımını aggregate edilmiş şekilde görme
  • Task yönetimi: Tüm cluster’lardaki görevleri tek yerden takip etme

PDM, ayrı bir Debian tabanlı sanal makine veya fiziksel sunucu üzerine kurulur. Proxmox cluster’larınızın kendisinde değil, harici bir sistemde çalışır. Bu mimari karar aslında çok akıllıca: PDM’in kendisi down olsa bile cluster’larınız çalışmaya devam eder.

PDM Kurulumu

PDM’i kurmak için temiz bir Debian 12 (Bookworm) sistemine ihtiyacınız var. Proxmox’un kendi repository’sinden kuracağız.

# Önce Proxmox repository anahtarını ekliyoruz
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

# PDM repository'sini ekliyoruz
echo "deb https://enterprise.proxmox.com/debian/pdm bookworm pdm-no-subscription" > /etc/apt/sources.list.d/pdm.list

# Sistem güncellemesi ve PDM kurulumu
apt update && apt install -y proxmox-datacenter-manager

# Servis durumunu kontrol ediyoruz
systemctl status proxmox-datacenter-manager

Kurulum tamamlandıktan sonra PDM web arayüzüne https://pdm-sunucu-ip:8443 adresinden erişebilirsiniz. İlk girişte root kullanıcısı ve sistem şifrenizle giriş yaparsınız.

PDM İçin Önerilen Sistem Gereksinimleri

Küçük ortamlar için PDM’in kendisi çok fazla kaynak tüketmiyor ancak yönettiğiniz cluster sayısı arttıkça bunları göz önünde bulundurun:

  • CPU: Minimum 2 core, 5-10 cluster için 4 core önerilir
  • RAM: Minimum 2 GB, production için 4-8 GB
  • Disk: 32 GB yeterli, log retention’a göre artırın
  • : Tüm cluster node’larına erişim gerekli, tercihen yönetim VLAN’ı üzerinden

Cluster’ları PDM’e Bağlama

PDM kurulumu sonrasında ilk yapmanız gereken şey Proxmox cluster’larınızı eklemek. Bu işlem için her cluster’dan bir API token almanız gerekiyor.

Proxmox Cluster’ında API Token Oluşturma

Her cluster’ınızda şu adımları uygulayın:

# Proxmox node'unda PDM için kullanıcı oluşturma
pveum user add pdm-user@pve --comment "Proxmox Datacenter Manager Service User"

# Kullanıcıya gerekli rolleri atama
pveum acl modify / -user pdm-user@pve -role PVEAuditor
pveum acl modify / -user pdm-user@pve -role PVEDatastoreUser

# API token oluşturma (token secret'ı kaydedin!)
pveum user token add pdm-user@pve pdm-token --privsep=0

Eğer sadece izleme değil, VM yönetimi de yapacaksanız daha geniş yetkiler gerekir:

# Tam yönetim için PVEAdmin rolü atama
pveum acl modify / -user pdm-user@pve -role PVEAdmin

PDM’e Cluster Ekleme

API token oluşturduktan sonra PDM arayüzünden veya CLI üzerinden cluster ekleyebilirsiniz:

# PDM sunucusunda cluster ekleme komutu
pdm remote add 
  --name "ankara-datacenter-01" 
  --host 192.168.10.100 
  --port 8006 
  --token-id "pdm-user@pve!pdm-token" 
  --token-secret "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
  --fingerprint "AA:BB:CC:DD:EE:FF:..."  # Cluster sertifika parmak izi

Sertifika parmak izini Proxmox cluster node’unda şu komutla alabilirsiniz:

# Proxmox node'unda sertifika parmak izini öğrenme
openssl s_client -connect localhost:8006 < /dev/null 2>/dev/null | 
  openssl x509 -fingerprint -sha256 -noout | 
  cut -d= -f2

Birden fazla cluster’ı toplu olarak eklemek istiyorsanız basit bir bash script işinizi görür:

#!/bin/bash
# add-clusters.sh - Tüm cluster'ları PDM'e toplu ekleme

declare -A CLUSTERS
CLUSTERS["istanbul-dc01"]="10.10.1.100"
CLUSTERS["ankara-dc01"]="10.20.1.100"
CLUSTERS["izmir-dc01"]="10.30.1.100"

TOKEN_ID="pdm-user@pve!pdm-token"
TOKEN_SECRET="your-token-secret-here"

for cluster_name in "${!CLUSTERS[@]}"; do
    echo "Adding cluster: $cluster_name (${CLUSTERS[$cluster_name]})"
    
    # Sertifika parmak izini al
    FINGERPRINT=$(openssl s_client -connect "${CLUSTERS[$cluster_name]}:8006" < /dev/null 2>/dev/null | 
        openssl x509 -fingerprint -sha256 -noout | cut -d= -f2)
    
    pdm remote add 
        --name "$cluster_name" 
        --host "${CLUSTERS[$cluster_name]}" 
        --port 8006 
        --token-id "$TOKEN_ID" 
        --token-secret "$TOKEN_SECRET" 
        --fingerprint "$FINGERPRINT"
    
    echo "Cluster $cluster_name added successfully"
done

Merkezi İzleme Senaryosu: Üç Lokasyonlu Ortam

Gerçek bir senaryo üzerinden gidelim. Diyelim ki bir şirketin üç farklı lokasyonunda Proxmox cluster’ları var:

  • İstanbul DC: Production cluster, 8 node, 400+ VM
  • Ankara DC: DR cluster, 4 node, critical VM’lerin replikası
  • İzmir DC: Development cluster, 3 node, test ortamları

Bu senaryoda PDM olmadan her sabah üç farklı arayüze girip kontrol yapmanız gerekir. PDM ile tek dashboard’dan tüm ortamın sağlık durumunu görürsünüz.

PDM ile Resource Kullanım Raporlama

PDM CLI üzerinden resource kullanım bilgilerini çekebilirsiniz. Bu bilgileri bir cron job ile loglayıp trend analizi yapabilirsiniz:

#!/bin/bash
# proxmox-resource-report.sh
# Tüm cluster'lardan kaynak kullanımını topla ve raporla

LOG_FILE="/var/log/pdm/resource-report-$(date +%Y%m%d).log"
REPORT_DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "=== Proxmox Resource Report: $REPORT_DATE ===" >> "$LOG_FILE"

# PDM API üzerinden tüm remote'ları listele
REMOTES=$(pdm remote list --output-format json | jq -r '.[].name')

for remote in $REMOTES; do
    echo "--- Cluster: $remote ---" >> "$LOG_FILE"
    
    # Cluster node durumlarını al
    pdm remote exec "$remote" -- pvesh get /nodes 
        --output-format json 2>/dev/null | 
        jq -r '.[] | "Node: (.node) | CPU: (.cpu * 100 | floor)% | Mem: (.mem / .maxmem * 100 | floor)% | Status: (.status)"' 
        >> "$LOG_FILE"
    
    echo "" >> "$LOG_FILE"
done

# Raporu mail ile gönder (mailutils kurulu olmalı)
if [ -f "$LOG_FILE" ]; then
    mail -s "Daily Proxmox Resource Report - $REPORT_DATE" 
         [email protected] < "$LOG_FILE"
fi

Bu script’i crontab’a ekleyin:

# Her sabah 08:00'de rapor gönder
0 8 * * * /opt/scripts/proxmox-resource-report.sh

Merkezi Alert Yapılandırması

PDM’in alert sistemi, tüm cluster’lar için merkezi bildirim kuralları oluşturmanıza imkan tanır. PDM konfigürasyon dosyası üzerinden alert tanımları yapabilirsiniz:

# /etc/proxmox-datacenter-manager/notifications.cfg
# Bu dosyayı düzenleyerek merkezi bildirimler ayarlayın

# SMTP bildirim hedefi tanımlama
pdm notification target add 
    --name "ops-team-email" 
    --type smtp 
    --server mail.sirket.com 
    --port 587 
    --from-address [email protected] 
    --to-address [email protected] 
    --username smtp-user 
    --password smtp-pass

# Kritik alert kuralı
pdm notification rule add 
    --name "critical-alerts" 
    --target "ops-team-email" 
    --min-severity error 
    --comment "Tüm cluster'lardan kritik hatalar için bildirim"

Özellikle disk doluluk uyarısı için custom bir script yazmak işe yarar. PDM bu konuda biraz kısıtlı olduğundan harici bir kontrol script’i kullanmak mantıklı:

#!/bin/bash
# check-storage-threshold.sh
# Tüm cluster'larda storage doluluk kontrolü

THRESHOLD=85  # Yüzde doluluk uyarı eşiği
ALERT_EMAIL="[email protected]"

REMOTES=$(pdm remote list --output-format json | jq -r '.[].name')

ALERT_MESSAGE=""

for remote in $REMOTES; do
    # Her cluster'daki storage'ları kontrol et
    STORAGE_DATA=$(pdm remote exec "$remote" -- pvesh get /storage 
        --output-format json 2>/dev/null)
    
    if [ -z "$STORAGE_DATA" ]; then
        continue
    fi
    
    # Dolu storage'ları bul
    FULL_STORAGES=$(echo "$STORAGE_DATA" | 
        jq -r ".[] | select(.used_fraction > ($THRESHOLD / 100)) | 
        "$remote: (.storage) - (.used_fraction * 100 | floor)% dolu"")
    
    if [ -n "$FULL_STORAGES" ]; then
        ALERT_MESSAGE+="$FULL_STORAGESn"
    fi
done

if [ -n "$ALERT_MESSAGE" ]; then
    echo -e "UYARI: Aşağıdaki storage'lar eşik değerini aştı:nn$ALERT_MESSAGE" | 
        mail -s "[PROXMOX ALERT] Storage Doluluk Uyarısı" "$ALERT_EMAIL"
fi

Kullanıcı ve Yetki Yönetimi

PDM’in en güçlü özelliklerinden biri merkezi kullanıcı yönetimi. Farklı ekipler için farklı erişim seviyeleri tanımlayabilirsiniz.

# PDM'de realm tanımlama (LDAP entegrasyonu)
pdm realm add 
    --name "company-ldap" 
    --type ldap 
    --server "ldap.sirket.com" 
    --base-dn "dc=sirket,dc=com" 
    --bind-dn "cn=pdm-service,ou=service-accounts,dc=sirket,dc=com" 
    --bind-password "service-account-password" 
    --user-filter "(memberOf=CN=proxmox-users,OU=Groups,DC=sirket,DC=com)"

# Junior admin kullanıcısı oluşturma
pdm user add junior-admin@company-ldap 
    --comment "Junior Sysadmin - Sadece izleme yetkisi"

# Sadece belirli cluster'lara erişim ver
pdm acl modify /remote/istanbul-dc01 
    --user junior-admin@company-ldap 
    --role PDMAuditor

# Senior admin için tam yetki
pdm user add senior-admin@company-ldap 
    --comment "Senior Sysadmin - Tam yetki"

pdm acl modify / 
    --user senior-admin@company-ldap 
    --role PDMAdministrator

Backup ve DR Takibi

Çoklu cluster ortamında backup durumunu takip etmek kritik önem taşır. PDM üzerinden tüm cluster’lardaki backup job’larını izleyebilirsiniz:

#!/bin/bash
# backup-status-check.sh
# Tüm cluster'lardaki son 24 saatin backup durumunu kontrol et

YESTERDAY=$(date -d "yesterday" '+%Y-%m-%d')
FAILED_BACKUPS=""
REMOTES=$(pdm remote list --output-format json | jq -r '.[].name')

for remote in $REMOTES; do
    echo "Checking backups for: $remote"
    
    # Son 24 saatteki backup task'larını listele
    BACKUP_TASKS=$(pdm remote exec "$remote" -- pvesh get /cluster/tasks 
        --output-format json 2>/dev/null | 
        jq -r ".[] | select(.type == "vzdump" and .starttime > $(date -d yesterday +%s)) | 
        "(.status)|(.id)|(.node)"")
    
    while IFS='|' read -r status vmid node; do
        if [ "$status" != "OK" ] && [ -n "$status" ]; then
            FAILED_BACKUPS+="Cluster: $remote | Node: $node | VMID: $vmid | Status: $statusn"
        fi
    done <<< "$BACKUP_TASKS"
done

if [ -n "$FAILED_BACKUPS" ]; then
    echo -e "Başarısız backup'lar:n$FAILED_BACKUPS" | 
        mail -s "[KRITIK] Proxmox Backup Hataları - $YESTERDAY" 
        [email protected]
    exit 1
else
    echo "Tüm backup'lar başarılı!"
    exit 0
fi

Performans İzleme ve Grafana Entegrasyonu

PDM’i Prometheus ve Grafana ile entegre ederek çok daha zengin görselleştirmeler elde edebilirsiniz. Proxmox node’larından metric çekmek için prometheus-pve-exporter kullanabilirsiniz:

# Her Proxmox cluster'ında prometheus exporter kurulumu
pip3 install prometheus-pve-exporter

# Konfigürasyon dosyası oluşturma
cat > /etc/prometheus/pve.yml << EOF
default:
  user: pdm-user@pve
  token_name: pdm-token
  token_value: your-token-value-here
  verify_ssl: false
EOF

# Systemd service oluşturma
cat > /etc/systemd/system/prometheus-pve-exporter.service << EOF
[Unit]
Description=Prometheus Proxmox VE Exporter
After=network.target

[Service]
Type=simple
User=nobody
ExecStart=/usr/local/bin/pve_exporter /etc/prometheus/pve.yml
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl enable --now prometheus-pve-exporter

Prometheus konfigürasyonuna tüm cluster’ları eklemek için:

# /etc/prometheus/prometheus.yml dosyasına eklenecek bölüm
cat >> /etc/prometheus/prometheus.yml << 'EOF'

  - job_name: 'proxmox-istanbul'
    static_configs:
      - targets: ['10.10.1.100:9221']
    metrics_path: /pve
    params:
      module: [default]
    relabel_configs:
      - source_labels: [__address__]
        target_label: cluster
        replacement: 'istanbul-dc01'

  - job_name: 'proxmox-ankara'
    static_configs:
      - targets: ['10.20.1.100:9221']
    metrics_path: /pve
    params:
      module: [default]
    relabel_configs:
      - source_labels: [__address__]
        target_label: cluster
        replacement: 'ankara-dc01'
EOF

systemctl reload prometheus

PDM Güvenlik Ayarları

PDM kurulumunu production’a almadan önce birkaç güvenlik adımını atlamayın:

# PDM web arayüzü için özel SSL sertifikası
# Let's Encrypt kullanıyorsanız:
apt install -y certbot

certbot certonly --standalone 
    -d pdm.sirket.com 
    --email [email protected] 
    --agree-tos

# PDM'e özel sertifika tanımlama
cp /etc/letsencrypt/live/pdm.sirket.com/fullchain.pem 
    /etc/proxmox-datacenter-manager/ssl/pdm.pem

cp /etc/letsencrypt/live/pdm.sirket.com/privkey.pem 
    /etc/proxmox-datacenter-manager/ssl/pdm.key

# Sertifika yenileme için hook
cat > /etc/letsencrypt/renewal-hooks/deploy/pdm-reload.sh << 'EOF'
#!/bin/bash
systemctl reload proxmox-datacenter-manager
EOF
chmod +x /etc/letsencrypt/renewal-hooks/deploy/pdm-reload.sh

# Güvenlik duvarı kuralları (PDM sunucusunda)
ufw allow from 10.0.0.0/8 to any port 8443 proto tcp  # İç ağdan erişim
ufw deny 8443  # Dışarıdan engelle
ufw enable

Yaygın Sorunlar ve Çözümleri

PDM ile çalışırken karşılaşılan tipik sorunlara değinelim:

Cluster bağlantı kesilmesi: Cluster’lar arası ağ gecikmesi yüksek olduğunda PDM bağlantıyı zaman zaman kaybedebilir. Timeout değerlerini artırmak genellikle işe yarar:

# PDM konfigürasyonunda timeout ayarı
# /etc/proxmox-datacenter-manager/pdm.conf dosyasını düzenle
echo "remote-api-timeout: 30" >> /etc/proxmox-datacenter-manager/pdm.conf
systemctl restart proxmox-datacenter-manager

API token süresi dolması: Token’ların expire olması durumunda tüm cluster bağlantıları kopabilir. Bunu önlemek için token’lara expiry koymayın veya otomatik yenileme script’i yazın.

Yüksek bellek kullanımı: Çok sayıda cluster takip edildiğinde PDM’in bellek kullanımı artabilir. JVM heap boyutunu ayarlamak yardımcı olur:

# /etc/default/proxmox-datacenter-manager dosyasını düzenle
echo 'JAVA_OPTS="-Xmx4g -Xms1g"' >> /etc/default/proxmox-datacenter-manager
systemctl restart proxmox-datacenter-manager

Sonuç

Proxmox Datacenter Manager, birden fazla Proxmox cluster’ı olan ortamlar için gerçek anlamda hayat kurtaran bir araç. Henüz olgunlaşma aşamasında olduğundan bazı özellikler eksik ya da ham durumda ama temel kullanım senaryoları için oldukça stabil çalışıyor.

En büyük kazanım tabii ki operasyonel verimlilik. Sabah rutini haline gelen “tüm cluster’ları tek tek kontrol et” işi artık tek bir dashboard açmakla bitiyor. Alert yapılandırmasını merkezi hale getirdiğinizde ise reaktif müdahaleden proaktif yönetime geçiş yapmış oluyorsunuz.

Kurulum ve konfigürasyon açısından bakıldığında, Proxmox ekosistemine zaten aşina olan bir sysadmin için öğrenme eğrisi oldukça düz. API token yapısı, RBAC modeli ve CLI araçları Proxmox VE ile aynı felsefeyi taşıyor, bu yüzden yabancılık çekmiyorsunuz.

Production’da kullanmadan önce şunlara dikkat edin: PDM’i ayrı, izole bir sanal makinede çalıştırın. Backup ve izleme sistemlerinizle entegre edin. Ve her cluster için minimum yetki prensibini uygulayın. Bu üç adımı doğru attığınızda, çoklu cluster yönetimi sizin için artık bir baş ağrısı olmaktan çıkıp kontrol altında bir süreç haline gelecek.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir