Squid Proxy Konfiguration, Verteilung der Last möglich?

Fallaxia

Lieutenant
Registriert
Okt. 2012
Beiträge
693
Hi Leute,

ich frage mich gerade ob es einen einfachen Weg gibt die Anfragen, die bei einem Squid Proxy eingehen auf weitere Proxys zu verteilen.

Sinn der Sache soll sein, dass ein man mehrere Internetanbindungen optimal nutzen kann und nicht eine Inet-Verbindung fest einem Proxy zugeordnet ist.

Ist es möglich die Anfragen an andere Proxys zu verteilen?

Grüße
Fallaxia
 
Geht. Mußt dir nur überlegen, nach welchem Kriterium du die Anfragen auf die verschiedenen Parent-Caches verteilen willst. So ziemlich alles theoretisch denkbare ist auch machbar.
 
So wie ich das in der Squid Doku gesehen habe ist es nur möglich nach RoundRobin bzw. TTL zu balancen.
Das Blöde dabei ist, dass es zumindest laut der Doku keine Möglichkeit gibt nach genutzter Bandbreite bzw. Anfrage Typ zu verteilen.
Ich meine es bringt ja praktisch nix wenn ich auf dem einen Proxy ein paar Downloads aktiv habe, also get Requests und der andere Proxy sich mit Syn-Ack Anfragen langweilt und somit die Verbindungen nicht wirklich entlastet werden, sondern nur mal die und mal die andere Leitung "dicht" sind.
Kennt jemand einen Weg nach Anfrage-Typ oder Bandbreite ein Loadbalancing auszuführen?
 
Fallaxia schrieb:
So wie ich das in der Squid Doku gesehen habe ist es nur möglich nach RoundRobin bzw. TTL zu balancen.
Squid kann via cache_peer_access nach allem verteilen, was sich als Kriterium für ACLs verwenden läßt, inklusive externen Progrämmchen, falls man nach Mondstand oder benutzter Bandbreite o.ä. routen möchte. Die automatischen Peer Selection Methods kommen noch dazu. ICP ignorieren. Das ist tot.

Deine Idee, nach aktuell genutzter Bandbreite zu verteilen, wird dich nicht glücklich machen. Ich kenne dein Kundschaft nicht, aber lang dauernde Download-Verbindungen, die du wahrscheinlich im Kopf hast, sind die zu vernachlässigende Ausnahme. Und selbst dort ist Verteilung nach genutzter Bandbreite wenig sinnvoll. Laß Link1 schön konstant mit einer Verbindung voll ausgelastet sein, Link2 sei frei. Alles neue geht auf Link2. Kurz später hat Link2 20 Verbindungen, die sich dank TCP brav den Kanal teilen. Nach genutzer Bandbreite wären nun beide Links gleich ausgelastet und weitere Request würden 1:1 auf beide verteilt ...

Es ist besser, gleich von Beginn an mit einer Verteilung auf alle Parents anzufangen statt erst im Nachhinein auf die genutzte Bandbreite zu schauen. Die 20 aus dem Beispiel sollten ca. 10:10 auf beiden Links landen, obwohl anfangs einer frei und einer voll war. Gehe von im Schnitt sehr kleinen Requests und von einem zur Zahl der Requests proportionalen Datenverkehr aus.

Ich habe mal nach dem 5. Zeichen der URL (das X in www.Xwww.tld) Gruppenweise auf Parents verteilt. Einer bekam (fiktive Werte) a-i, einer j-q, einer den Rest. Die Parents speicherten also disjunkte Daten. Das ging nach einer Weile Anpassung der Gruppen ganz gut. Heute gibts dafür CARP, was etwa das gleiche tut, aber besser verteilt. Da Plattenplatz/Speicher sehr billig ist, würde ich wohl heute alle Parents immer alle Daten cachen und miteinander reden lassen und (ggf. gewichtetes) Round Robin auf sie machen.

Wenn es dir gar nicht um Caching sondern primär um Loadbalancing über mehrer Uplinks geht, ist squid nicht die Lösung für dein Problem. Caching würde man ja VOR den Uplinks machen, wenn die Bandbreite der Uplinks so heikel ist.
 
Zuletzt bearbeitet:
Zurück
Oben