Brauche Cluster für Performance

MySQL, PostgreSQL, SQLite
accelerator
Posts: 55
Joined: 2007-01-10 04:00

Brauche Cluster für Performance

Post by accelerator » 2007-04-04 09:19

Morgen,

ich brauche für meine Seite demnächst ein MySQL und Webserver Cluster für mehr Performance!
Gibt es da spezielle Addons die ich einfach dazu installieren kann?
Wenn ja, was muss ich dabei dann beachen und wie installiere ich dann neue Server dazu.

Es geht darum das meine Datenbank sehr groß ist und die anderen Server sollten dann jeder auf am besten eine Datenbank zugreifen können. Also jeder Server extra immer die selben Daten haben.
Bei dem Webserver soll es so sein, das er sich aussucht welcher Server nicht so ausgelastet ist und dann automatisch nicht den ausgelasteten nimmt. Auch hier sollten die Daten auf den Server identisch sein.

Ich weiss leider nicht wie ich das anstellen soll.

Danke!

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Brauche Cluster für Performance

Post by daemotron » 2007-04-04 11:33

Accelerator wrote:Es geht darum das meine Datenbank sehr groß ist und die anderen Server sollten dann jeder auf am besten eine Datenbank zugreifen können. Also jeder Server extra immer die selben Daten haben.
Stichwort: Master-Slave-Replikation, da findet sich hier im Forum und in der MySQL-Dokumentation schon einiges zu. Zusätzliche Software wird nicht benötigt, das kann MySQL schon von Haus aus.
Accelerator wrote:Bei dem Webserver soll es so sein, das er sich aussucht welcher Server nicht so ausgelastet ist und dann automatisch nicht den ausgelasteten nimmt. Auch hier sollten die Daten auf den Server identisch sein.
Die Webserver kannst Du entweder mit einem gemeinsamen NAS synchron halten oder bei geringen Änderungshäufigkeiten der statischen Inhalte und Skripte per rsync von Zeit zu Zeit synchronisieren. Loadbalancing zwischen mehreren Webservern erreichst Du entweder mit einer Loadbalancing-Appliance oder mit einem loadbalancing-tauglichen Reverse-Proxy auf einer vorgeschalteten Maschine (z. B. Pound oder HAProxy)

r. u. serious
RSAC
Posts: 93
Joined: 2006-06-10 14:17

Re: Brauche Cluster für Performance

Post by r. u. serious » 2007-04-04 14:14

Accelerator wrote:Morgen,
ich brauche für meine Seite demnächst ein MySQL und Webserver Cluster für mehr Performance!
Von dem Kenntnissstand den die Art deiner Fragestellung annehmen läßt, würde ich ertmal empfehlen, den tatsächlichen Flaschenhals zu diagnostizieren der für die Performance-Engpässe verantwortlich ist. Es kann gut sein, dass es sich um ein Konfigurationsproblem handelt, oder eine zu alte Festplatte oder zu wenig RAM, oder ähnliches.

Selbst billige Server haben heutzutage in der Regel ausreichend Leistung um auch "plötzliche" Erfolge von Hobby-webmastern zu meistern, wenn man sich die Konfiguration ein wenig anschaut. Und selbst wenn ein Server nicht mehr reicht, kann man die Dienste häufig auf 2-3 erver verteilen ohne irgendwas clustern zu müssen.

Also besser einen Schritt nach dem anderen. Denn das folgende:
Gibt es da spezielle Addons die ich einfach dazu installieren kann?
Wenn ja, was muss ich dabei dann beachen und wie installiere ich dann neue Server dazu.
ist häufig mehr Arbeit und erfordert mehr Knowhow, und am Ende mußt die obigen Grundlegenden Sachen ohnehin machen.
Es geht darum das meine Datenbank sehr groß ist
Dann brauchst du nur eine größere Platte und/oder mehr RAM, wenn die _Größe_ der Datenbank das Problem ist...

djcrackman
RSAC
Posts: 208
Joined: 2005-06-02 11:58

Re: Brauche Cluster für Performance

Post by djcrackman » 2007-04-06 12:53

R. U. Serious wrote:
Es geht darum das meine Datenbank sehr groß ist
Dann brauchst du nur eine größere Platte und/oder mehr RAM, wenn die _Größe_ der Datenbank das Problem ist...
Würde ich auch meinen. Hoste auf einer Kiste weit über 10k Datenbanken mit mittlerweile gut 25GB Volumen und über 26k Tabellen -> keine Performance-Probleme. Gut, ich setze auf keinen 20€-Root und auf keinen 10k € Dell Cluster, dennoch: sowas lässt sich mit einer Maschine schaffen ;).

accelerator
Posts: 55
Joined: 2007-01-10 04:00

Re: Brauche Cluster für Performance

Post by accelerator » 2007-05-02 03:58

Ich setzte auch nicht auf 50 € Server sondern auf 150 € Server, einen Xeon mit 4 Prozessoren finde ich etwas zu teuer, daher möchte ich gerne die Datenbank auf 2 Server teilen und für den Webserver einen starken Server nehmen.

Der Umstieg von SuSE auf Debian hat sich wirklich gelohnt, ich hab ca. 30% mehr Performance. Aber bei über 400k Tabellen braucht man schonmal einen kleinen Cluster, an den man bei bedarf auch einen weiteren anschliessen kann.

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: Brauche Cluster für Performance

Post by flo » 2007-05-02 07:29

Sei mir nicht böse, aber Deine Frage im anderen Post "Wie kopiere ich auf eine zweite Platte?" lässt da erhebliche Zweifel aufkommen, wo das Problem liegt.

Wenn Dir Master/Slave mit seinen Nachteilen ausreicht, dann probiere das aus, einen richtigen MySQL-Cluster baust Du nach Lesen von http://dev.mysql.com/doc/refman/5.1/de/ndbcluster.html .

Ach ja, bezüglich der Leistung - ich hatte 2003/2004 mal knapp 180 Angebote auf einem PIII/1200 laufen, allerdings mit eigenem MySQL-Server, der auch noch Mailserver war - lief bombig.

accelerator
Posts: 55
Joined: 2007-01-10 04:00

Re: Brauche Cluster für Performance

Post by accelerator » 2007-05-02 21:55

Ok, und kann man auch 2 Webserver laufen lassen? Gibts da für Apache ein Cluster Tool oder Master/Slave?
Werde dann nur auf einen größeren MySQL Server umsteigen.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Brauche Cluster für Performance

Post by daemotron » 2007-05-03 08:54

Technisch gesehen ja. Aber auch hier gilt, dass ein Server die Ressourcen wesentlich besser nutzt als ein kleiner Cluster. Erst ein Cluster mit n Knoten nähert sich mit wachsendem n wieder der Ressourcennutzung eines Einzel-Systems an.

Grund: Wenn Du einen Webdienst verteilt laufen lassen willst, benötigst Du einen vorgeschalteten Loadbalancer, der die Lastverteilung auf die Knoten überhaupt erst übernimmt (entweder eine Appliance oder einen Eigenbau mit entsprechenden Produkten wie HAProxy oder Pound) - also mindestens 3 Maschinen, von denen aber nur 2 tatsächlich zur Bearbeitung von Requests zur Verfügung stehen.

Unterm Strich solltest Du also erst mal versuchen, ob Du nicht mit einem optimierten Setup (z. B. Lighttpd statt Apache, Module entrümpeln, Opcode-Cache, Content-Caching, RAM-Disk für häufig abgerufene statische Inhalte etc.) vielleicht auch so zum Ziel kommst.

lord_pinhead
RSAC
Posts: 830
Joined: 2004-04-26 15:57

Re: Brauche Cluster für Performance

Post by lord_pinhead » 2007-05-03 20:07

Accelerator wrote:Ok, und kann man auch 2 Webserver laufen lassen? Gibts da für Apache ein Cluster Tool oder Master/Slave?
Werde dann nur auf einen größeren MySQL Server umsteigen.
Sind die Server in einem Rack? Also ein eigenes Lan mit 100mbit im Backend? Dann reicht ein Apache der auf mysql.meinlan.intra geht und ein Loadbalancer verteilt es auf 2 Mysql Server. Aber so ein Spaß mit Rootserver zu betreiben ist schwachsinn, weil man vielleicht erstmal durch das Lan des Hosters muss oder übers Internet (je nach Routing des Hosters) und dann ist der Vorteil ja schon wieder zunichte.

Wieviel Ram haben die Kisten überhaupt? 4 Prozis drin und 2 GB Ram ist etwas leichtbrüstig. Die Paar Tabellen kann man auch auf einer kleinrere Kiste hosten wenn es nötig ist, aber ein Engpass wäre vielleicht schonmal dein Webserver der einfach zu langsam läuft.

accelerator
Posts: 55
Joined: 2007-01-10 04:00

Re: Brauche Cluster für Performance

Post by accelerator » 2007-05-03 22:24

Die Kiste hat 2 Prozis und 4 GB Räm.

Ich werde den dann weiter für MySQL nehmen und dazu nur einen neuen Webserver.
Was genau würdet ihr für einen Webserver empfehlen der große PHP Scripte bilden muss? Viel RAM? Viel CPU usw.?

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Brauche Cluster für Performance

Post by daemotron » 2007-05-04 16:15

Definiere "große PHP Scripte" - Sind das Skripte mit hohem Speicherverbrauch, langer Laufzeit oder beidem?

Viel RAM ist in beiden Fällen von Vorteil: Bei langer Prozesslaufzeit benötigst Du eine entsprechend hohe Anzahl von parallel laufenden Prozessen, um mehrere Requests gleichzeitig bedienen zu können. Was bei großem Speicherbedarf zu tun ist, dürfte selbstredend sein...

Über die CPU kann man ohne geeignete Quantifizierung Deinerseits kaum irgendeine Aussage treffen. Grundsätzlich gilt: Je mehr parallele Prozesse, desto mehr CPU-Kerne. Gretchenfrage ist hier das Verhältnis von Prozesszahl zu CPU-Kernen, das je nach Szenario recht unterschiedlich ausfallen kann. Sprich: wie CPU-intensiv ein einzelner Prozess ist, musst Du selbst (durch experimentieren oder Abschätzung der Komplexität der zugrunde liegenden Algorithmen) herausfinden. Wie viele Prozesse Du benötigst, ist wiederum abhängig von der Anzahl erwarteter Requests und der erforderlichen Laufzeit zur Bearbeitung eines einzelnen Requests.

Auch wenn bei Hardware gilt "viel hilft viel", solltest Du allein aus Gründen der Wirtschaftlichkeit genau prüfen, ob Du anstelle ner Sun Fire 25k (Achtung, Übertreibung) vielleicht auch was kleineres einsetzen könntest, wenn Du das Gespann Webserver/PHP entsprechend optimierst und beim Webserver ein schlankeres Produkt als Apache einsetzt.

accelerator
Posts: 55
Joined: 2007-01-10 04:00

Re: Brauche Cluster für Performance

Post by accelerator » 2007-05-05 04:30

PHP-Script hat hohen Speicherverbrauch, die Laufzeit sind nur 1 - 0,5 Sekunden.

Ich benutze Confixx, daher jetzt die Frage, kann ich Apache einfach löschen und ein neues drauf installieren?

Der Server hat jetzt einen CPU von Intel Pentium D EM64T / Dual Core.
Sollte ich dann den gleichen auch nur für den Webserver nehmen oder einen stärkeren?

Ach ja ganz wichtig: Ich brauche unbedingt bei dem Webserver mod_rewrite, das geht mit Apache und Confixx sehr leicht.