PMG7 to PMG8 upgrade | cluster with two nodes | without an in-place upgrade

Xela

Well-Known Member
Oct 12, 2017
92
2
48
Dear Forum

I would like to upgrade an existing PMG7 cluster with two nodes (1 master and another) to PMG8 without an in-place upgrade. Is there a step by step guide for this?
 
Thank you for your response. I am getting always after an in-place-upgrade following message:
Code:
Mar 26 11:17:29 pmg pmgproxy[734]: DBI connect('dbname=Proxmox_ruledb;host=/var/run/postgresql;port=5432','www-data',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket? at /usr/share/perl5/PMG/DBTools.pm line 78.
 
Did you also upgrade the PostgreSQL database exactly as detailed in the guide?

What is the output of both systemctl status postgresql.service and journalctl -b -u postgresql.service?
 
Yes, I also upgraded the PostgreSQL database exactly as detailed in the guide.

Code:
root@pmg:~# systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Tue 2024-03-26 13:00:24 CET; 1h 17min left
   Main PID: 531 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Mar 26 13:00:24 pmg systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Mar 26 13:00:24 pmg systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

root@pmg:~# journalctl -b -u postgresql.service
Mar 26 13:00:24 pmg systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Mar 26 13:00:24 pmg systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
Code:
root@pmg2:~# systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Tue 2024-03-26 11:16:02 CET; 27min ago
   Main PID: 551 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Mar 26 11:16:02 pmg2 systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Mar 26 11:16:02 pmg2 systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

root@pmg2:~# journalctl -b -u postgresql.service
Mar 26 11:16:02 pmg2 systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Mar 26 11:16:02 pmg2 systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
 
Last edited:
The steps according:

https://pmg.proxmox.com/wiki/index.php/Upgrade_from_7_to_8

Auf ALLEN Knoten die locales entsprechend richtig setzen:

# nano /etc/default/locale

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Alle Knoten aktualisieren:

# apt update
# apt dist-upgrade
# reboot -nf
-n: Do not go through init
-f: Force file system check


Bei einem Cluster, alle Cluster-Daemons auf ALLEN Knoten stoppen und maskieren, bevor das Upgrade des ersten Knotens gestartet wird:

# systemctl stop pmgmirror pmgtunnel
# systemctl mask pmgmirror pmgtunnel

Mit dem Upgrade aller Knoten der Reihe nach fortfahren.
Der Mail-Gateway-Dienst wird von den anderen Knoten bereitgestellt, die derzeit nicht aktualisiert werden.
Bestimmte Vorgänge (z. B. Konfigurationsänderungen) funktionieren erst, wenn alle Knoten aktualisiert wurden.

Die apt-Quellen auf Bookworm ändern:


# sed -i 's/bullseye\/updates/bookworm-security/g;s/bullseye/bookworm/g' /etc/apt/sources.list
(sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list)

No-Subscription-Repository auf Bookworm:

# echo "deb http://download.proxmox.com/debian/pmg bookworm pmg-no-subscription" > /etc/apt/sources.list.d/pmg-enterprise.list

Enterprise-Repository auf Bookworm:

# echo "deb https://enterprise.proxmox.com/debian/pmg bookworm pmg-enterprise" > /etc/apt/sources.list.d/pmg-enterprise.list

# apt update

Postfix stoppen und alle Proxmox Mail Gateway-Dienste (E-Mails werden von den Servern in die Warteschlange gestellt, die versuchen, den Proxmox Mail Gateway zu kontaktieren):

# systemctl stop postfix pmg-smtp-filter pmgpolicy pmgdaemon pmgproxy pmgmirror pmgtunnel

Postfix maskieren und alle Proxmox Mailgateway-Dienste, um zu verhindern, dass sie während des Upgrades gestartet werden:

# systemctl mask postfix pmg-smtp-filter pmgpolicy pmgdaemon pmgproxy pmgmirror pmgtunnel

# apt update
# apt dist-upgrade

Während des obigen Schritts wird man aufgefordert, Änderungen an Konfigurationsdateien zu genehmigen, bei denen die Standardkonfiguration durch das jeweilige Paket aktualisiert wurde.

Es wird empfohlen, den Unterschied zwischen den einzelnen Dateien zu prüfen und die für Ihre Einrichtung am besten geeignete Antwort zu wählen.

Übliche Konfigurationsdateien mit Änderungen und die empfohlenen Auswahlmöglichkeiten sind:

  • /etc/issue -> Proxmox Mail Gateway generiert diese Datei automatisch beim Booten, und sie hat nur kosmetische Auswirkungen auf die Anmeldekonsole.
Die Standardeinstellung "No" (behalten Sie Ihre aktuell installierte Version) ist hier sicher.
  • /etc/clamav/clamd.conf und /etc/clamav/freshclam.conf -> Diese beiden Konfigurationsdateien werden direkt vom Proxmox Mail Gateway verwaltet und bei jeder relevanten Änderung und beim Booten neu generiert.
Die Standardeinstellung "No" (behalten Sie Ihre aktuell installierte Version) ist hier sicher.
  • /etc/ssh/sshd_config -> Wenn man diese Datei nicht manuell geändert hat, sollten die einzigen Unterschiede darin bestehen, dass ChallengeResponseAuthentication no durch KbdInteractiveAuthentication no ersetzt wird und einige irrelevante Änderungen in den Kommentaren vorgenommen werden (Zeilen, die mit # beginnen).
Wenn dies der Fall ist, sind beide Optionen sicher, obwohl empfohlen wird, die Version des Paketbetreuers zu installieren, um von der veralteten ChallengeResponseAuthentication-Option wegzukommen. Falls es andere Änderungen gibt, wird empfohlen, diese genau zu prüfen und entsprechend zu entscheiden.
  • /etc/default/grub -> Hier sollte man besonders vorsichtig sein, da dies normalerweise nur abgefragt wird, wenn man es manuell geändert hat, z.B. um eine Kernel-Kommandozeilenoption hinzuzufügen.
Es wird empfohlen, den Unterschied auf relevante Änderungen zu überprüfen. Zu beachten ist, dass Änderungen in Kommentaren (Zeilen, die mit # beginnen) nicht relevant sind.
Bei Unsicherheit, ist die Empfehlung, "Nein" zu wählen (behalten Sie Ihre aktuell installierte Version bei).

Wenn in
/etc/pmg/templates Konfigurationsvorlagen verwendet werden, erhält man einen Hinweis auf die Änderungen in der neuen Version, die noch nicht integriert sind. Änderungen sorgfältig prüfen und vergewissern, dass nur die gewünschten Änderungen im Diff angezeigt werden.

Bevor man den PostgreSQL-Hauptcluster aktualisiert, muss man den automatisch erstellten Cluster in der neuen Version entfernen:


# pg_dropcluster --stop 15 main

Upgrade des PostgreSQL-Hauptclusters von 13 auf 15 mit pg_upgradecluster
  • Dieser Schritt benötigt etwas Zeit und ausreichend freien Speicherplatz, da eine weitere Datenbank mit Ihren Regeln, Statistiken und Quarantäneinformationen erstellt wird.
  • Wenn möglich, Standardeinstellung verwenden, die alten Datenbanken zu dumpen und sie wiederherzustellen, um Probleme zu vermeiden.
# pg_upgradecluster -v 15 13 main

Postfix demaskieren und alle nicht zum Cluster gehörenden Proxmox Mail Gateway-Dienste, um sie wieder zu aktivieren.

# systemctl unmask postfix pmg-smtp-filter pmgpolicy pmgdaemon pmgproxy

Neustart durchführen:

# reboot

Erneut mit dem Knoten verbinden, nachdem er erfolgreich neu gestartet wurde.
Nun die alte PostgreSQL-Version und ihre Daten entfernen, wenn alles wie erwartet funktioniert:


# apt purge postgresql-13 postgresql-client-13

Auf allen Knoten alle Cluster-Daemons demaskieren und starten. Dies gilt sowohl für Upgrades eines einzelnen Knotens als auch für Upgrades aller Knoten in einer Cluster-Konfiguration:

# systemctl unmask pmgmirror pmgtunnel
# systemctl start pmgmirror pmgtunnel
 
Last edited:
Once again the locales were the problem, which must be correct before the upgrade:

# nano /etc/default/locale

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

1711471037947.png
 
Last edited:

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!