Proxmox Cluster - GUI und Konsole

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Proxmox Cluster - GUI und Konsole

Alles, was die Proxmox-GUI macht, läuft über die REST-API (/api2/json). Die Konsolenwerkzeuge (pvecm, qm, pct, pvesm, pveum, ha-manager, vzdump) und pvesh sprechen dieselbe API bzw. dieselbe Konfiguration in /etc/pve an. Jeder Schritt unten zeigt deshalb den Weg in der GUI und den Befehl auf der Konsole.

Die GUI-Pfade sind in der englischen Oberfläche angegeben.

Laborannahmen

Node IP (Cluster-Netz)
pve1 192.168.10.11
pve2 192.168.10.12
pve3 192.168.10.13
  • Shared Storage (NFS): 192.168.10.5:/srv/nfs/pve
  • Namen und Adressen an das eigene Labor anpassen

Vorbereitung auf allen Nodes

Hostname prüfen (GUI
Node -> System -> DNS / Hosts)
  • hostnamectl
Namensauflösung der Nodes eintragen
  • vim /etc/hosts
192.168.10.11 pve1.kurs.int pve1
192.168.10.12 pve2.kurs.int pve2
192.168.10.13 pve3.kurs.int pve3
Erreichbarkeit testen
  • ping -c2 pve2
Zeit muss synchron sein (GUI
Node -> System -> Time)
  • chronyc tracking
Versionen sollten gleich sein (GUI
Node -> Summary)
  • pveversion

Wichtig: Ein Node, der einem Cluster beitritt, darf keine VMs oder Container haben. Die VMIDs müssen clusterweit eindeutig sein.

Cluster aufbauen

Cluster erstellen (nur auf pve1)

GUI
Datacenter -> Cluster -> Create Cluster
  • pvecm create kurs --link0 192.168.10.11
Status anzeigen (GUI
Datacenter -> Cluster)
  • pvecm status

Nodes hinzufügen (auf pve2 und pve3)

GUI
auf pve1 Datacenter -> Cluster -> Join Information kopieren, auf pve2 Datacenter -> Cluster -> Join Cluster
  • pvecm add 192.168.10.11 --link0 192.168.10.12

Der Befehl fragt nach dem root-Passwort von pve1 und nach der Bestätigung des Fingerprints. Auf pve3 entsprechend mit --link0 192.168.10.13.

Cluster kontrollieren

Mitglieder anzeigen
  • pvecm nodes
Quorum und Votes anzeigen
  • pvecm status
Corosync-Konfiguration ansehen
  • cat /etc/pve/corosync.conf
Logs live mitlesen
  • journalctl -u corosync -u pve-cluster -f
Clusterdateisystem
Inhalt ist auf allen Nodes identisch
  • ls -l /etc/pve/nodes/

Storage

Storage anzeigen

GUI
Datacenter -> Storage
  • pvesm status
  • cat /etc/pve/storage.cfg

NFS-Storage hinzufügen

GUI
Datacenter -> Storage -> Add -> NFS
  • pvesm add nfs nfs-kurs --server 192.168.10.5 --export /srv/nfs/pve --content images,rootdir,iso,vztmpl,backup
Inhalt eines Storage anzeigen
  • pvesm list nfs-kurs

Storage entfernen

  • pvesm remove nfs-kurs

Virtuelle Maschinen

ISO hochladen

GUI
Storage -> ISO Images -> Upload oder Download from URL

Auf der Konsole wird das ISO einfach in das Verzeichnis des Storage kopiert:

  • cp debian-13-netinst.iso /mnt/pve/nfs-kurs/template/iso/

VM anlegen

GUI
Create VM
qm create 100 --name deb100 --ostype l26 \
  --memory 2048 --cores 2 \
  --scsihw virtio-scsi-single --scsi0 nfs-kurs:16 \
  --ide2 nfs-kurs:iso/debian-13-netinst.iso,media=cdrom \
  --net0 virtio,bridge=vmbr0 \
  --boot 'order=scsi0;ide2'

VM verwalten

Alle VMs des Nodes anzeigen
  • qm list
Alle VMs und Container im Cluster anzeigen (GUI
Datacenter -> Search)
  • pvesh get /cluster/resources --type vm
Starten, sauber herunterfahren, hart stoppen
  • qm start 100
  • qm shutdown 100
  • qm stop 100
Konfiguration anzeigen (GUI
VM -> Hardware / Options)
  • qm config 100
  • cat /etc/pve/qemu-server/100.conf
Hardware ändern
  • qm set 100 --memory 4096 --cores 4
Platte vergrößern (GUI
VM -> Hardware -> Disk Action -> Resize)
  • qm disk resize 100 scsi0 +4G
Konsole der VM (serielle Konsole muss in der VM aktiv sein)
  • qm terminal 100
VM löschen
  • qm destroy 100 --purge

Snapshots

GUI
VM -> Snapshots
  • qm snapshot 100 vor-update --description "Stand vor dem Update"
  • qm listsnapshot 100
  • qm rollback 100 vor-update
  • qm delsnapshot 100 vor-update

Templates und Klone

In Template umwandeln (GUI
rechte Maustaste -> Convert to template)
  • qm template 100
Vollen Klon erzeugen (GUI
rechte Maustaste -> Clone)
  • qm clone 100 101 --name deb101 --full
Linked Clone
  • qm clone 100 102 --name deb102

Container

Templates holen

GUI
Storage -> CT Templates -> Templates
  • pveam update
  • pveam available --section system | grep debian
  • pveam download nfs-kurs debian-13-standard_XXX_amd64.tar.zst
  • pveam list nfs-kurs

Container anlegen

GUI
Create CT
pct create 200 nfs-kurs:vztmpl/debian-13-standard_XXX_amd64.tar.zst \
  --hostname ct200 --unprivileged 1 \
  --memory 512 --cores 1 \
  --rootfs nfs-kurs:8 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --password

Container verwalten

  • pct list
  • pct start 200
  • pct shutdown 200
  • pct config 200
Shell im Container (GUI
CT -> Console)
  • pct enter 200
Befehl im Container ausführen
  • pct exec 200 -- ip a
  • pct destroy 200 --purge

Migration

VM live migrieren (GUI
VM -> Migrate, Mode online)
  • qm migrate 100 pve2 --online
VM mit lokalen Platten migrieren
  • qm migrate 100 pve2 --online --with-local-disks
Container migrieren (Container können nicht live migriert werden)
  • pct migrate 200 pve2 --restart

Backup und Restore

Einmaliges Backup

GUI
VM -> Backup -> Backup now
  • vzdump 100 --storage nfs-kurs --mode snapshot --compress zstd
  • vzdump 200 --storage nfs-kurs --mode snapshot --compress zstd

Backup-Job anlegen

GUI
Datacenter -> Backup -> Add
  • pvesh create /cluster/backup --schedule "sun 01:00" --storage nfs-kurs --vmid 100,200 --mode snapshot --compress zstd
  • pvesh get /cluster/backup
  • cat /etc/pve/jobs.cfg

Restore

GUI
Storage -> Backups -> Restore
  • ls /mnt/pve/nfs-kurs/dump/
  • qmrestore /mnt/pve/nfs-kurs/dump/vzdump-qemu-100-XXX.vma.zst 110 --storage nfs-kurs
  • pct restore 210 /mnt/pve/nfs-kurs/dump/vzdump-lxc-200-XXX.tar.zst --storage nfs-kurs

Hochverfügbarkeit (HA)

HA setzt Quorum und Shared Storage voraus. Die VM muss auf dem NFS-Storage liegen.

Ressource in HA aufnehmen

GUI
Datacenter -> HA -> Resources -> Add
  • ha-manager add vm:100 --state started --max_restart 1 --max_relocate 1
Status anzeigen (GUI
Datacenter -> HA)
  • ha-manager status
  • ha-manager config

Bevorzugte Nodes festlegen

Proxmox VE 8 (GUI
Datacenter -> HA -> Groups)
  • ha-manager groupadd kursgruppe --nodes "pve1:2,pve2:1"
  • ha-manager set vm:100 --group kursgruppe
Proxmox VE 9 (GUI
Datacenter -> HA -> Affinity Rules)
  • ha-manager rules add node-affinity bevorzugt-pve1 --resources vm:100 --nodes "pve1:2,pve2:1"
  • ha-manager rules config

HA-Ressource bedienen

Migration über den HA-Manager (bei HA-Ressourcen nicht qm migrate verwenden)
  • ha-manager crm-command migrate vm:100 pve2
Ressource aus HA entfernen
  • ha-manager remove vm:100

Ausfalltest

Auf dem Node, auf dem vm
100 läuft, hart ausschalten
  • echo o > /proc/sysrq-trigger
Auf einem anderen Node beobachten
  • watch ha-manager status

Nach dem Fencing (ca. 2-3 Minuten) wird die VM auf einem anderen Node gestartet.

Benutzer und Rechte

GUI
Datacenter -> Permissions -> Users / Groups / Permissions
  • pveum user add kurs@pve --comment "Kursteilnehmer"
  • pveum passwd kurs@pve
  • pveum group add teilnehmer
  • pveum user modify kurs@pve --groups teilnehmer
  • pveum acl modify /vms --groups teilnehmer --roles PVEVMUser
Übersicht
  • pveum user list
  • pveum acl list
  • pveum role list
  • cat /etc/pve/user.cfg

Firewall

Vorsicht: Die Datacenter-Firewall vor dem Einschalten mit Regeln für Port 8006 und 22 versehen, sonst sperrt man sich aus.

Regel auf Datacenter-Ebene (GUI
Datacenter -> Firewall -> Add)
  • pvesh create /cluster/firewall/rules --type in --action ACCEPT --proto tcp --dport 8006 --source 192.168.10.0/24 --enable 1
  • pvesh create /cluster/firewall/rules --type in --action ACCEPT --proto tcp --dport 22 --source 192.168.10.0/24 --enable 1
Firewall einschalten (GUI
Datacenter -> Firewall -> Options)
  • pvesh set /cluster/firewall/options --enable 1
Status und Konfiguration
  • pve-firewall status
  • cat /etc/pve/firewall/cluster.fw
Regel für eine einzelne VM (GUI
VM -> Firewall)
  • pvesh create /nodes/pve1/qemu/100/firewall/rules --type in --action ACCEPT --proto tcp --dport 80 --enable 1

Quorum verstehen

Zwei von drei Nodes herunterfahren und auf dem letzten Node prüfen
  • pvecm status

Ohne Quorum ist /etc/pve nur lesbar. VMs lassen sich weder starten noch ändern.

Nur im Notfall
erwartete Stimmen herabsetzen
  • pvecm expected 1

Node aus dem Cluster entfernen

Den zu entfernenden Node (pve3) zuerst herunterfahren, dann auf einem verbleibenden Node
  • pvecm delnode pve3
  • pvecm status
Reste im Clusterdateisystem entfernen
  • rm -r /etc/pve/nodes/pve3

Der entfernte Node darf nicht wieder mit der alten Konfiguration ins Netz. Am saubersten wird er neu installiert.

pvesh - die GUI auf der Konsole

Jede Seite der GUI ist ein API-Pfad. Mit pvesh lässt sich dieser Pfad direkt abfragen.

Nodes im Cluster
  • pvesh get /nodes
Ressourcen des Clusters
  • pvesh get /cluster/resources
VMs eines Nodes
  • pvesh get /nodes/pve1/qemu
Status einer VM
  • pvesh get /nodes/pve1/qemu/100/status/current
VM über die API starten
  • pvesh create /nodes/pve1/qemu/100/status/start
Ausgabe als JSON
  • pvesh get /cluster/resources --type vm --output-format json-pretty
Welche Parameter kennt ein Pfad?
  • pvesh usage /nodes/pve1/qemu --verbose
Task-Liste (GUI
unteres Fenster Tasks)
  • pvesh get /cluster/tasks

Tipp für die Teilnehmer: In den Entwicklertools des Browsers (Reiter Netzwerk) sieht man bei jedem Klick in der GUI den API-Aufruf. Diesen Pfad mit pvesh nachbauen.