Apache: Einfaches Load-Balancing ?

Fragen zu allen anderen Programmiersprachen.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Apache: Einfaches Load-Balancing ?

Beitrag von c4s »

Der Download-Traffic, den meine mit PureBasic erstellten Programme erzeugen :allright:, 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. :wink:
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Apache: Einfaches Load-Balancing ?

Beitrag 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
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: Einfaches Load-Balancing ?

Beitrag 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".
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: Apache: Einfaches Load-Balancing ?

Beitrag 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
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: Einfaches Load-Balancing ?

Beitrag von c4s »

So, ich möchte das hier nochmal aufwärmen, da ich vor 2 Monaten (schon wieder solange her :shock: ) 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
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Apache: Einfaches Load-Balancing ?

Beitrag 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).
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Apache: Einfaches Load-Balancing ?

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten