ProxMox 2 Node-Cluster

Klaus Urban

Active Member
Jan 23, 2020
37
4
28
66
Hallo,
bei eine ProxMox 2 Node-Cluster installation repliziere ich eine VM von pve-1 nach pve-2.
Wenn ich dann per
/usr/bin/mv /etc/pve/nodes/pve-1/qemu-server/102.conf /etc/pve/nodes/pve-2/qemu-server/102.conf
die Konfigurationsdatei verschiebe, repliziert Poxmox zurück.
Also von pve-2 nach pve-1. Das sollte doch, wenn schon, dann genau andersrum sein.
Vergesse ich vor dem Verschieben die Replikation, dann habe ich zwei alte Stände.

Es ist auch egal, von welcher pve ich die Konfigurationsdatei verschiebe.

Kann man das abstellen?
 
Da habe ich doch die Migation übersehen. Damit funktioniert es.
Das Verschieben benötige ich nur, wenn einer der beiden Knoten aus ist. Dann kann auch nicht repliziert werden.;)
 
Ich habe das jetzt mal getestet,

1. VM auf pve1-1 erstellen
2. VM mit pve-2 replizieren
3. VM nach pve-2 migrieren
4. Auf pve-2 einen Snapshot erstellen (Montag)
5. VM mit pve-1 replizieren
6. Auf pve-1 einen Snapshot erstellen (Dienstag)
7. VM mit pve-2 replizieren
8. Auf pve-2 einen Snapshot erstellen (Mitttwoch)
9. Rollback auf pve-2 den Snaphot (Montag) → can’t rollback, more recent snapshot exist.
10. Den Snapshot Mittwoch auf pve-2 löschen.
11. Rollback auf pve-2 den Snaphot (Montag) → can’t rollback, more recent snapshot exist.

zfs list -t snapshot -o name -S creation

rpool/data/vm-100-disk-0@__replicate_100-0_1588752900__

rpool/data/vm-100-disk-0@Montag

12. Den Snapshot __replicate_100-0_1588752900__ auf pve-2 gelöscht.
13. Rollback auf pve-2 den Snaphot (Montag)
14. VM mit pve-1 replizieren → command ….' failed: exit code 255

15. Auf pve-1 im ZFS vm-100-disk-0 gelöscht.
16. VM mit pve-1 replizieren → OK, aber natürlich eine neue Replizierung

Fazit:
alle neueren Snapshot’s, löschen. (Auch den nicht angezeigten __replicate…)
Alle Disk-Image der VM auf dem anderen Knoten löschen.
Die Replizierung wieder neu anstoßen.

Ist das der richtige Weg?

----------------------------------------

Praxistest:

Windows VM -100 auf pve-1
vm-100-disk-0 (System)
vm-100-disk-1 (Daten)
vm-100-disk-2 (SQL-Datenbank )

Tag 1: Snapshot Montag, Replikation mit pve-2
Tag 2: Snapshot Dienstag, Replikation mit pve-2
Tag 3: Snapshot Mittwoch, Replikation mit pve-2
Tag 4: Snapshot Donnerstag, Replikation mit pve-2
Tag 5: Snapshot Freitag, Replikation mit pve-2
Tag 6: Die Windows-VM ist abgestürzt und startet nicht mehr. (BSOD)

Also erst mal den Snapshot Freitag vom System zurückholen.

Das funktioniert natürlich nicht per ProxMox VE Rollback.
1. → can’t rollback, more recent snapshot exist.
2. Wenn es funktionieren würde, sind auch die Daten und die SQL-Datenbank zurückgesichert.

Also erst mal ein zfs list t snapshot (nur für vm-100)


rpool/data/vm-100-state-Donnerstag@__replicate_100-0_1588755900__
rpool/data/vm-100-state-Freitag@__replicate_100-0_1588755900__
rpool/data/vm-100-state-Mittwoch@__replicate_100-0_1588755900__
rpool/data/vm-100-state-Montag@__replicate_100-0_1588755900__
rpool/data/vm-100-disk-0@__replicate_100-0_1588755900__
rpool/data/vm-100-state-Dienstag@__replicate_100-0_1588755900__
rpool/data/vm-100-disk-0@Freitag
rpool/data/vm-100-disk-0@Donnerstag
rpool/data/vm-100-disk-0@Mittwoch

rpool/data/vm-100-disk-0@Dienstag
rpool/data/vm-100-disk-0@
Montag

Alle bis auf die @Wochtentage löschen

zfs list t snapshot (nur für vm-100)

pool/data/vm-100-disk-0@Freitag
rpool/data/vm-100-disk-0@Donnerstag
rpool/data/vm-100-disk-0@Mittwoch

rpool/data/vm-100-disk-0@Dienstag
rpool/data/vm-100-disk-0@Montag

Rollback pool/data/vm-100-disk-0@Freitag → Fehler noch vorhanden

pool/data/vm-100-disk-0@Freitag löschen
Rollback
pool/data/vm-100-disk-0@Donnerstag→ Fehler noch vorhanden

rpool/data/vm-100-disk-0@Donnerstag löschen
Rollback
pool/data/vm-100-disk-0@Mittwoch → OK

Damit die Replikation wieder funktioniert, muss auf pve-2 im zfs-Speicher alles von vm-100-disk-0 gelöscht werden.


BTW:

Sollte pve-1 ausfallen dann funktioniert nur ein:

mv /etc/pve/nodes/pve-1/qemu-server/100.conf etc/pve/nodes/pve-2/qemu-server/100.conf
und
pvecm expected 1
 
Nachtrag,
ich erstelle die Snapshot jetzt per Perl-Script. Dann funktioniert es.
Nach der Rücksicherung einer Festplatte muss ich nur auf der anderen Node das Disk-Image der Festplatte löschen.
Dann funktioniert auch die Replikation.

Hier die Snapshot.sh
--------------------------------
#!/usr/bin/perl

$SSAnzahl=3; # Anzahl Snapshot pro Disk

$VMID=$ARGV[0]; # VMID

if ($VMID=="") { $VMID="100" } # Keine Angabe, dann nimm den ersten

# lese Poolname
#======================================================
$Status=`/usr/sbin/zpool list -o name`;
$ZPool=substr($Status,5);
$ZPool=substr($ZPool,0,length($ZPool)-1);

use POSIX qw(strftime);
$datestring = strftime "%F-%H-%M-%S", localtime;
$SSN=("$datestring");

$SSLen=length($ZPool)+39;

# lese die Festplatten der VM
#======================================================
$DiskListe=`/usr/sbin/qm config $VMID`;

$Such="vm-".$VMID."-disk";
$StartPos=0;
$NR=1;

while($StartPos!=-1)
{
$Pos1=index($DiskListe,$Such,$StartPos);
$Disk[$NR]=substr($DiskListe,$Pos1,13); # Einsortieren
$StartPos=index($DiskListe,$Such,$Pos1+13);
$NR++;
}

# Snapshot anlegen und ältere löschen
#====================================

for ( $j=1; $j < $NR; $j++)
{
$SS=$ZPool."/data/".$Disk[$j]."@".$SSN;
$Erg=`/usr/sbin/zfs snapshot $SS`; # Erstelle Snapshot
$Liste=`/usr/sbin/zfs list -H -t snapshot -o name -S creation $ZPool/data/$Disk[$j]`; # Lese alle Snapshot der Festplatte

$StartPos=0;
$N=0;
$Pos1=0;
$Pos2=0;
$Such2=$ZPool."/data/".$Such;

while($Pos1!=-1)
{
$Pos1=index($Liste,$Such2,$StartPos);

if ($Pos1!=-1)
{
$Zeile=substr($Liste,$Pos1,$SSLen); #Snapshot
$StartPos=$Pos1+10;

$Pos2=index($Zeile,"replicate"); # ist es eine Replikation?
if ($Pos2==-1) # nein, dann weiter
{
$N++;
if ($N>$SSAnzahl) # wurde die Anzahl der Snapshots erreicht?
{
$Erg=`/usr/sbin/zfs destroy $Zeile`; # Ja, dann lösche den älteren Snapshot
}
}
}
}
}
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!