WinFuture-Forum.de: Loadbalancing Entwurf - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Loadbalancing Entwurf meinungen zu meinem loadbalancing entwurf


#1 Mitglied ist offline   Globestern 

  • Gruppe: aktive Mitglieder
  • Beiträge: 95
  • Beigetreten: 13. Juli 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 26. Juli 2006 - 22:40

Eingefügtes Bild

sorry für die hässliche graffik ^^

also das ganze mal erklärt:

(clients sollten ja klar sein - sind ca. 20k / tag atm -> tendenz steigend)

als empfang sollte der startseite server stehen - dieser empfängt die besucher und blockt die unerwünschten via geo2ip mod für apache (ich möchte keine nicht deutsch sprechenden user - 1) oft sind dies bots eines ddos netzwerks 2) wird meine werbung nicht vergüetet)

diese startseite sollte über die TLD erreichbar sein - also www.beispiel.de
die startseite besteht aus reinem html / css / png + apache mod

die beiden unterseiten (forum & haupseite sollten nur über die enterseite zu erreichen sein und nicht über www.beispiel.de/wbb2 bzw. www.beispiel.de/hauptseite - dies stellt ein ref-checker sicher - falls die user nicht von der startseite kommen werden sie auf diese weitergeleitet und so auf den startseiten server welcher die user wieder nach location filtert)

für das forum möchte ich einen etwas schwächeren server verwerden.

für die hauptseite möchte ich 2 leistungsstarke server nehmen auf welche dann per php random ausgewählt werden.. auf diese sollte man auch nur erreichen können über die startseite..

was meint ihr zu diesem vorhaben? :D
Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 26. Juli 2006 - 23:12

uff ein loadbalancer in php. ganz schlechte idee. dann auch noch apache auf der kiste.
edit: achso, du meinst mit loadbalancer eine weiterleitung des webserver an einen anderen server. idR wird mit loadbalancer bei webservern aber die weiterleitung eines requests an einen von vielen webservern aus einen pool (also direkt der die http-verbindung, wie in einem http-proxy) bezeichnet.

toby hat auf den winfuture servern vor ner ganzen weile apache gegen lighttpd ersetzt (und ja, wir haben davor schon einen objectcache verwendet) und damit die loadprobleme die wir davor hatten in vergessenheit geraten lassen.

also 20k clients / tag sollten eigentlich mit einer maschine locker machbar sein. ich weis natuerlich nicht, was fuer forensoftware da nun laeuft, aber so pi mal daumen wuerd ich sagen, np.

wenn du wirklich loadbalancing machen willst oder musst, besorg dir lieber einen richtigen loadbalancer :D
http://www.google.de...tp+loadbalancer

ich wuerd ausserdem die geoip-filterung auf einem der webserver, auf die balanced wird machen. das ding is sicher nich gerade schnell.
I'm mó. mo's good twin.
0

#3 Mitglied ist offline   sgfx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 141
  • Beigetreten: 20. Februar 05
  • Reputation: 0
  • Geschlecht:Weiblich

geschrieben 27. Juli 2006 - 00:01

sry, aber "what the hell" ist ein loadbalancer, verteilt der die serverbelastung, oder wozu ist der gut? :D
0

#4 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 27. Juli 2006 - 01:15

http://de.wikipedia...._Load_Balancing
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#5 Mitglied ist offline   Globestern 

  • Gruppe: aktive Mitglieder
  • Beiträge: 95
  • Beigetreten: 13. Juli 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 27. Juli 2006 - 09:51

Beitrag anzeigenZitat (mo: 27.07.2006, 00:12)

toby hat auf den winfuture servern vor ner ganzen weile apache gegen lighttpd ersetzt (und ja, wir haben davor schon einen objectcache verwendet) und damit die loadprobleme die wir davor hatten in vergessenheit geraten lassen.


ich brauch leider wegen div. dingen apache 2.2 :)

Beitrag anzeigenZitat (mo: 27.07.2006, 00:12)

also 20k clients / tag sollten eigentlich mit einer maschine locker machbar sein. ich weis natuerlich nicht, was fuer forensoftware da nun laeuft, aber so pi mal daumen wuerd ich sagen, np.


jo die maschine packt das locker.. aber die shice ddos attacken welche teilweise über 100mbit stark sind belasten das system zu stark ;) zudem möchte ich auch für 100k besucher gut gerüstet sein ;)

Beitrag anzeigenZitat (mo: 27.07.2006, 00:12)

wenn du wirklich loadbalancing machen willst oder musst, besorg dir lieber einen richtigen loadbalancer ;)
http://www.google.de...tp+loadbalancer

ich wuerd ausserdem die geoip-filterung auf einem der webserver, auf die balanced wird machen. das ding is sicher nich gerade schnell.


jo die echten loadbalancer sind leider sauteuer ;) und da ich keine co-lo hab gestaltet sich das zudem ncoh ein wenig schwerer ;)

also die geoip filterung hab ich extra auf dem startseiten server gemacht, da dieser wirklich sehr sehr wenig ausgelastet wird durch im gesammten vielleicht 100kb grosse html / css / png files.. von daher dürfte er schon noch den geoip mod vertragen ;)

die beiden server mit der hauptseite verschohne ich bewusst.. da dort php / mysql laufen müssen u.s.w. ;)
Eingefügtes Bild
0

#6 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 05. August 2006 - 01:35

Ein Loadbalancer über ein System das gerade an Überlassung krankt ist keine Lösung. Es bringt nichts ein System durch das gleiche zu ersetzen, nur weil man davon ausgeht das es weniger Last durch weniger "Skripts" hat.

Wenn du dir keine hardwareseitige Balancinglösung leisten kannst, bleibt dir evtl noch ein "Balancing" über DNS, auch wenn du darüber nicht steuern kannst welcher Client welchen Host erreicht.

Generell sollte man erstmal folgende Überlegungen durchgehen:

1) Lassen sich größere Dateien, wie z.b. PDFs, Grafiken etc auf seperate Server auslagern, die nur zur Auslieferung zuständig wären? (z.B. ein Bilderserver ganz ohne PHP installation. Ein Downloadserver für kleinere Dateien wie PDFs, EXE, RARs. Ein Downloadserver für relativ Textdateien, die dennoch immer häufig abgefragt werden, wie z.B. CSS-Dateien. All das auch in der Reihenfolge. 100 Clients die 100 Apache-Slots blockieren, weil sie nen 100kb Logo laden, sind 100 Plätze die niemand anderes nutzen kann. Man selbst kann auch nicht sagen das sollten sie doch in 2 Sekunden schaffen, denn wenn sie mit ISDN kommen, blockieren sie den Slot für mehr als 5 Sekunden.

2) Ist genug CPU-Power vorhanden? Denn selbst 100 Seiten auszuliefern, die Response-Code 500 liefern, verbrauchen CPU, was den anderen 1200 Anfragen wieder fehlt und sich zu einer Todesschleife entwickelt.

3) Es ist keine Lösung mehr Apache-Server hinzustellen und zu sagen ein MySQL-Server sei genug. 5 Webserver erhöhen die Last eines MySQL-Servers um mehr als nur 400%. Hinzukommt der zusätzliche Netzwerktraffic, Verbindungshandling etc. Ein Apache 1.x schafft 1.000 Auslieferungen pro Minute bei einem guten Script. Ein Apache 2.x evtl 1.400. Ein MySQL der vielleicht nur 2 CPUs/Cores hat schafft eventuell 100 gleichzeitige Queries. Alles darüber bricht in eine Endlosschleife. Denn: Was soll MySQL tun? Läßt man nur 100 Verbindungen zu, muss man zusehen das alle Abfragen schnell ausgeführt werden, im Query-Cache hängen oder anderweitig gecached sind. Überschreitet es eine magische Grenze (ich gehe immer von 100 aus) so kommt der Kreislauf der auch beim Apache vorhanden ist: Um 100 gleiche Queries auszuführen braucht die CPU, sagen wir, 4 Sekunden. Jetzt sind in den letzten 2 Sekunden weitere 20 Seitenaufrufe gekommen, die jeweils 3 Queries benötigen. Schon haben wir 160 Queries und die CPU benötigt noch immer 4 Sekunden... nur diesmal für 40 Queries, denn die restlichen 120 Queries rauben die CPU-Kraft. Das ganze führt dann unweigerlich früher oder später zu einem nicht reagierenden MySQL-Server.

4) Performance-Tests sind sehr wichtig. Seeeehr wichtig. Wenn PHP5 nicht benötigt wird, PHP4 die geforderten Abfragen 0.2 Sekunden schneller macht, warum dann PHP5 einsetzen? Generell braucht ein gutes PHP-Skript 0.005 Sekunden. Das herstellen einer Verbindung zu einer Datenbank dauert 0.4 Sekunden. Abfragen sollten nicht länger als 3 Sekunden dauern, alles darüber muss optimiert werden. D.h. allein eine Verbindung zu MySQL über PHP braucht schonmal locker 0.5 Sekunden, wenn man das PHP-Skript noch dazu rechnet. Läßt es sich vermeiden? Ein unserialize von statischen Cache-Dateien dauert weit unter 0.00x Sekunden.

Im Grunde alles popelige Dinge. Hauptsächlich aus Erfahrungen mit Projekten die im Durchschnitt 420k Zugriffe pro Tag und durchschnittlich 80% dieser Zugriffe innerhalb von 8 Stunden hatten. Basierend auf 7 Webservern, die mit über 10 solcher Projekte belastet sind, mit 3 MySQL-Servern. Die größten Schwierigkeiten bereitet von Zeitaufwand allerdings der MySQL-Server-Bereich. Jede Größenordnung an Projekt kommt entweder auf die 2xIntel, den 4xXeon oder den 16xXeon.

Wenn du mit DDoS-Attacken zu kämpfen hast... hilft dir leider nur eine gute Firewall, ohne die eigentlich eh nichts laufen sollte. Auch durch einige Skriptsicherungen läßt sich hier lediglich der verursachte Traffik auf die Minusliste setzen, nicht aber CPU-Last für MySQL etc.

Ansonsten, wenns wirklich Low-Cost sein soll... wie gesagt, DNS ist eine sehr einfache Alternative. Sie garantiert leider nicht was ein Load-Balancer garantieren sollte: Auf die Maschine mit der wenigsten Last zu umzuleiten. Wenn du mehr dazu wissen willst, schau dir http://content.websi...balance_dns.htm an.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0