Hallo!
Ich habe da gerade so nen Gedankengang:
Also angenommen ich habe einen Webserver. Auf diesem Webserver laufen mehrere Applikationen unter anderem mit Datenbankzugriffen.
Wenn der Server nun an seine Grenzen stößt, wie geht man dann am besten vor?
Man könnte die Datenbank auf einen seperaten Server legen, das würde den webserver entlasten.
- DB wird auf nen externen Server ausgelagert.
okay, die load steigt weiter! Jetzt könnte man einen zweiten Webserver aufbauen.
und hier komme ich nicht mehr so recht weiter.
Da der DB-Server nun ausgelagert ist, können beliebig viele Webserver mit ihren Applikationen auf den DB-Server zugreifen und zentral Daten abholen.
Allerdings ist die Frage: wie kommen die user auf die verschiednene Server? ich meine, den usern sagen "benutzt die und die ip" ist ja schwachsinn.
Eigentlich wäre also die Beste möglichkeit, wenn man vor die Webserver einen Loadbalancer hängt, der die Anfragen dann aufteilt, oder?
Das Problem ist dann nur wieder die Applikation. Die Webserver werden ja dann ejder eine seperate Kopie der Applikation haben, was updates erschwert.
Auch die configfiles der Applikationen müsste man dann Pflegen.
-> Die Lösung hierzu könnte dann sein, dass man einen Applikationsserver aufbaut, der eine Zentrale version der Applikationen hält. Die Webserver wiederum mounten diese Applikationen als NFS-Share rein.
zusammengefasst: Es gibt jetzt n-Webserver, die auf einen DB-Server und einen App-Server zugreifen.
Was aber passiert nun, wenn entweder der DB-Server oder der APP-Server unter Dampf steht?
Wenn man mehrere DB-Server oder APP-Server macht, ist ja wieder das Problem, dass die Daten nicht mehr Zentral liegen...
Frage zu hohen Lasten / load balancing
normalerweise sollte die Software dafür geschrieben sein. Das wäre der übliche Weg.
Beowolf / Openmoix (Ich weiß jetzt nicht mehr welcher von beiden, da es etwas her ist das ich mich das letzte mal mit beschäftigt hab. Ich setzt für mich auf smp) können hingegen mit Software umgehen die eigentlich nicht für Cluster geschrieben ist, Ihre Schwäche liegt in der Lastverteilung. Sprich wenn ein Thread auf einmal sehr viel Last braucht aber der Thread sich nicht forken läst damit er mehr Leistung bekommt,
Apache würde gut auf ein Cluster passen, die Kunst ist es den einzelen Thread klein genug zu bekommen / halten.
Was bis jetzt nur eingeschränkt geht, ist verteiltes Kompelieren. Das läuft bei nicht immer sauber auf der Smp-Maschine durch.
Beowolf / Openmoix (Ich weiß jetzt nicht mehr welcher von beiden, da es etwas her ist das ich mich das letzte mal mit beschäftigt hab. Ich setzt für mich auf smp) können hingegen mit Software umgehen die eigentlich nicht für Cluster geschrieben ist, Ihre Schwäche liegt in der Lastverteilung. Sprich wenn ein Thread auf einmal sehr viel Last braucht aber der Thread sich nicht forken läst damit er mehr Leistung bekommt,
Apache würde gut auf ein Cluster passen, die Kunst ist es den einzelen Thread klein genug zu bekommen / halten.
Was bis jetzt nur eingeschränkt geht, ist verteiltes Kompelieren. Das läuft bei nicht immer sauber auf der Smp-Maschine durch.
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Nachtrag: Der apache ist nicht für openMosix geeignet:
http://howto.x-tend.be/openMosixWiki/index.php/don't
Mit dem DSM Patch soll es aber auch bei shared memory Prozessen funktionieren:
http://mcaserta.com/maask/
http://howto.x-tend.be/openMosixWiki/index.php/don't
Mit dem DSM Patch soll es aber auch bei shared memory Prozessen funktionieren:
http://mcaserta.com/maask/
Eine der einfacheren Möglichkeiten ergibt sich durch die Verwendung eines eigenen DNS. Dieser kann duch die Verteilung verschiedener IPs für den Rechnernamen eine Lastverteilung hervorrufen. Google mal nach " round robin dns".
Eine richtige Lastverteilung ist das natürlich nicht. Zumindest ist es ein Ansatz der keine spezielle Software ausser dem DNS benötigt.
Eine richtige Lastverteilung ist das natürlich nicht. Zumindest ist es ein Ansatz der keine spezielle Software ausser dem DNS benötigt.