CARP active/active Konfiguration funktioniert nur mit ICMP aber nicht mit HTTP

Hallo,

ich möchte mit CARP ein Loadbalancing für 2 Webserver machen. Die VIP Adresse ist auch per ICMP erreichbar und tcpdump zeigt mir das ICMP auf beiden Hosts ankommt.

Wenn ich jedoch http teste bekomme ich immer nur Host B angezeigt und nach dem 5-6 test dauert der Abruf ewig. Habe ich etwas vergessen? Hier meine aktuelle config
Code:
#Host A
ifconfig inet 192.168.10.10/32
route add 192.168.10.1 -llinfo -link -iface re0
route add default 192.168.10.1

ifconfig carp0 10.10.10.10/32 carpdev re0 carpnodes 1:0,2:100 balancing ip-stealth
sysctl net.inet.carp.preempt=1


#Host B
ifconfig inet 192.168.10.11/32
route add 192.168.10.1 -llinfo -link -iface re0
route add default 192.168.10.1

ifconfig carp0 10.10.10.10/32 carpdev re0 carpnodes 1:100,2:0 balancing ip-stealth
sysctl net.inet.carp.preempt=1
 
Also in der Theorie sollte sowas schon funktionieren, ich hatte mit Linux auch lange Zeit so ein Setup. Leider fehlt mir von CARP der Plan.
 
Ich kenne mich mit CARP nicht aus, aber kann es sein, dass du da wieder in Probleme mit deinen strikten Netzmasken rennst?
Irgendwie müssen die beiden Hosts ja kommunizieren um die CARP-Nachrichten auszutauschen, im Moment geht das alles über das default gw statt direkt ins Segment, vielleicht liegt es daran.

Rob
 
Stimmt, kann das dann überhaupt klappen wenn die VIP Adresse in einem anderen Netz ist? Also ja klar, wenn dazwischen nicht gerouted wird, sollte es dennoch klappen, aber vielleicht verwirft der TCP Stack oder die FW dann die Pakete? Probier doch mal im gleichen Netz.
 
Ich kenne mich mit CARP nicht aus, aber kann es sein, dass du da wieder in Probleme mit deinen strikten Netzmasken rennst?
Irgendwie müssen die beiden Hosts ja kommunizieren um die CARP-Nachrichten auszutauschen, im Moment geht das alles über das default gw statt direkt ins Segment, vielleicht liegt es daran.

Rob
Hi,

ich habe mittlerweile einen deutlich simpleren setup leider mit dem gleichen Ergebnis.

Code:
#Host A
ifconfig inet 10.66.6.10/24
route add default 10.66.6.1

ifconfig carp0 10.66.6.21/24 carpdev em0 carpnodes 1:100,2:0 balancing ip-stealth
sysctl net.inet.carp.preempt=1


#Host B
ifconfig inet 10.66.6.11/24
route add default 10.66.6.1

ifconfig carp0 10.66.6.21/24 carpdev em0 carpnodes 1:0,2:100 balancing ip-stealth
sysctl net.inet.carp.preempt=1

Der Testserver hat die 10.66.6.101/24 . Alles an einer Bridge.
 
Ich hab mit carpnodes noch nicht gearbeitet.. was ich so aus der manpage lese, laesst mich
gerade zweifeln, ob die gezeigte combo (vhid 1 master, vhid 2 backup auf hostA und vice-versa auf hostB)
in verbindung mit pre-empt ueberhaupt "sinn macht".

kannst du das mal "klassisch" confen: explizit vhid 1 und advskew (ohne carpnodes), dann vhid 2. Dann
"verdrehst" du mal advskew fuer vhid2 .. und das mal mit preempt=0 und dann mit =1.

(der annahme fehler koennte am "was tut preempt" liegen)
 
hi


preemption sollte aktiviert werden wenn man will das der backup , wenn er master ist,
wieder automatisch backup wird wenn der master wieder aktiv ist.
( auto fallback quasi )

unterstützt freebsd carp überhaupt eine active / active setup ?

openbsd macht ein IP balancing , jedoch muessen einige
voraussetzungen erfüllt sein das mit das funktioniert
siehe man 4 carp ( openbsd ).

ich wuerde fuer das gewünschte setup auch definitiv relayd nutzen da der daemon
pf verwendet und hier sollte dann auch pfsync akitiv sein.


Holger
 
Mit CARP stellst du eine (!) virtuelle IP bereit. Wie soll die denn an zwei Servern gleichzeitig ohne Kollision aktiv sein können?

Das meinte ich. CARP ist da einfach das falsche Protokoll, auf dem falschen Layer mit einer anderen intention.

Bestimmt kann man mit ganz viel NAT usw da was basteln.

(Zu deiner Frage: Single Point of Failure: Wenn ich dein Konzept richtig lese, ist das bei dem jetzigen doch auch der router? Magst du das sonst evtl. mal genau aufzeichnen was du vorhast?)
 
Der einfach Aufbau und wie ich ihn kenne:
Beispielnetz 192.168.10.0/24
Davon der Gateway 192.168.10.1/24
HostA CARP 192.168.10.11/24
HostA pfSync 10.0.0.11/32
HostB CARP 192.168.10.12/24
HostB pfSync 10.0.0.12/32

Sie pingen und syncen die states über das andere 10er Netz. Für nen Testaufbau kann man das via vlan lösen, besser ist aber eine dedizierte Direktleitung.
Gesetzt den Fall, dass man die virtuelle IP 192.168.10.10/24 wählt, dann prallt der traffic bei 192.168.10.10 HostA auf. Stirbt HostA, prallt der traffic weiterhin bei 192.168.10.10, aber HostB auf. Also active-backup. Dementsprechend bindet man weitere Dienste an diese eine virtuelle IP, auch das balancing via haproxy an weitere nachgelagerte Server.

Es scheint aber wirklich einen balancing-mode mit CARP direkt zu geben, sodass aus dem active-backup ein round-robin wird.
 
Hallo,

ja das CARP von openbsd kann load Balancing (https://man.openbsd.org/carp.4 => EXAMPLES => LOAD BALANCING, hier habe ich auch das Beispiel her) hierfür gibt es auch ein paar Dokus nur sind die halt alle für Firewalls und nicht für Webserver Cluster, auch scheint das nur bei openbsd zu gehen nicht bei freebsd und nicht bei linux. Mit ICMP gehts ja auch nur halt nicht http. Auch active / backup geht tadellos.

@mr44er wofür benötige ich pfsync ? Wenn ich zumindest erstmal keine firewall rules habe ?
 
wofür benötige ich pfsync ? Wenn ich zumindest erstmal keine firewall rules habe ?
Die Pings, ob die Gegenstelle noch 'lebt'. Woher soll HostB wissen, dass er jetzt übernehmen soll? (im active-backup Modus)

In diesem balancing modus, den ich aber nicht kenne, erscheint das freilich unnötig.
 
Die Pings, ob die Gegenstelle noch 'lebt'. Woher soll HostB wissen, dass er jetzt übernehmen soll? (im active-backup Modus)

In diesem balancing modus, den ich aber nicht kenne, erscheint das freilich unnötig.
Nicht falsch verstehen. Ich wollte es nur verstehen. Danke für die Info. Ich werde jetzt mal zusätzlich pfsync einrichten vielleicht liegt es daran.
 
Ne, alles gut. Hab das nicht in den falschen Hals bekommen. ;)
Ich hab jetzt direkt auch keine explizite Aussage gefunden, ob die pings tatsächlich darüber laufen...händisch hab ich das auch noch nicht eingerichtet, nur eben mit OPNsense durchgeklickert.
 
was soll ich sagen ,

eigentlich wird das active / active thema mit loadbalancing sehr gut in der
man page von openbsd beschrieben , eben auch wie es funktioniert.

man 4 carp

und ja carp selbst benötigt kein pfsync aber wenn ich in der kombination
openbsd active / active loadbalancer aufsetzen will , kommt
pf , carp , relayd und eben pfsync zum einsatz.

wenn man dann weiß wie relayd funktioniert weiß man auch warum.

Holger
 
Jaja.. aber das ist Schritt "3". Mein Einwand: Solange noch nichtmal die CARP "basics" funktionieren, hakelt man nicht extra Dinge dran - in Erwartung, dass dann die Basics funktionieren.
 
hi

ich wuerde erstmal fragen :
  • welchen switch verwendest du ?
  • was sieht der switch bezüglich der virtuellen mac addr ?
  • funktioniert active / passive ?
  • schon mal ip oder ip-unicast statt ip-stealth probiert ?

Holger
 
hi

ich wuerde erstmal fragen :
  • welchen switch verwendest du ?
  • was sieht der switch bezüglich der virtuellen mac addr ?
  • funktioniert active / passive ?
  • schon mal ip oder ip-unicast statt ip-stealth probiert ?

Holger
1.) welchen switch verwendest du ?
- Meine Testumgebung ist eine Linux bridge und qemu vms.

2.) was sieht der switch bezüglich der virtuellen mac addr ?
Die virtuelle mac an beiden Ports

3.) funktioniert active / passive ?
=> Ja tadellos
4.) schon mal ip oder ip-unicast statt ip-stealth probiert ?
=> Jaein ip geht gar nicht ip-unicast habe ich nicht probiert.
 
Zurück
Oben