Frage zu CARP preempt

Started by trixter, January 31, 2025, 09:33:59 AM

Previous topic - Next topic
January 31, 2025, 09:33:59 AM Last Edit: January 31, 2025, 09:35:42 AM by trixter
Moin,

habe eine Frage zu Preempt,

kann mir jemand sagen, ob ich da was falsch verstehe:

Eignentlich soll die Einstellung "Disable preempt" doch die Standby-FW auf Backup halten ?

Kommt leider öfter vor dass einzelne Interfaces aus der Reihe tanzen und einige eben nicht beim Master bleiben / dahin zurück-springen, obwohl dieser verfügbar ist...

Irgendwas läuft da also noch nicht ganz sauber.

Hat jemand eine Idee / das vielleicht auch schon gesehen?

Danke fürs Mitgrübeln ;)
VMW / PMX / PFS / OPS

Disable preempt sorgt dafür, dass nach einem Failover von Master auf Backup, wenn der Master wieder online kommt, *nicht* zurückgeschaltet wird.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Danke Patrick,

dann habe ich das die ganze Zeit falsch verstanden ;(

Jetzt macht das Ganze mehr Sinn.
VMW / PMX / PFS / OPS

https://man.freebsd.org/cgi/man.cgi?carp(4)

net.inet.carp.preempt           Allow virtual  hosts  to  preempt
                    each other.  When enabled,   a vhid
                    in   a backup state would preempt a
                    master  that is announcing   itself
                    with a lower  advskew.   Disabled
                    by   default.


For firewalls and routers with multiple interfaces, it is desirable  to
       failover    all  of  the addresses   running   carp together, when one   of the
       physical   interfaces goes   down.  This is achieved   by the use of the pre-
       empt option.  Enable it on both hosts A and B:

        sysctl net.inet.carp.preempt=1
Hardware:
DEC740

"When this device is configured as CARP master it will try to switch to master when powering up, this option will keep this one slave if there already is a master on the network. A reboot is required to take effect."

Hatte das so verstanden, dass die Sense mit Haken nach einem Boot nicht als Master hoch kommt und Slave bleibt, solange ein Master online ist.
VMW / PMX / PFS / OPS

Genau. Die Firewall, die zufälligerweise gerade Master ist, bleibt es, bis man sie z.B. rebootet. Mit preempt wird der konfigurierte Master immer diese Rolle übernehmen, sofern er online ist.

Ohne preempt heißt bei anderen Produkten auch mal peer to peer.

Da bei OPNsense die Konfiguration nur in einer Richtung synchronisiert wird, ist es m.E. besser mit fest zugeordneten Rollen, also mit preempt.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

"Da bei OPNsense die Konfiguration nur in einer Richtung synchronisiert wird, ist es m.E. besser mit fest zugeordneten Rollen, also mit preempt."

Also im Umkehrschluss: Der Slave ist Slave, weil er vom Master gesagt bekommt, dass er online ist?
VMW / PMX / PFS / OPS

Kommt auf die Definition von "gesagt" an :-)

Der Master hat eine höhere Prio im CARP, deshalb "gewinnt" er immer.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

January 31, 2025, 10:35:36 PM #8 Last Edit: January 31, 2025, 11:02:22 PM by Monviech (Cedrik)
Vielleicht lese ich die man page anders als ihr, aber ich verstehe es so, dass ohne preemt nur ein Interface wechseln kann, ohne dass die anderen Interfaces auch wechseln.

Mit aktiviertem preempt wechseln alle interfaces, sobald ein interface ein down event hat.

Wer Master und Backup wird entscheidet die advskew, wenn beide Firewalls CARP Multicasts senden, und in der gleichen vhid einer die höhere advskew hat, gewinnt der mit der niedrigsten.

Das bedeutet der mit der niedrigsten advskew in einer vhid Gruppe wird immer Master werden, wenn kein anderer auch mit einer niedrigeren advskew sendet.

Im Falle OPNsense ist 0 und 100 eingestellt. Der mit 0 wird immer gewinnen sobald er wieder online kommt. Und da preemnt an ist, /müssen alle/ interfaces wechseln, nicht nur eins.

(Demotion Faktor spielt auch eine Rolle)
Hardware:
DEC740

@Monviech, du hast wahrscheinlich Recht. Die Doku sagt auch:

QuoteBy default this option is deselected, which is the advised scenario for most common HA setups. The preempt option make sure that multiple carp interfaces will act as a group (all backup or master) at the same time, assuming no technical issues exist between both.

Die Online-Hilfe, auf die ich mich bezog sagt allerdings folgendes:

QuoteWhen this device is configured as CARP master it will try to switch to master when powering up, this option will keep this one slave if there already is a master on the network. A reboot is required to take effect.

Das ist genau das, was ich von anderen Produkten, vor allem der Sidewinder kenne. Man hat entweder dediziert einen Master und ein Backup-System. Und wann immer der Master bootet, übernimmt er auch diese Rolle.

Oder man hat ein Peer-to-Peer (so hieß das bei der Sidewinder) Setup - wer auch immer zuerst bootet und "bereit" ist, wird Master. Das hat einen großen Vorteil bei einem Update: es kommt nur einmal zu einem Failover und nicht zweimal.
Das bedingt aber auch technisch, dass es irgendeine Art von versionertem Cluster-Management und nicht nur einen XLMRPC-Sync in einer Richtung gibt. Wenn jeder Node jederzeit die Firewall sein kann, an der man per UI rumkonfiguriert, dann muss eben in beiden Richtungen synchronisiert werden. Sidewinder konnte das.

Da du inzwischen von Deciso bezahlt wirst, mach ich das jetzt mal zu deinem Job, herauszufinden, was tatsächlich Sache ist, und ggf. die Doku oder die Online-Hilfe anzupassen.

Ergänzend noch - es geistert da ja noch ein Thread rum mit ähnlichen Themen - CARP ist ein "link local" Protokoll. 2 oder mehr Peers schießen per Interface aus, wer gerade eine oder mehrere CARP IP-Adressen hat und darauf antwortet. Nicht mehr und nicht weniger. Das passiert auf jedem Interface unabhängig von allen anderen.

Die Einstellungen in System > High Availability > Settings haben damit überhaupt nichts zu tun (also bis auf das "preempt"-Zeugs), die betreffen einzig und allein die Synchronisation der Konfiguration. Die beiden Nodes sprechen nicht "CARP" auf dem HA-Interface und definieren da irgendwas. Über das HA-Interface passieren nur Konfiguration- und pf-Sync.

HTH, bin auch gespannt was bezgl. preempt nun raus kommt. Kümmerst du dich, oder soll ich einen Github-Issue aufmachen? Doku und Online-Hilfe widersprechen einander würde ja für einen Bugreport reichen.

Liebe Grüße
Patrick
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

February 01, 2025, 10:44:37 PM #10 Last Edit: February 01, 2025, 10:47:56 PM by Monviech (Cedrik)
Das CARP wird durch sysctl Werte gesteuert.

Wenn man die Checkbox für preempt an und aus schalted, dann dürfte sich also "net.inet.carp.preempt" auf 1 oder 0 schalten.

Und dieser Wert ist in der carp man page sehr genau erklärt mit der genauen Anwendung.

Ob da irgend was mehr passier als nur die reine sysctl Steuerung müsste man mal im Code nachschauen bzw fragen.

Ich schau mal nächste Woche nach, oder Franco liest das hier und sagt was dazu.
Hardware:
DEC740

Super! Schönen Sonntag!
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Quote from: Monviech (Cedrik) on January 31, 2025, 10:35:36 PMVielleicht lese ich die man page anders als ihr, aber ich verstehe es so, dass ohne preemt nur ein Interface wechseln kann, ohne dass die anderen Interfaces auch wechseln.


Danke für die Info, das ist wichtig zu wissen.
Hatte mich schon gefragt, ob und wie man alle Interfaces zum wechseln bringt - eine FW die nur "halb" online ist, ist eben nur halb so sinnvoll ;)
VMW / PMX / PFS / OPS