Node auf sekundärem Netzwerk hinzufügen

illumina7

Member
Jan 22, 2023
37
6
8
Bayern
Moin zusammen,
ich habe hier zwei proxmox nodes im Cluster, die beiden sind über zwei lwl Kabel direkt verbunden für die Replikation (local storage).
Jetzt möchte ich gerne einen dritten Node hinzufügen, der eigentlich nur als "Dummy" für "HA" dient, damit bei einem Ausfall einer der beiden Haupt-Nodes eben die Replikate auf dem zweiten Node automatisch gebootet werden können.
Allerdings habe ich das Problem, dass der dritte Node nicht über eine lwl Karte verfügt und dementsprechend nicht im Cluster Network hängt.
Beim Clusterjoin beomme ich folgende Meldung:
Code:
An error occurred on the cluster node: corosync: link 5 exists in cluster config but wasn't specified for new node

So sieht meine corosync.cfg aus:
Code:
logging {
  debug: off
  to_syslog: yes
}

nodelist {
  node {
    name: pve00
    nodeid: 1
    quorum_votes: 1
    ring0_addr: 192.168.123.1
    ring5_addr: 192.168.40.20
  }
  node {
    name: pve01
    nodeid: 2
    quorum_votes: 1
    ring0_addr: 192.168.123.2
    ring5_addr: 192.168.40.21
  }
}

quorum {
  provider: corosync_votequorum
}

totem {
  cluster_name: pvecluster
  config_version: 2
  interface {
    linknumber: 0
  }
  interface {
    linknumber: 5
  }
  ip_version: ipv4-6
  link_mode: passive
  secauth: on
  version: 2
}

Der 3. Node hängt eben im 192.168.40.0/24 Netz und ich habe keine Möglichkeit diesen in das andere Netz zu bekommen, da physisch getrennt. Einen passenden Switch habe ich leider auch nicht mehr herumliegen, mit dem ich das Lösen könnte.

Gibt es dafür eine einfache Möglichkeit den Clusterjoin über das sekundäre Netz auszuführen oder muss der 3. proxmox zwingend in dem gleichen Netz sein, damit das funktionieren kann?
Kann ich einfach die beiden ringX Netze in der Konfiguration vertauschn und corosync restarten oder schieße ich mir damit irgendetwas ab?
Wenn ich unter Datacenter\Options\Migration Settings weiterhin das 123er Netz angegben habe, dann dürfte das doch relativ egal sein über welches Netz die 3 Nodes kommunizieren oder liegt da schon das Problem, weil dem 3. node das Netz dann fehlt?

Gruß

Edit: Also ich wäre jetzt einfach der Anleitun gefolgt und hätte beim bestehenden Cluster die beiden Netze getauscht:
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pvecm_redundancy
Kann das so klappen?
 
Last edited:
Moin,
hat niemand einen Tipp für mich? Ist das vielleicht ganz simpel zu lösen und ich habe hier irgendwo einen Denkfehler?
Gruß
 
Hi, du müsstest ein zweites Clusternetz (wo der dritte drin ist) in der corosync.conf hinzufügen, dann dieses Netz primär machen. Wenn du alles richtig gemacht hast läuft der Cluster weiter. Dann das sekundär Netz (direkt) entfernen.

Jetzt hat der Cluster nur noch ein Netz für corosync (nicht empfohlen) aber du kannst den dritten joinen lassen.

Ich empfehle so ein Setup lieber mit redundanten Netzwerken. Switches sind ja nicht so teuer, wenn man nicht viele Ports braucht.

P.S. ich habe auch einen 4x100GBit Switch zuhause für 600€ geschossen. 10 GBit gibts schon für ne ganz schmale Mark.
 
Last edited:
Danke für deine Hilfe, ich denke ich habe das soweit verstanden.
Aber trotzdem nur nochmal um Gewissheit zu haben:
ich bearbeite die corosync so, dass ich die Netze hinter ring0_addr und ring5_addr (in meinem Fall) austausche, restarte die corosync auf beiden hosts und das wars?
Dann kann den 3. pve aus dem 40er Netz in den Cluster aufnehmen, danach tausche ich ring0 und ring5 wieder zurück und der 3. pve sollte weiterhin im Cluster bleiben, da er über das sekundäre Cluster Netzwerk (40er) weiterhin eine Verbindung zu den beiden anderen hosts bekommt?
 
Nein, du musst das Netzwerk dauerhaft ändern.
Die Knoten (Corosync) müssen sich permanent im gemeinsamen Netzwerk erreichen. Das direkt gesteckte Netzwerk kannst du für Migration und Storage nutzen.
 
Alles klar, dass der 3. Node das zweite Netz nicht erreichen kann ist für die Funktion der beiden anderen hosts (Migration, Replikation) unerheblich oder?

Edit: ich plane hier natürlich noch einen zusätzlichen 10G Switch für das aktuell direkt gesteckte Netz, allerdings weiß ich noch nicht ob ich da zeitnah das Budget dafür bekomme. In Zukunft soll der Cluster dann schon primär über ein separates Netzwerk kommunizieren.
 
Last edited:
Der dritte Host muss alle Corosync Netzwerke erreichen. Migration und Replikation machst du einfach nur zwischen den beiden großen und alle sind glücklich.
 
  • Like
Reactions: illumina7
Dann lösche ich ring5 aus der Konfiguration komplett und ersetze ring0 durch die 40er Netzadresse, vorher natürlich ein Backup von der corosync, dann dürfte doch fast nichts schiefgehen können oder muss ich das noch an einer anderen Stelle außer corosync.cfg ändern?
 
Ich weiß nicht wie der Cluster reagiert, wenn du zu viel auf einmal änderst. Am besten die Corosync wegkopieren, da eine neue Version editieren und dann die Originale ersetzen.
 
Hab das jetzt so durchgeführt, irgendwie hat es aber nur teilweise funktioniert.
Erstmal war der Cluster weiterhin online nach dem Bearbeiten der corosync.conf (kopiert bearbeitet, überschrieben).
Kommunikation hat geklappt, habe keine Fehler im log gesehen.
Habe dann den 3. Node über die UI hinzugefügt - das lief gut los, bis es mit der Meldung:
Code:
permission denied - invalid pve ticket (401)
fehlgeschlagen ist.
Habe dann den neuen Node rebootet, die WebUI lädt nicht mehr, per SSH komme ich noch auf den host.
Bei den beiden im Cluster habe ich dann den corosync Dienst neu gestartet, plötzlich ist der 3. Node in der UI als online aufgetaucht, kann auch zugreifen und sehe alle Infos etc. Auf dem 3. Node lädt es die WebUI weiterhin nicht.
Außerdem steht unter Datacenter\Cluster jetzt folgendes:
1677080641013.png
Und im corosync log steht folgendes:
Code:
Feb 22 16:12:22 pve00 corosync[5803]:   [TOTEM ] new config has different address for link 0 (addr changed from 192.168.123.1 to 192.168.40.20). Internal value was NOT changed.
Feb 22 16:12:22 pve00 corosync[5803]:   [TOTEM ] new config has different address for link 0 (addr changed from 192.168.123.2 to 192.168.40.21). Internal value was NOT changed.
Feb 22 16:12:22 pve00 corosync[5803]:   [CFG   ] Cannot configure new interface definitions: To reconfigure an interface it must be deleted and recreated. A working interface needs to be available to corosync at all times
womit ich jetzt nicht wirklich etwas anfangen kann.

Corosync an sich ist aber aktiv und läuft.

Bevor ich jetzt irgendeinen Quatsch aus irgendeinem Forum probiere - was sollte ich an der Stelle prüfen um das Problem zu beheben?
 
So habe ich die corosync.conf abgeändert:
Code:
logging {
  debug: off
  to_syslog: yes
}

nodelist {
  node {
    name: pve00
    nodeid: 1
    quorum_votes: 1
    ring0_addr: 192.168.40.20
  }
  node {
    name: pve01
    nodeid: 2
    quorum_votes: 1
    ring0_addr: 192.168.40.21
  }
}

quorum {
  provider: corosync_votequorum
}

totem {
  cluster_name: pvecluster
  config_version: 3
  interface {
    linknumber: 0
  }
  ip_version: ipv4-6
  link_mode: passive
  secauth: on
  version: 2
}
Dabei habe ich auch unter totem die linknumer: 5 entfernt, ist das mein Problem aktuell? Hätte ich das Netzwerk auf ring5_addr lassen sollen und die link0_addr Einträge entfernen?
Ich habe mich jetzt echt durch unzählige Dokus zu corosync gewühlt, aber ich werde da einfach nicht richtig schlau daraus.

Zur Info:
Code:
root@pve00:~# pvecm status
Cluster information
-------------------
Name:             pvecluster
Config Version:   4
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Wed Feb 22 21:04:57 2023
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          0x00000001
Ring ID:          1.2c
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.40.20 (local)
0x00000002          1 192.168.40.21
0x00000003          1 192.168.40.230

Der neue Node ist übrigens doch nicht richtig ansprechbar, ich sehe diesen zwar als online in der WebUI und kann die WebShell öffnen und sehe den Storage, aber sobald ich irgendetwas anderes anklicke kommt es zu einem Timeout auf dem Node.

EDIT:
journalctl -b -u pve-cluster
Code:
Feb 22 16:21:12 pve00 pmxcfs[5327]: [dcdb] notice: data verification successful
Feb 22 16:26:36 pve00 pmxcfs[5327]: [status] notice: received log
Feb 22 16:35:41 pve00 pmxcfs[5327]: [confdb] crit: cmap_dispatch failed: 2
Feb 22 16:35:41 pve00 pmxcfs[5327]: [quorum] crit: quorum_dispatch failed: 2
Feb 22 16:35:41 pve00 pmxcfs[5327]: [status] notice: node lost quorum
Feb 22 16:35:41 pve00 pmxcfs[5327]: [dcdb] crit: cpg_dispatch failed: 2
Feb 22 16:35:41 pve00 pmxcfs[5327]: [dcdb] crit: cpg_leave failed: 2
Feb 22 16:35:41 pve00 pmxcfs[5327]: [status] crit: cpg_dispatch failed: 2
Feb 22 16:35:41 pve00 pmxcfs[5327]: [status] crit: cpg_leave failed: 2
Feb 22 16:35:42 pve00 pmxcfs[5327]: [quorum] crit: quorum_initialize failed: 2
Feb 22 16:35:42 pve00 pmxcfs[5327]: [quorum] crit: can't initialize service
Feb 22 16:35:42 pve00 pmxcfs[5327]: [confdb] crit: cmap_initialize failed: 2
Feb 22 16:35:42 pve00 pmxcfs[5327]: [confdb] crit: can't initialize service
Feb 22 16:35:42 pve00 pmxcfs[5327]: [dcdb] notice: start cluster connection
Feb 22 16:35:42 pve00 pmxcfs[5327]: [dcdb] crit: cpg_initialize failed: 2
Feb 22 16:35:42 pve00 pmxcfs[5327]: [dcdb] crit: can't initialize service
Feb 22 16:35:42 pve00 pmxcfs[5327]: [status] notice: start cluster connection
Feb 22 16:35:42 pve00 pmxcfs[5327]: [status] crit: cpg_initialize failed: 2
Feb 22 16:35:42 pve00 pmxcfs[5327]: [status] crit: can't initialize service
Feb 22 16:35:48 pve00 pmxcfs[5327]: [status] notice: update cluster info (cluster name  pvecluster, version = 4)
Feb 22 16:35:48 pve00 pmxcfs[5327]: [status] notice: node has quorum

Mit dem Zertifikat scheint auch etwas nicht zu stimmen:
Code:
root@pve00:~# pvesh get /cluster/config/join --output-format json-pretty
'/etc/pve/nodes/pve02/pve-ssl.pem' does not exist!

EDIT2:
Ich vermute mein Fehler liegt irgendwo in der corosync.conf:
journalctl -u corosync.service
Code:
Jan 22 19:00:29 pve00 corosync[3895231]:   [TOTEM ] Configuring link 0
Jan 22 19:00:29 pve00 corosync[3895231]:   [TOTEM ] Configured link number 0: local addr: 192.168.123.1, port=5405
Jan 22 19:00:29 pve00 corosync[3895231]:   [TOTEM ] Configuring link 5
Jan 22 19:00:29 pve00 corosync[3895231]:   [TOTEM ] Configured link number 5: local addr: 192.168.40.20, port=5410
Jan 22 19:00:29 pve00 corosync[3895231]:   [KNET  ] host: host: 2 (passive) best link: 0 (pri: 1)
Jan 22 19:00:29 pve00 corosync[3895231]:   [KNET  ] host: host: 2 has no active links
Jan 22 19:00:29 pve00 corosync[3895231]:   [KNET  ] host: host: 2 (passive) best link: 0 (pri: 1)
Jan 22 19:00:29 pve00 corosync[3895231]:   [KNET  ] host: host: 2 has no active links

EDIT3:
Habe die corosync wie in diesem Post beschrieben editiert, da lag mein Fehler. Cluster ist online, Node3 hat den Clusterjoin selbstständig abgeschlossen und ist jetzt online!
Danke für deine Hilfe @Falk R. !
 
Last edited:
Gern geschehen.
P.S. der Fehler mit dem Zertifikat tritt im Moment auch auf wenn der Patchstand verschieden ist. Also alle Nodes am besten immer auf gleichem Stand halten und die GUI auf einem bereits geupdateten Node öffnen.
 

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!