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.