Cluster oder Server-Farm für Webserver und DB-Server

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
Anonymous

Cluster oder Server-Farm für Webserver und DB-Server

Post by Anonymous » 2007-07-05 22:03

Hallo,

wenn der Root-Server langsamt an die physischen Grenzen stössen soll, stellt sich die Frage im Projekt, wie kann man mit einem minimalen Euro-Aufwand die Anwendung skalieren und ausfallsicher gestallten.

Deshalb meine Frage: hat schon jemand einen LAMP Cluster oder LAMP Server Farm mal aufgebaut und mit Erfolg betrieben?? Welche Wege gibt es hier (wg. Kosten muss doch Opensource her)?? Ich würde gerne mich über diese Möglichkeiten austauschen und evtl. selbst ausprobieren.

Die Möglichkeit, die ich sehe:

Server-Farm aus 5 Root-Servern verbunden zusätzlich über einen internen Gigabit-LAN.

Frontend: Loadbalancer Pound, Hearthbeat für Apache/PHP (auf den ersten 3 Servern)
Backend: DRDB mit Hearthbeat für MySQL (auf den letzten 2 Servern)
Datenbereitstellung an Frontend über NFS vom Backend.

Gruss
init6

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

Re: Cluster oder Server-Farm für Webserver und DB-Server

Post by lord_pinhead » 2007-07-05 23:23

Ich geh mal nicht davon aus das du Housing betreiben möchtest, also ein Rack anmieten und die Server selbst stellen. Root Server bzw. Dedizierte Server so zusammenschalten macht dir fast kein Anbieter mit, die verweisen dich aufs Housing.

Allerdings, solche Racks lassen sich relativ billig mieten und die Server leasen. Ich gehe ich davon aus das du die Server alle auf dem gleichen Level halten möchtest -> Google Mysql master slave replication. Eine SAN oder ein NAS wäre da vielleicht auch angebracht, dann müsstest du in den Servern nur Flashdrives betreiben und mit dem geeigneten Raid in der SAN oder im NAS ist auch ein Plattentod nicht so schlimm, bei einem Server wäre das fatal. Flashdrives laufen da ausserdem Stromsparender. Ausserdem musst du dich bei einer SAN nicht weiter darum kümmern ob konkurierende Schreib oder Schreib-/Lesezugriffe auf eine Datei geschehen (ausser bei Datenbanken), das regelt die von sich aus. Jedenfalls fahre ich damit sehr glücklich. Mit NFS sowas zu betreiben ist etwas haarig und nicht mit Rootservern so einfach möglich (oder man sollte es nicht machen), aber wenn, dann nutze famd. Das ganze kann aber recht Teuer werden, 400 Euro ca. im Monat bei mir.

Loadbalancer ist so eine Sache, da musst du min. 2 betreiben weil dir ja einer ausfallen kann, ausserdem 2 Leitungen. Sowas ginge nur mit Housing.

Mit dem DNS arbeiten wäre da fast schon einfacher -> Google Round Robin DNS bind9 . Der DNS gibt dann den Anfragenden Clients abwechselnd die IP´s von den Servern aus, dann könnte man das auch theoretisch mit Root Servern machen, da sie nur über rsync abgeglichen werden müssten (bei den Dateien). Die Master->Slave Replikation mit Mysql ist eigentlich richtig einfach und es gibt massenhaft Howtos im Netz.

Nachteil des ganzen: Fällt Server 2 aus, interessiert es den DNS nicht und er gibt fröhlich weiter die IP von diesem Server raus, die User sehen dann nur eine Fehlermeldung das der Server nicht reagiert. Wenn er längere Zeit tot wäre, würde einfach das ändern des DNS Eintrages reichen sofern die TTL nicht zu hoch gesetzt wurde. Ein Workaround wäre die TTL auf 0 zu setzen damit die Clients bei einer erneuten Anfrage vielleicht eine der anderen IP´s bekommen, dummerweise ist Windows nicht interessiert das man nicht cachen möchte. Leider weiß ich aus Erfahrung das die meisten Provider dieses Verfahren nicht unterstützen, da müsstest du dir ausserdem noch 2 DNS Server aufsetzen, was aber auch nicht so wild wäre.

Die Geld schonendste Version ist mit dem DNS, die teuerste mit Housing. Rack kostet nackt min. 100 Euro beim billigsten Anbieter ohne Traffic und Strom (meist eine zu geringe Pauschale dabei), beim All-Round Anbieter 500 Euro. Das ganze nach HE´s zu mieten ist eine Rechensache, braucht man wenigstens keinen Switch und hat meist ganz gute Pauschalen was Strom und Traffic angeht.

Monitoring solltest du dir auch überlegen, ob nun einfache Scripte oder SNMP verwendet werden, die Server sollten überwacht werden um schnelles eingreifen möglich zu machen.

Gib mal ein paar mehr Infos, vielleicht gibts da ne zwischenlösung. Mich würde es mal interessieren wie du den Dateiupload machen willst, via Webformular oder normal über FTP/SCP immer auf dem selben Server.

Anonymous

Re: Cluster oder Server-Farm für Webserver und DB-Server

Post by Anonymous » 2007-07-06 11:57

Wir sind uns erstmal im klaren dass es viele Wege zum gleichen Ziel führen. Man kann natürlich bei einem Provider geignete Cluster-Lösung wählen und mieten, allerdings wird es mit 3 Servern ab min. 2.200 EUR/mtl. (iSCSI, Loadbalancer, MySQL-Replication) kosten. Oder z.B. das Angebot von Hosteurope, was ich bekommen habe - 3 Server für 4.200.- EUR/mtl. (Redhat GFS, Cluster Suite, SAN, MySQL-Replication). Usw, usw.
Google Mysql master slave replication.
dies ist keine richtige ausfallsichere Lösung, wenn der Master nicht mehr schreibt, ist die ganze Replikationskette tot und du musst diese nur per Hand und nachts reparieren (die Daten sind allerdings nicht verloren, was der Vorteil ist). Die MySQL wäre für mich erstmal optional zu nehmen.
Eine SAN oder ein NAS wäre da vielleicht auch angebracht
klar, super Standard-Lösung. Fängt schon je nach GB ab 400.- mtl an, aber der Gegenwert wären schon z.b. 5 gute Root-Server bei Hetzner.
Mit dem DNS arbeiten wäre da fast schon einfacher
ja es geht auch so, aber du kannst damit nicht last-abhängig verteilen und wenn 1 Server ausgefallen ist, müsstest du erstmal deine DNS aktualisieren und u.U. wird es Tage dauern, bis jeder n-te User von Round Robin die korrekte Serververbindung zustande kriegt. Für mich ist es eine sehr schlechte Lösung.
Mit NFS sowas zu betreiben ist etwas haarig und nicht mit Rootservern so einfach möglich
Warum genau ist es nicht möglich?
http://www.howtoforge.com/high_availabi ... _heartbeat

Mich würde es mal interessieren wie du den Dateiupload machen willst, via Webformular oder normal über FTP/SCP immer auf dem selben Server.
Pound is schon ein guter Loadbalancer, der eine geignete Logikzulässt (sogar reguläre ausdrucke für URL, Sessions, Quell-IP etc).

Meine preferierte Lösung könnte so aussehen:
HW:
- Alle 5 Root-Server wären erstmal mit einem Fuss im Internet und mit 2tem Fuss im Gigabit-LAN.
- Server 1 und 2 sind noch seriell verbunden (Heartbeat-Leitung für Pound).
- Server 4 und 5 sind noch seriell verbunden (Heartbeat-Leitung für MySQL). Evtl. noch ein 3ter Crossover-LAN für DRDB.

SW:
- Pound switcht zwischen server 1 und 2 als HA-Cluster
- Apache läuft auf 2 und 3 als Server Farm
- MySQL läuft auf 4 und 5 als HA-Cluster

Kosten wird es nur 5 gute Root-Server (evtl. Aufschlag wg. Intranet und Seriell) und die Verkabelung laut Hetzner wäre möglich.

sebstof
Posts: 16
Joined: 2003-03-25 16:29

Re:

Post by sebstof » 2008-01-14 11:56

init6 wrote:Wir sind uns erstmal im klaren dass es viele Wege zum gleichen Ziel führen. Man kann natürlich bei einem Provider geignete Cluster-Lösung wählen und mieten, allerdings wird es mit 3 Servern ab min. 2.200 EUR/mtl. (iSCSI, Loadbalancer, MySQL-Replication) kosten. Oder z.B. das Angebot von Hosteurope, was ich bekommen habe - 3 Server für 4.200.- EUR/mtl. (Redhat GFS, Cluster Suite, SAN, MySQL-Replication). Usw, usw.

Google Mysql master slave replication.
dies ist keine richtige ausfallsichere Lösung, wenn der Master nicht mehr schreibt, ist die ganze Replikationskette tot und du musst diese nur per Hand und nachts reparieren (die Daten sind allerdings nicht verloren, was der Vorteil ist). Die MySQL wäre für mich erstmal optional zu nehmen.

Eine SAN oder ein NAS wäre da vielleicht auch angebracht
klar, super Standard-Lösung. Fängt schon je nach GB ab 400.- mtl an, aber der Gegenwert wären schon z.b. 5 gute Root-Server bei Hetzner.

Mit dem DNS arbeiten wäre da fast schon einfacher
ja es geht auch so, aber du kannst damit nicht last-abhängig verteilen und wenn 1 Server ausgefallen ist, müsstest du erstmal deine DNS aktualisieren und u.U. wird es Tage dauern, bis jeder n-te User von Round Robin die korrekte Serververbindung zustande kriegt. Für mich ist es eine sehr schlechte Lösung.

Mit NFS sowas zu betreiben ist etwas haarig und nicht mit Rootservern so einfach möglich
Warum genau ist es nicht möglich?
http://www.howtoforge.com/high_availability_nfs_drbd_heartbeat


Mich würde es mal interessieren wie du den Dateiupload machen willst, via Webformular oder normal über FTP/SCP immer auf dem selben Server.

Pound is schon ein guter Loadbalancer, der eine geignete Logikzulässt (sogar reguläre ausdrucke für URL, Sessions, Quell-IP etc).

Meine preferierte Lösung könnte so aussehen:
HW:
- Alle 5 Root-Server wären erstmal mit einem Fuss im Internet und mit 2tem Fuss im Gigabit-LAN.
- Server 1 und 2 sind noch seriell verbunden (Heartbeat-Leitung für Pound).
- Server 4 und 5 sind noch seriell verbunden (Heartbeat-Leitung für MySQL). Evtl. noch ein 3ter Crossover-LAN für DRDB.

SW:
- Pound switcht zwischen server 1 und 2 als HA-Cluster
- Apache läuft auf 2 und 3 als Server Farm
- MySQL läuft auf 4 und 5 als HA-Cluster

Kosten wird es nur 5 gute Root-Server (evtl. Aufschlag wg. Intranet und Seriell) und die Verkabelung laut Hetzner wäre möglich.


Ich möchte auch gerne eine wie von Dir angedachte Verteilung mit NFS vornehmen.
Hast Du eine solche zwischenzeitlich umgesetzt oder evtl. etwas besseres gefunden?