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 ;)
Disable preempt sorgt dafür, dass nach einem Failover von Master auf Backup, wenn der Master wieder online kommt, *nicht* zurückgeschaltet wird.
Danke Patrick,
dann habe ich das die ganze Zeit falsch verstanden ;(
Jetzt macht das Ganze mehr Sinn.
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
"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.
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.
"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?
Kommt auf die Definition von "gesagt" an :-)
Der Master hat eine höhere Prio im CARP, deshalb "gewinnt" er immer.
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)
@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
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.
Super! Schönen Sonntag!
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 ;)