Seite 1 von 1
Apache: Einfaches Load-Balancing ?
Verfasst: 01.03.2011 14:23
von c4s
Der Download-Traffic, den meine mit PureBasic erstellten Programme erzeugen

, ist mittlerweile auf einem zu hohen Niveau: Meine eigentliche Website wird ausgebremst! (Ein Server-Update ist jedoch leider noch keine Option, da der daraus entstehende Ertrag es nicht rechtfertigen würde.)
Meine Idee ist nun per Apache die Zugriffe auf die entsprechenden Dateien auf einen weiteren Server 50/50 (oder auch zufällig mit ungefährer 50/50-Chance) umzuleiten:
Code: Alles auswählen
USER
|
|
seite-a.de/datei1.zip
/ \
50% / \ 50%
/ \
/ \
/ seite-a.de/datei1.zip
/
seite-b.de/datei1.zip
Meine Frage ist nun ob das überhaupt möglich ist und wenn ja, ob es legitim wäre? Oder würden sogar Firewalls darauf anschlagen?
Ich dachte mir weiter, dass man den Zugriff auf "seite-b.de" über einen entsprechenden DNS-Eintrag verschleiern könnte, denn "seite-b.de" soll wirklich nur als Auslagerung dienen und nicht irgendwo angezeigt werden. Wäre dieses ebenfalls machbar?
Ich frage, weil ich mich mit Apache etc. nur rudimentär auskenne und mir erhoffe, dass der ein oder andere Server-Admin einen Ratschlag für mich hat.

Re: Apache: Einfaches Load-Balancing ?
Verfasst: 01.03.2011 15:06
von cxAlex
Ich würde sagen das ist ganz normales vorgehen, jede größere Webseite macht das so. Sieh dir mal Squid an, damit solltest du umsetzen können was du willst:
https://secure.wikimedia.org/wikipedia/de/wiki/Squid
Gruß, Alex
Re: Apache: Einfaches Load-Balancing ?
Verfasst: 01.03.2011 17:19
von c4s
Danke für den Tipp.
Ich habe jedoch eine wichtige Information vergessen: Meine Seite befindet sich bei einem Shared-Hosting-Dienst... (Wie gesagt, ein Wechsel lohnt noch nicht)
Gäbe es da nicht ein paar simple Apache-Anweisungen für ModRewrite oder so? Ich will da wirklich nichts großes daraus machen, einfach ein paar Dateien "auslagern".
Re: Apache: Einfaches Load-Balancing ?
Verfasst: 01.03.2011 17:21
von AND51
Tipp: Falls du das mit Apache direkt nicht hinbekommst, kannst du das "manuell" machen, indem du ein Perl- oder PHP-Skript vorschaltest. Dieses Skript soll dann den User per Zufall auf Mirror A oder B verweisen, indem es den Code "300 Temporary Redirect" ausgibt.
Oder du gibst stumpf per Skript oder .htaccess-Datei den Code "300 Multiple Choice" zurück.
Schau mal hier bei Wikipedia für HTTP Status Codes:
http://de.wikipedia.org/wiki/HTTP-Statuscode
Re: Apache: Einfaches Load-Balancing ?
Verfasst: 01.05.2011 19:11
von c4s
So, ich möchte das hier nochmal aufwärmen, da ich vor 2 Monaten (schon wieder solange her

) zu keiner mir verständlichen bzw. umsetzbaren Lösung gekommen bin.
@AND51
Es geht hierbei um Downloadlinks, die ich den Usern bereitstelle und durch PAD-Dateien auf diversen Downloadseiten veröffentliche. Die Links müssen direkt auf die Datei sein zumal sie sowieso schon länger "in aller Munde" sind.
Ich hatte gerade eben das Web durchforstet und wieder nichts gefunden, was meiner Vorstellung entspricht... Aber sowas
muss es doch geben?!
Pseudo-Code:
Code: Alles auswählen
If Random(2) = 1
Redirect, Download: seite-b.de/datei1.zip ; Download zu ~33% umleiten, um Traffic zu sparen
Else
Download: seite-a.de/datei1.zip ; Regulärer Link, der besucht wird
EndIf
Re: Apache: Einfaches Load-Balancing ?
Verfasst: 01.05.2011 20:49
von TomS
Wenn direkt Links schon im web kursieren, die weiterhin gültig sein sollen, sieht's eher schlecht aus.
Je mehr Dateitypen du hast und je komplexer deine Ordnerstruktur ist, desto schwieriger wird's.
Wenn du aber nur ZIP-Dateien hast, die allesamt in seite-a.tld/downloads/ liegen, kann man das mit Mod_Rewrite und PHP lösen.
Mit Mod_Rewrite leitest du seite-a.tld/downloads/packagename.zip auf seite-a.tld/download.php?name=packaname.zip um.
In php machst du dann deine Random-Abfrage und leitest entweder auf seite-b.tld/downloads/packaname.zip um, oder du liest die Datei ein und bietest sie von php aus zum Download an (du kannst nicht auf das Zip-File direkt linken, weil du wegen Mod_Rewrite wieder bei der php-Seite landen würdest).
Re: Apache: Einfaches Load-Balancing ?
Verfasst: 02.05.2011 07:26
von DarkDragon
Hier mal ein kleines Beispiel, welches du einfach als downloadDatei1.php hochladen kannst:
Code: Alles auswählen
<?php
if(rand(0, 1) == 0) {
header('Location: http://seite-b.de/datei1.zip');
} else {
header('Location: http://seite-a.de/datei1.zip');
}
exit;
?>
Das dürfte so funktionieren.