117217
Goto Top

Load Balancing mit nginx unter Windows

Hallo,
ich versuche zurzeit Load Balancing mit nginx(upstream) unter Windows einzurichten, jedoch scheint die Art, wie ich es haben möchte, so nicht einfach möglich zu sein:
upstream Full_Balance {
	    server x.x.x.x/.../GameMod.7z       weight=3;
	    server x.de/.../x.php?lang=en       resolve;
	    server drive.google.com/file/d/x/edit?usp=sharing       resolve;
	}

location /html/.../GameMod.7z {
	        proxy_pass http://Full_Balance;
			health_check;
	    }
Dieser Mod ist über 4GB groß, weswegen es sinnvoll ist, die Bandbreite aufzuteilen. Nun kann man laut dem Standard aber keine URL in upstream spezifizieren. Nun die Frage: Gibt es einen Umweg damit es doch möglich wird?

Mit freundlichen Grüßen

Content-Key: 245438

Url: https://administrator.de/contentid/245438

Printed on: April 26, 2024 at 23:04 o'clock

Member: Dani
Dani Aug 02, 2014 at 18:39:13 (UTC)
Goto Top
Moin,
Nun kann man laut dem Standard aber keine URL in upstream spezifizieren. Nun die Frage: Gibt es einen Umweg damit es doch möglich wird?
Macht auch keinen SInn. Im oberen Teil werden nur die verschiedenen Server angegeben + Optionen wie Prio oder Backup. Es setzt damit vorraus, dass der Pfad zu dieser Datei auf allen Server identisch ist und das passiert bei location.


Gruß,
Dani
Mitglied: 117217
117217 Aug 02, 2014 at 19:05:04 (UTC)
Goto Top
Danke für die Wiederholung des Standards, aber das war nicht meine Frage. Meine Frage lautet, ob es eine Möglichkeit gibt eine Anfrage zu einer Datei/Ordner(Index) so weiterzuleiten, dass nicht die Datei/Ordner(Index) zurückgegeben wird, sondern, dass man zu einer zufällig von vielen vordefinierten URL's weitergeleitet wird, die nicht dieselbe URL Struktur wie die der angefragten URL haben.

Mit freundlichen Grüßen
Member: Dani
Dani Aug 02, 2014 at 19:14:11 (UTC)
Goto Top
Guten Abend,
bin ich mir bewusst... aber der LB leitet die Anfrage direkt an die einzelnen Webserver weiter - ohne die URL zu prüfen o.ä. Dein Wunsch müsstest du auf den Webservern abbilden.


Gruß,
Dani
Mitglied: 117217
117217 Aug 02, 2014 at 19:33:32 (UTC)
Goto Top
Also gibt es mit nginx und sonstige Erweiterungen, die es für den Webserver geben sollte, keine Möglichkeit meine Frage zu ermöglichen?

Mit freundlichen Grüßen
Member: Dani
Dani Aug 02, 2014 updated at 19:43:28 (UTC)
Goto Top
Was läuft denn auf dem Backendservern für ein Webserver? Bei Apache könnte man vllt. mit .htaccess etwas erreichen.


Gruß,
Dani
Mitglied: 117217
117217 Aug 02, 2014 updated at 20:42:04 (UTC)
Goto Top
Nginx 1.7.3, Win 2012R2, PHP 5.5.14. Ich habe als Alternative schon mit JavaScript angefangen.


Mit freundlichen Grüßen
Member: aqui
aqui Aug 03, 2014 at 12:38:28 (UTC)
Goto Top
Alternative wäre vielleicht einen virtuellen Load Balancer wie den Brocade virtual ADX einsetzen. Der kann sowas, würde in einer VM auf der gleichen Maschine laufen.
http://www.brocade.com/products/all/network-functions-virtualization/pr ...
Gibts mit einer 60 Tage Testlizenz zum Austesten.
Mitglied: 117217
117217 Aug 03, 2014 updated at 15:56:07 (UTC)
Goto Top
Das ist meine Notlösung als JavaScript:

<!DOCTYPE html PUBLIC "-W3CDTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script type="text/javascript">
var pages = ['url1', 'url2', 'url3'];
function rand(Min, Max)
{
return Math.floor(Math.random() * Max) + Min;
}
if (rand(0,100) < 16)
{
window.location = pages[2];
}
else
{
if (rand(0,100) < 16)
{
window.location = pages[1];
}
else
{
window.location = pages;
}
}
</script>
</body>
</html>
Mitglied: 16568
16568 Aug 04, 2014 at 04:16:34 (UTC)
Goto Top
Anscheinend hast Du das hier gelesen, aber nicht verstanden...

Lonesome Walker
Mitglied: 117217
117217 Aug 08, 2014 at 23:29:07 (UTC)
Goto Top
Anscheinend hast Du es nicht verstanden. Mit "upstream" müssen die Daten auf jeden der angegebenen Server unter den gleichen Pfaden hinterlegt sein, da das aber nicht der Fall ist (siehe Post #1, Quelltextzeile 2-4), kann es für die von mir benötigte Funktion nicht verwendet werden. Und somit ist auch das, worauf Du hingewiesen hast, nutzlos. Zumindest funktioniert es mit der JavaScript-Lösung.

Mit freundlichen Grüßen
Mitglied: 16568
16568 Aug 09, 2014 at 10:24:31 (UTC)
Goto Top
Zitat von @117217:
Anscheinend hast Du es nicht verstanden.

Öhm, das denke ich doch wohl...

Mit "upstream" müssen die Daten auf jeden der angegebenen Server unter den
gleichen Pfaden hinterlegt sein

RÖCHTÖÖÖCH.

da das aber nicht der Fall ist (siehe Post #1, Quelltextzeile 2-4), kann es für die von mir
benötigte Funktion nicht verwendet werden.

RÖÖÖCHTÖÖÖÖCH.

Und somit ist auch das, worauf Du hingewiesen hast, nutzlos.

Was denkst Du, WARUM ich darauf hingewiesen habe?
Du hast das mit Proxy wahrscheinlich gegoogelt, und bist auf den manpages zu nginx hängen geblieben;
hast aber nicht erkannt, daß das, was Du brauchst, kein Proxy ist. (oder brauchst Du Sessionverwaltung und SSL-Terminierung?)

Zumindest funktioniert es mit der JavaScript-Lösung.

Klar, solange jeder Javascript an hat. *kopfschüttel*


Lonesome Walker