Hi,
- Du kaufst Dir einen schönen teuren Loadbalancer [...]
das scheint mir nicht (unbedingt) notwendig.
Ich beschäftige mich gerade mit dem Thema und bin auf was sehr interessantes gestoßen, was ich gerade mit zwei MySQL über Replikation teste.
Das Teil, was ich meine nennt sich PEN - habe den Link jetzt gerade nicht, such mal mit Google "PEN Loadbalancer Linux" oder so.
Ist ca. 100kByte groß und funktioniert großartig.
Es macht den Krempel nach dem RoundRobin-Verfahren. Das Teil kostet NICHTS (GPL) und funktioniert einfach!Ja klar, ist ne schöne Software. Man muss sich halt fragen was man erreichen will. Ich persönlich mag allerdings nicht den Gedanken einfache x86 Hardware als Loadbalancer einzusetzen, da ein Loadbalancer normalerweise einen "Single Point of Failure" (SPF) darstellt, und entsprechend ausfallsicher oder besser redundant ausgelegt sein sollte. Wie gesagt ist ein Hardware-Loadbalancer allerdings ein teurer Spaß und man muss sehen ob man das braucht. Wenn es nur um Lastverteilung geht, hilft vielleicht schon ein einfaches DNS Round-Robin Verfahren. Das sollte in gewissem Maße auch gegen Ausfallsicherheit helfen, man könnte ja wenn ein Server ausfällt, dessen IP vorübergehend von einem anderen System übernehmen lassen (wenn entsprechend ausgelegt), und gleichzeitig die IP aus dem DNS nehmen.
Auf der anderen Seite - solange der "PEN-Server" nicht ausfällt ist das natürlich ne feine Sache.
»»
zwei Pen Server fallen vielleicht noch weniger aus:
http://siag.nu/pen/vrrpd-linux.shtml :-))
Womit ich zur Zeit teste ist lighttpd, der gleichzeitig als Webserver und Loadbalancer für FastCGI-Prozesse (stinknormale PHP-Scripte) fungiert, die auf eigenen, dedizierten Servern laufen (Kommunikation per FastCGI-Protokoll über TCP/IP).
Naja, FastCGI ist sicherlich gegenüber "normalen" CGI nicht immer so "fast"! Besonders bei großen Scripten macht es oft kaum Sinn.
Ich tüftel gerade an einer Replikation. Habe mich damit 2 Tage beschäftigt: große Klasse.
Ja, Master->Slave Replikation ist ne recht effiziente Sache, erhöht die Ausfallsicherheit und Performance deutlich was lesende Zugriffe angeht, der Master-Server wird allerdings zum SPF und kann auch nicht unendlich mitwachsen...
Der muß halt anders ausgelegt sein, möglichst auch kaum lesend beackert werden. In meinem Fall auch "ok", wenn er ausfällt. Das Suchformular funktioniert dennoch.
Da kam PEN gerade recht. Es beherrscht alle Protokolle mit TCP, also auch den Datentranport der MySQL-Daten.
Wozu benutzt Du denn PEN jetzt konkret?
Im Moment ist auf meinem Arbeitsrechner der Webserver. Die Scripte unterscheiden, ob Sie schreibend (Zugriff auf Master) oder lesend (Zugriff auf "Cluster") arbeiten. Im PEN-Verbund sind die beiden MySQL-Server.
Genauer:
I) Arbeitsrechner=Webserver=DB-Master=Loadbalancer(PEN)
II) Laptop=DB-Slave
Wenn der Master jetzt ausfällt, kann man zwar nichts mehr eintragen, aber noch lesen.
Dafür brauchst Du einen "Backup-Master" der ggfs. automatisiert einspringt ;-)
Nee, für diesen ersten Schritt noch nicht. Aber man kann auch mit einem Trick so eine Art Master-Master-Replikation machen. Dabei sind einige Dinge zu beachten, geht aber!
Meine ist hier
Wenn Du willst, kannste darauf gerne mal testen.
Was kann ich da denn testen?
Entweder testen, ob das Suchfeld (links in Navigation) wirklich schnell Ergebnisse bringt. Das Problem ist, daß Du das alleine gar nicht testen kannst. Es müßten mehrere unterschiedliche Clients sein, die automatisch auf die beiden Rechner verteilt werden. Das Ergebnis kannst Du aber wiederum auch gar nicht beurteilen, aber ich, indem ich in die PEN-Logs reinschaue.
Oder einfach anmelden ("bestellen").
Du bekommst einen Account (per Mail) zugewiesen. Wie man das Suchformular benutzt, steht auf der Seite "Beispiele".
Wichtig sind zwei Dinge:
- ID auf den Dir zugemailten Wert setzen (Server-ID). Der Wert 17 ist nur ein Beispiel.
- Das Formular statt auf www.w3sitesearch.de... auf http://netp.ath.cx.... abschießen! Das ist eben mein Entwicklungssystem. Wenn Du das nicht machst, bekommst Du aber wahrscheinlich eine Fehlermeldung, weil die Server-ID auf dem anderen System unbekannt ist.
Gruß
Reiner