PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Intelligenter Mirror für die eigene Website



derfele
29.05.05, 15:54
Hallo,
ich benutze Xampp für Linux in der aktuellen version (apache 2.0.53) auf einem debian linux system und plane nun die einrichtung eines mirror servers, den ich in die wg meiner freundin stellen möchte (ebenfalls debian mit xampp).
nun ist mir die idee gekommen, da ich die beiden server eh mit rsync syncron halten möchte, ob es nicht möglich ist apache so einzustellen, dass er beide server gleichzeitig nutzt um so den seitenaufbau zu beschleunigen.

beispiel:
jemand geht auf meine website xxx.dyndns.org, standartmäßig öffnet sich die index.htm.
von nun an soll er eweils eine datei vom meinem hauptserver und dann eine datei von dem backup server in der wg meiner freundin öffnen (und das das nicht statisch sondern dynamisch, sodass keine änderungen an der website notwenig sind)

ist das mit apache möglich? oder benötige ich da zusatztools für? oder ist es generell möglich? hat es schon mal jemand ausprobiert?

Hoffe mir kann jemand helfen
MfG dErFeLe

fladi.at
29.05.05, 16:00
du könntest ja die links innerhalb der seite auf beiden servern automatisch generieren lassen (mit php oder auch javascript). server1 setzt dan alle seine links auf server2, und der macht es genau umgekehrt. wäre eine recht einfache methode des loadbalancings.

MiGo
30.05.05, 09:36
So einfach wird das vermutlich nicht gehen. Wenn die Webseite vollständig in php geschrieben ist, könntest du jeden link der webseite durch eine zufallsroutine ersetzten, die entweder auf die eine oder auf die andere webseite verweist; dazu sind allerdings (sehr) viele änderungen in der seite notwendig.
Was du vermutlich meinst, ist "loadbalancing". Das funktioniert im prinzip so, dass die webanfrage immer an den gleichen rechner geht, der sie dann auf einen von mehreren servern "durchschleift", der gerade am wenigsten zu tun hat.
Normalerweise läuft das über mehrere netzwerkkarten des loadbalancing-servers, an die jeweils ein webserver angeschlossen ist. ob das auch übers internet geht, kann ich dir jetzt nicht sagen, aber iirc ist es alles andere als trivial einzurichten.

BedriddenTech
30.05.05, 09:52
Warum nicht eine Funktion schreiben, die die Systemauslastung der beiden Server abfragt, vergleicht und dann den Request entsprechend weiterleitet? Sowas muß dann halt in PHP oder Perl oder sonstwas entstehen, aber wäre eine einfache Form des Balancings.

Mr.Sailer
30.05.05, 10:11
Ich frage mich nur ob das sich lohnt zu jedem Request noch ne php abfrage zu machen. Der Server wird dadurch ja noch mehr belastet.

MfG
Mr. Sailer

tschloss
30.05.05, 11:07
Hau das Zeug auf nen VServer (z.B. Star Hosting für 4,99 pro Monat drauf) und spar dir das -wahrscheinlich sinnlose- Gefuddel ;)

Ggf. reicht auch ein noch billigerer Webspace. Dann gibt es keine Performance Probleme mehr, die Site ist immer erreichbar und der eigene Upload bleibt sauber!

Greetz
Thomas

BedriddenTech
30.05.05, 11:31
Ich frage mich nur ob das sich lohnt zu jedem Request noch ne php abfrage zu machen. Der Server wird dadurch ja noch mehr belastet.

MfG
Mr. Sailer
Der ganze Aufwand lohnt sich eh nie (siehe tschloss' Beitrag), aber bei sowas komme ich immer in Bastellaune. Wahrscheinlich, weil ich annehme, daß Frager wie dieser solche Möglichkeiten schon überdacht haben und lieber den abstrusen Weg gehen wollen. ;)

tschloss
30.05.05, 11:55
Der ganze Aufwand lohnt sich eh nie (siehe tschloss' Beitrag), aber bei sowas komme ich immer in Bastellaune. Wahrscheinlich, weil ich annehme, daß Frager wie dieser solche Möglichkeiten schon überdacht haben und lieber den abstrusen Weg gehen wollen. ;)

Ok, ja. Der eine hat seine Märklin-Eisenbahn, der andere bekommt die Heulerei, wenn die eigene IT gerade mal keinen Ärger macht :D

Auch sehr beliebt: "Hier ist eine Lösung - jetzt brauche ich nur noch das passende Problem" :cool:

Also: happy loadbalancing

Greetz
Thomas

derfele
31.05.05, 06:40
Dann werde ich mich wohl erstmal mit dem thema load ballancing beschäftigen müssen. ich sehe das einfach als spielerei und will es mal ausprobieren, wenn ich für ne professionelle site den speed bräuchte würde ich auch das geld für den entsprechenden space ausgeben, habe aber einfach lust mal etwas zu basteln...

MfG dErFeLe

ps: sollte es irgendwann mal funzen meld ich mich wieder

marce
31.05.05, 08:12
Performance wirst Du mit einer normalen LB-Methode und einem DSL-Anschluss nicht gewinnen - da geht jede Anfrage an einen Server, der dann die Daten von diversen anderen Servern holt und an den Client ausliefert - es bleibt also der Engpass der einen DSL-Leitung, durch die dann auch noch die "Proxy-Anfragen" an den anderen Server gehen.

Die Methode, dass der eine Server eine Seite generiert, in der alle Links auf den anderen zeigen und umgekehrt bringt zwar Performance, hat aber das Problem, dann die Seite komplett dynamisch sein muss (denke ich mal, evtl. lässt sich das auch was mit mod_proxy oder squid machen) und beim "Ausfall" eines der Server gar nicht mehr funktionsfähig ist.

LB lohnt sich eigentlich nur bei extrem Prozessorlastigen oder hochfrequentierten Seiten - für alles andere sind eigentlich heutige Server locker ausreichend und man sollte eigentlich nur auf die Verfügbarkeit achten (hotstandby z.B.)

LB selbst kann der Apache schon (mod_balance heissts glaube ich), Tomcat auch. Oder man setzt einen separaten Server (im Produktiveinsatz meist große komerzielle Systeme von Cisco, F5, Nortel, ...) dafür ein, der dann entsprechend auf einen Cluster verteilt - es gibt dafür aber auch kleine Softwarelösungen (z.B. ein kleines Programmchen namens balance bei sf), welche einfach Anfragen an eine IP und Port per RoundRobin auf eine Serverliste verteilen - tut sogar recht gut.

LB selbst ist eine recht vertrackte Geschichte, sobald so Dinge wie Sessions oder DB mit reinkommen - Konsistenz und so... - kann mal schauen, ob ich hier ein paar nette Links zu dem Thema finde. Für's Spielen würde ich Dir für den Anfang die Apache-eigenen Methoden empfehlen oder eben das balance-Programm...

tschloss
31.05.05, 09:09
Für eine rein lesende Anwendung gibt es einen einfachen Loadbalancing Mechanismus über DNS. Da hinterlegt man hinter einem Domainnamen einfach mehrere IPs und sagt dem DNS (wenn er es kann), dass er nach einem bestimmten Verfahren (da gibt es einfache und komplexe) unterschiedliche IPs zurückgeben soll.
Aber wie marce schon sagt: bei schreibenende Operationen und Dingen wie Sessions wird es dann schwierig.
Wird auch mit zwei DynDNS-Adressen nicht gehen, denke ich.

Ein anderer Mechanismus basiert auf HTTP-redirect. Aber da hat man einen Teil der Last schon mal auf dem einem Server gehabt.

Greetz
Thomas