Frage

Wir haben gekämpft mit HAProxy für ein paar Tage jetzt in Amazon EC2;die Erfahrung hat bisher großartig, aber wir sind stecken quetschen mehr Leistung aus der software-load-balancer.Wir sind nicht genau Linux networking saust (wir sind ein .NET shop, normal), aber wir haben bisher gehalten, unsere eigenen Versuch, passende ulimits, Inspektion kernel-Meldungen und tcpdumps für Unregelmäßigkeiten.So weit, obwohl, wir haben erreicht ein plateau von etwa 1.700 Anfragen/Sek., bei welchem Punkt client-timeouts im überfluss (wir haben mit und optimieren httperf für diesen Zweck).Ein Mitarbeiter und ich waren zu hören die jüngsten Stack Overflow podcast, in dem der Reddit-Gründer beachten Sie, dass Ihre gesamte Website läuft eine HAProxy-Knoten, und dass es bisher noch nicht zu einem Engpass werden.Ack!Entweder es ist irgendwie nicht zu sehen, dass viele gleichzeitige Anfragen, wir tun etwas schrecklich falsch, oder die gemeinsame Natur der EC2-ist die Begrenzung der Netzwerk-stack von der Ec2-Instanz (wir sind mit einem großen instance-Typ).In Anbetracht der Tatsache, dass beide Joel und die Reddit-Gründer Stimmen zu, dass Netzwerk wird wahrscheinlich der limitierende Faktor ist, ist es möglich, dass die Einschränkung, die wir sehen?

Irgendwelche Gedanken werden sehr geschätzt!

Bearbeiten Es sieht aus wie die eigentliche Frage war nicht, in der Tat, mit der load-balancer-Knotens!Der Täter war tatsächlich der Knoten httperf, in diesem Fall.Als httperf baut und reißt einen socket für jede Anforderung, verbringt er eine gute Menge an CPU-Zeit, die im kernel.Wie wir traf die anforderungsrate höher der TCP-FIN-TTL (als 60er-Jahre-Standard) wurde das halten sockets allzu lange, und die ip_local_port_range Standard war zu niedrig für dieses Einsatzszenario.Im Grunde, nach ein paar Minuten der client (httperf) Knoten ständig erstellen und zerstören von neuen Steckdosen, die Anzahl der ungenutzten ports lief aus, und die anschließende 'Anfragen' errored-out in dieser Phase, yielding low Anfrage/sec zahlen und eine große Menge von Fehler.

Wir hatten auch angeschaut, nginx, aber Wir haben gearbeitet mit RighScale, und Sie haben drop-in-Skripte für HAProxy.Oh, und wir haben auch eine enge deadline, [natürlich], um die Schalter Komponenten, es sei denn, erweist es sich als absolut notwendig.Gottseidank wird auf AWS ermöglicht es uns zu testen, mit einem anderen setup mit nginx in parallel (wenn gerechtfertigt), und stellen Sie den Schalter über Nacht später.

Diese Seite beschreibt jedes der sysctl-Variablen ziemlich gut (ip_local_port_range und tcp_fin_timeout gestimmt waren, in diesem Fall).

War es hilfreich?

Lösung

Nicht wirklich eine Antwort auf deine Frage, aber der nginx-und Pfund-beide haben einen guten Klang als load-Balancer.Wordpress einfach geschaltet nginx mit guten Ergebnissen.

Aber genauer zu Debuggen Ihres Problems.Wenn Sie nicht sehen, sind 100% cpu-Auslastung (einschließlich I/O-wait), dann sind Sie Netzwerk gebunden, ja.EC2-intern ein gigabit-Netzwerk, versuchen Sie es mit einem XL-Instanz, so dass Sie die zugrunde liegende hardware zu sich selbst, und nicht, Sie zu teilen, gigabit-Netzwerk-port.

Andere Tipps

Nicht beantworten die Frage nicht direkt, sondern EC2 unterstützt jetzt Lastverteilung durch Elastic Load Balancing anstatt Ihre eigenen load balancer in EC2-instance.

EDIT: Amazon Route 53-DNS-service bietet jetzt einen Weg, um ein top-level-domain auf ein ELB mit einem "alias" - Eintrag.Da Amazon kennt die aktuelle IP Adresse der ELB, es kann sich wieder ein A-Datensatz für diese aktuelle IP-anstatt mit einem CNAME-Datensatz, während immer noch frei, die IP von Zeit zu Zeit.

Ja, Sie könnte verwenden Sie ein off-site-load balancer..und auf bare-metal-LVS ist eine gute Wahl, aber Ihre Wartezeit wird furchtbar sein!Es wird gemunkelt, dass Amazon wird fix die CNAME-Problem.Aber Sie sind unwahrscheinlich, https, vertiefte oder custom health checks, feedback-Agenten, url-matching, Cookies einsetzen (und einige Leute mit guter Architektur würde sagen, zu Recht.) Aber das ist, warum Scalr, RightScale und andere sind mit HAProxy in der Regel zwei von Ihnen hinter einem round-robin-DNS-Eintrag.Hier bei Loadbalancer.org wir sind gerade dabei, den launch unseres eigenen EC2 load balancing appaliance:http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ Wir planen mit SSH-Skripte intergrate mit autoskalierender in der gleichen Weise rightscale hat, alle Kommentare sehr geschätzt auf dem blog.Vielen Dank

Ich würde schauen Wechsel zu einem off-site-load-balancer, nicht in der cloud und laufen etwas wie IPVS auf top von es.[Der Grund, warum es sein würde, aus der cloud von amazon ist, weil der kernel Dinge], Wenn Amazon nicht begrenzen die Quell-IP der Pakete wird kommen aus den könnten Sie gehen mit einer einseitig load-balancing-Mechanismus.Wir tun so etwas, und es wird uns über 800.000 gleichzeitige Anfragen [obwohl wir nicht deal mit die Latenz].Ich würde auch sagen, verwenden "ab2" (apache Bank), da es ein bisschen mehr benutzerfreundlich und einfacher zu bedienen, meiner bescheidenen Meinung nach.

Auch wenn Ihr Problem gelöst.KEMP Technologies haben nun eine voll geblasen load balancer für AWS.Vielleicht sparen Sie sich einige Mühe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top