Zum Inhalt springen

Load-Balancing (Squid)


Empfohlene Beiträge

Hallo,

und zwar stehe ich vor folgendem Problem, ich muss unsere Webanwendung skalierbar machen.

Zurzeit läuft das alles nichtmehr so opti bei > 2800 Leute. Der Datenbankserver verträgt zwar noch einiges, bloß die beiden Webserver sind ziemlich ausgelastet.

Mein Ziel ist es 3 Webserver zu haben die erreichbar unter

www1.foobar.de

www2.foobar.de

www3.foobar.de sein sollen.

Die user sollen natürlich über www.foobar.de unsere Page erreichen.

Deswegen hatte mich jemand auf die Idee gebracht Squid als Reverse Proxy zu nutzen.

Wenn die dann den Squid-Server erreichen über (www.foobar.de), soll dieser die user einmalig(also für die komplette Session) auf einen der dreien weiterleiten.

Schön und gut es gibt tausende Tutorials, allerdings beschreiben all diese Tutorials wie man das Squid als Proxy-Server für ein internes Netzwerk laufen lässt um die Geschwindigkeit durch Caching zu optimieren ^^ Mein Problem ist natürlich ganz anders.

Gibt es hier jemand der auch Serveradmin ist und dies einsetzt?

Ich weiß das gmx sowas ähnliches, wenn nicht genau dies einsetzt.

Allerdings weiß ich nicht wie ich mein squid.conf dazu richtig einstelle, geschweigenden was für eine Leistung ich für diesen Server brauche?

Bin für jede Hilfe dankbar!

btw.

http_port 80 accel defaultsite=www1.foobar.de

http_port 80 accel defaultsite=www2.foobar.de

Habe ich irgendwo mal aufgeschnappt, ist das korrekt, wenn ja wie ist das Verhältnis? 1/1? Also ich denke da fehlt mir noch einiges :S

gruß Jens!

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du es nach der last verteilen willst, musste schon squid o.ä. bemühen, da hab ich mich allerdings noch nicht wirklich inensiv mit befasst, so dass ich hier dir keine große hilfe sein kann.

wenn es der reihe nach verteilt werden soll, reicht dafür eine entsprechende zone auf dem ns:

[...]

www in a 12.34.56.11

www in a 12.34.56.12

www in a 12.34.56.13

www in a 12.34.56.14

[...]

nun wird der ns bei jeder anfrage die jeweils nächste ip aussprucken.

mfg, chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

und das ganze ist unabhänig von der konfiguration des Nameservers?

Er wird also immer alles der Reihe nach durchprobieren?

Verweilt derjenige dann auch die ganze Zeit auf diesen Server oder wird das immer der Reihe nach, nach jedem Request abarbeitet?

danke schonmal!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das mit Pund hört sich schon sehr gut an wie ich finde.

- keine Plattenbeanspruchung

- kein Caching

- Session Mitnahme

- Load-Balancer

exakt das was ich suchte! Danke nochmal.

Ich habe allerdings noch eine sehr dumme Frage, allerdings will ich mir das sicher sein:

Der Traffic wird definitiv von den Backend-Servern verursacht?

Nicht das mein armer reverse proxy dann alle responses weiterleitet

Und das andere:

Haltet ihr die Kiste für Pound für ausreichend:

AMD Athlon 64 3700+

1 GB DDR400 RAM

--------------------

Lässt sich der entstehende Traffic grob schätzen, berechnen?

An Spitzentagen ca. 3,2 Millionen Requests.

Wenn die Kiste wirklich nur alles forwarded leite ich das mal grob von der normalen access_log ab und nehm das ganze mal zwei (3GB * 2) 6GB täglich?

Danke und gruß

Jens

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe allerdings noch eine sehr dumme Frage, allerdings will ich mir das sicher sein:

Der Traffic wird definitiv von den Backend-Servern verursacht?

Nicht das mein armer reverse proxy dann alle responses weiterleitet

Alle Anfragen und Antworten werden "durch" den Load-Balancer "geschleußt".

Daher kommt es bei dieser Box auf drei wesentliche Faktoren an:

- Netzwerk (min. Fast-Ethernet, eher Gigabit)

- schnelle CPU

- viel Speicher

Und das andere:

Haltet ihr die Kiste für Pound für ausreichend:

AMD Athlon 64 3700+

1 GB DDR400 RAM

--------------------

Diese erfüllt mindest schon mal zwei Anforderungen, damit sollte es meiner Meinung nach gut laufen.

Lässt sich der entstehende Traffic grob schätzen, berechnen?

An Spitzentagen ca. 3,2 Millionen Requests.

Wenn die Kiste wirklich nur alles forwarded leite ich das mal grob von der normalen access_log ab und nehm das ganze mal zwei (3GB * 2) 6GB täglich?

Ja, grob überschlagen kommt das hin.

Halt mich mal auf dem Laufenden, wie es mit der Sache vorran geht.

Gruß,

Lordy

Link zu diesem Kommentar
Auf anderen Seiten teilen

okay, danke für die schnelle Hilfe!

Bis ich das ganze umsetzen kann werden noch 2 Monate vergehen, da bis dahin ein paar Verträge erst auslaufen.

Halte dich/euch aber auf dem laufenden.

Also ist mit dem "durchschleußen" soweit ich das herrauslesen kann gemeint das die eigentlichen Anfragen/Antworten durch den Balancer fließen und nicht der gesamte Traffic (Bilder,.html .php etc) Bei ca. 80-90GB täglich wäre das Problematisch weil wir genau deswegen Probleme mit unserer Schnittstelle zur Hauptzeit kommen.

Die gesamte Infrastruktur befindet sich ja in einem Rechenzentrum da müsste ich mal nachfragen wie das mit einer GBit Schnittstelle aussehen würde. Warscheinlich lassen die sich das gut bezahlen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ist mit dem "durchschleußen" soweit ich das herrauslesen kann gemeint das die eigentlichen Anfragen/Antworten durch den Balancer fließen und nicht der gesamte Traffic (Bilder,.html .php etc) Bei ca. 80-90GB täglich wäre das Problematisch weil wir genau deswegen Probleme mit unserer Schnittstelle zur Hauptzeit kommen.

Es geht normalerweise ALLER Traffic durch die Load-Balancer (also inkl. Bilder) und Co. Wenn du das vermeiden willst kannst du z.B. wie eBay den statischen Content (Bilder) auf einen seperaten Server mit einem möglichst flinkenen HTTPD (also nicht Apache) auslagern.

Vielleicht solltest du hier nochmal genauer erläutern, wo das Nadelöhr ist (oder wo man es vermutet), damit hier nicht an der falschen Stelle operiert wird.

Die gesamte Infrastruktur befindet sich ja in einem Rechenzentrum da müsste ich mal nachfragen wie das mit einer GBit Schnittstelle aussehen würde. Warscheinlich lassen die sich das gut bezahlen ;)

Ist natürlich keine Pflicht. Wir haben hier bei uns ein internes Setup, bei dem die Webserver mit Fast- und die Load-Balancer mit Gigabit-Ethernet angebunden sind, damit man das Fast-Ethernet zum Backend wirklich ausnutzen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ahh okay, dann läuft also doch alles über den Balancer.

Naja dann müssten wir bei unserem RZ-Betreiber doch nach einem speziellen Tarif nachfragen.

Der Flaschenhals befindet sich bei uns eindeutig am Server. Wir nutzen zwar je 2 Opteron 246er mit je 4GB RAM. Doch bekommen wir Probleme bei 3000 Leute auf dem Webserver. Dazu haben wir auch schon unseren statischen Content teilweise ausgelagert. light-httpd bietet sich dazu super an, da hast du recht mit dem apache der ist da nicht opti.

Der Ärger äußert sich durch Packet Drops seitens des Kernel und beide Prozessoren sind auch ziemlich gut ausgelastet, trotz PHP-Beschleuniger und vieler anderen Optimierungsmaßnahmen. Der Datenbankserver läuft weiterhin optimal.

Da ich auch etwas in die Zukunft blicken möchte werden wir wohl oder übel irgendwann nichtmehr mit einem Webserver auskommen und da ich selber auch Erfahrungen sammeln möchte, kommt mir das Thema Load-Balancing gerade richtig.

Werde ich erstmal bei unseren Provider anfragen ob dieser uns die Traffic-Kontigents überhaupt umlenkt, sonst wäre das eine teuere Angelegenheit ;)

gruß Jens

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 8 Monate später...

Huhu,

soo habe den Thread mal wieder ausgegraben :P

Da es jetzt endlich weiter vorrangeht mit der Planung.

Kleiner Zwischenstand:

Mittlerweile sinds fast 5000 Leute zur Hauptzeit..

Jetzt ist denke ich mal endlichgültig ne Grenze erreicht wo nix mehr an der Performance zu schrauben geht.

<offtopic>

Wenn ich schon gerade einen Post schreibe ;)

Komischerweise tritt bei viel Last (ca. 800Requests/s Durchschnitt vom Apache) das Phänomen auf, das ich in

/var/log/messages bzw. syslog (Habe Syn Cookies aktiv) die Meldung bekomme

"TCP Possible SYN Attack, Sending SYN Cookie"

Immer wenn das passiert, (tritt dann zur Hauptzeit, genau bei der max. Last sehr oft auf) Dann spielt das ganze System sprichwörtlich verrückt. Die Performance sinkt massivst in den Keller. Ladezeiten von über 20-30 Sekunden teilweise. Ich kann nichts machen, die Logs schweigen vom Apache. Irgendwann fängt sich das System wieder. Meist aber nach mehreren Minuten erst. (Wenn manche Leute aus Frust wohl die Seite verlassen haben...)

Es ist immer nur die Meldung im syslog vom Sending Cookie.

Eine TCP SYN Flooding Attacke kann ich ausschließen, da ich diesbezüglich schon mehrere Mitschnitte mittels netstat gemacht und ausgewertet habe.

Wenn das jemand bekannt vorkommt, würde mich über eine Antwort freuen

</offtopic>

Um zurück zum Thema zu kommen:

Die Ausfälle & Performance stinken gewaltig:P

Es muss eine Load-Balancing Möglichkeit her.

Und zwar würden wir gerne richtig "pimpen"

Ihr hattet mir ja schon zu Pound geraten, was mich persönlich auch überzeugt.

Allerdings möchte mein Freund dem die Firma gehört, einen Ausfallsicheren Load-Balancer haben.

Und zwar in dem Sinne das es nicht 1x Load-Balancer der startk redundandt ausgelegt ist regelt sondern wenn möglich 2x Maschinen, wo sich gegenseitig überwachen und bei Ausfall reagieren können und die IP übernehmen.

Oder anderst ausgedrückt. Gibt es irgendwie die Möglichkeit beide Maschinen mit der selben IP auszustatten?!? Das irgendwie über eine getrunkte Leitung zu steuern?? Oder irgendwas dergleichen. Oder würdet ihr das mittels eines Scripts lösen das dann die IP des anderen Server übernehmen kann? (Reicht das?) Oder kann man das bei einem managbaren Switch konfigurieren?

Im Load-Balancing Bereich habe ich leider keine praktische Erfahrungswerte. Auch was die Hochverfügbarkeit betrifft.

Noch eine wichtige Frage hätte ich:

Warum benötigt der Load-Balancer viel RAM? Bzw. der Pound (wie weiter oben geschrieben)

Laut Software ist ja kein Caching implementiert. Daher verstehe ich nicht warum die Kiste eine schnelle CPU und viel RAM benötigt?

Gut was hinzukommt: Ich würde gerne Snort im Load-Balancer zusätzlich einsetzen. Ratet ihr mir davon ab oder dürfte das an der Geschwindigkeit bei einem ausreichend dimensionierten Server ausreichen?

Vielen Vielen Dank, wer sich bei diesem langen Text noch traut zu antworten, an alle anderen aber auch ;)

gruß Jens

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal zu deinem Off-Topic Problem:

Um herauszufinden, ob die Ursache wirklich die TCP-Syn-Cookies sind, würde ich diese mal für min. 1-2 Tage abschalten.

echo 0 > /proc/sys/net/ipv4/tcp_syncookies

Danach kann man dann weiter sehen.

Zum Thema Hochverfügbarkeit:

Wenn du hier ein Active/Active Cluster haben willst würde ich vorschlagen, das über Linux-HA zu realisieren. Jeder LB sollte dabei eine eigene öffentliche Adresse bekommen, die der Partner beim Ausfall übernimmt. Ins DNS würden dann entsprechend beide Adresse kommen. Mit einem Active/Passive Cluster ist das natürlich einfacher...

Zum Thema Hardware:

Da die LBs ja im Zweifelsfall jede Menge Verbindungen verwalten muss ist besonders ein großer Speicher sinnvoll und die Reaktionszeit möglichst gering zu halten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meinstest du mit Linux-HA

Einen "High Availability" Server der möglichst redundant und stabil ausgelegt sein sollte?

Oder etwas anderes.

Das heißt quasi das man bei Ausfall der einen Maschine, beide IP's die andere Maschine annimmt.

Der Vorteil wäre ja auch das hier die Last auf beiden LB's verteilt ist.

Danke & gruß

Jens

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...