Proxmox Load Balancer in Docker

Proxmox Load Balancer in Docker
Photo by Taylor Vick / Unsplash

Balancing mitts Docker in Proxmox PVE

In diesem Beitrag möchte ich eine Lösung vorstellen, mit der der Proxmox Load Balancer bequem als Docker-Container betrieben werden kann. Der Proxmox Load Balancer sorgt dafür, dass die RAM-Auslastung in einem Proxmox-Cluster automatisch ausgeglichen wird, was die Effizienz und Verteilung der Ressourcen verbessert. Ich habe dafür einen eigenen Docker-Container gebaut, der die Integration und Nutzung des Load Balancers in bestehenden Umgebungen deutlich erleichtert.

Was macht der Proxmox Load Balancer?

Dieses Skript konzentriert sich speziell auf die RAM-Auslastung innerhalb eines Proxmox-Clusters, während die CPU-Balancierung bewusst ausgeklammert wird. Einige der herausragenden Funktionen des Tools sind:

  • Ausschlusslisten für VMs und Nodes: Bestimmte VMs oder Nodes können von der Lastverteilung ausgenommen werden.
  • Konfigurierbare Spanne für die Lastverteilung: Du kannst festlegen, wie viel Unterschied in der RAM-Auslastung zwischen den Nodes akzeptabel ist, bevor eine Migration eingeleitet wird.
  • Optimierter Algorithmus für die VM-Auswahl: Das Skript priorisiert gezielt, welche VMs am besten migriert werden sollten.
  • Periodische Ausführung: Der Load Balancer läuft kontinuierlich und schläft in konfigurierbaren Intervallen.

Ein wichtiger Hinweis: Um die automatische Migration zu ermöglichen, ist geteilte Speicher-Infrastruktur erforderlich (z.B. CEPH oder eine ähnliche Lösung).

Der Proxmox Load Balancer als Docker-Container

Um den Proxmox Load Balancer einfach zu verwalten und zu skalieren, habe ich das Skript in einen Docker-Container verpackt. Das bietet einige Vorteile:

  • Einfacher Start und Stopp des Load Balancers.
  • Automatische Wiederherstellung im Fehlerfall durch Docker’s Restart-Mechanismus.
  • Konfigurationsdaten können extern gespeichert und versioniert werden.

Setup in Docker

Die Bereitstellung ist einfach und erfordert nur wenige Schritte. Hier ist das Docker Compose-Setup:

  ---
  services:
    proxmox-load-balancer:
      image: thealhu/proxmox-load-balancer:latest
      container_name: proxmox-load-balancer
      restart: always
      volumes:
        - ./config:/config

Alternativ kann der Container auch direkt mit dem Docker CLI gestartet werden:

docker run -d --restart always --name proxmox-load-balancer -v "$(pwd)/config:/config" thealhu/proxmox-load-balancer:latest

Anpassungen und Empfehlungen

  • Ausschluss von VMs und Nodes: Das Skript erlaubt das Ausschließen bestimmter Nodes oder VMs, die nicht migriert werden sollen. Dies kann in der Konfigurationsdatei hinterlegt werden.
  • Deviation-Wert: Eine Abweichung von etwa 3-5 % eignet sich für mittelgroße Cluster. Kleinere Werte führen zu häufigeren Migrationen.
  • Erforderliche Berechtigungen: Es ist wahrscheinlich nicht nötig, dem Skript Root-Zugriff zu geben. Stattdessen könnte ein dediziertes Proxmox-Benutzerkonto mit eingeschränkten Rechten ausreichen (dies ist jedoch noch ungetestet).

Fazit

Der Proxmox Load Balancer stellt eine nützliche Lösung dar, um die RAM-Auslastung in einem Proxmox-Cluster automatisch zu optimieren. Die Bereitstellung als Docker-Container vereinfacht die Handhabung erheblich und macht die Lösung leicht skalierbar und wartbar.

Wenn ihr Verbesserungsvorschläge oder Anfragen für neue Features habt, hinterlasst gerne ein Feedback auf der GitHub-Seite des Projekts.