Hallo Andreas,
- Du kaufst Dir einen schönen teuren Loadbalancer (z.B. bei Deinem netten Cisco-Händler von nebenan ;-)), hinter dem dann X identische Server (Slaves) stehen. Allerdings musst Du dann dafür Sorge tragen, dass auf den einzelnen Servern kein "Zustand" zwischen den Requests behalten wird, denn es ist nicht gesagt dass der nächste Request auf demselben Slave landet (ich weiß dass manche Loadbalancer das sicherstellen können, es macht die ganze Geschichte allerdings deutlich unflexibler). Das heißt, so Sachen wie Datenbank, Sessions oder lokale Dateien müssen ausgelagert werden. Dann kann ruhig mal ein Server ausfallen, ohne dass man das von außen mitbekommt. Der Loadbalancer hat halt die einzige nach außen öffentliche IP, über den dann alle Requests laufen, die dann nach einem bestimmten Verfahren auf die Slaves verteilt werden.
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!
Gestoßen bin ich darauf mehr durch Zufall. In der neuen Linux-Magazin stand ein Artikel über Cluster mit MySql. Das interessiert mich gerade brennend. Aber leider ist das, was da angeboten wird, nicht wirklich bezahlbar (für mich). Die schon in MySQL eingebaute Clusterlösung braucht mehr Speicher (RAM-Lösung) als mancher Mensch an Festplattenplatz hat. Die andere Lösung ist nicht gerade preiswert (2TEuro pro CPU).
Ich tüftel gerade an einer Replikation. Habe mich damit 2 Tage beschäftigt: große Klasse.
Man muß nur beachten, daß ein Master zum schreiben sein soll, die Slaves sollten zum lesen gewählt werden.
Da kam PEN gerade recht. Es beherrscht alle Protokolle mit TCP, also auch den Datentranport der MySQL-Daten.
Wenn der Master jetzt ausfällt, kann man zwar nichts mehr eintragen, aber noch lesen.
Wie der Testaufbau hier aussieht, darf man gar keinem erzählen... haha
Mein Arbeitsrechner ist der Master, auf dem Boden liegt ein olles 800 MHz Laptop, daß über WLan als Slave fungiert.
Naja, ich glaube IBM und Mikrosoft sind in der Garage entstanden, oder? Meine ist hier
Wenn Du willst, kannste darauf gerne mal testen.
Die 2. Methode eignet sich sehr gut, um z.B. im 1. Szenario einen dedizierten Datenbank-Server gegen Ausfall abzusichern. Sollte der Master-DB Server mal ausfallen, übernimmt der Slave-DB Server (auf den natürlich ständig die Daten gespiegelt wurden) die IP und Aufgabe des Masters. Natürlich kann man auch hier einen Load-Balancer einsetzen, allerdings nicht so effektiv, da vor allem Schreibzugriffe transaktionssicher synchronisiert werden müssen, aber man könnte z.B. Schreib-Zugriffe von Lese-Zugriffen trennen, und somit die Heartbeat-Methode nur für den einen Master-Server für Schreibzugriffe verwenden, und eine Farm von Slaves per Load-Balancer für Lese-Zugriffe zur Verfügung stellen, oder sogar auf jedem Web-Slave einen DB-Server für Lese-Zugriff installieren. Oder man verwendet entsprechende DB-Cluster aus dem Hause Oracle, IBM & Co. Es gibt zwar auch inzwischen Cluster-Lösungen für MySQL, allerdings habe ich davon noch nicht allzuviel gutes gehört ;-)[...]
Grunz...das habe ich erst jetzt gelesen.
Aber ich kann das mit meinem Tüftelaufbau bestätigen.
Funktioniert Klasse. Wenn man also ein paar alte Rechner rumstehen hat, bekommt man sicherlich ein kleines Rechenzentrum zusammen. Das Problem ist nur, falls das online auch funktionieren soll, irgendwann die DSL-Leitung.
Gruß
Reiner