Steigende Ladekapazität für wachsende Websites

Steigende Ladekapazität für wachsende Websites

Meine Website läuft derzeit auf einem dedizierten Webserver (mit LiteSpeed) und einem dedizierten MySQL-Datenbankserver. Es handelt sich um eine Download-basierte Site mit vielen benutzergenerierten Inhalten, die gestreamt und heruntergeladen werden können. Es gibt auch Tausende von Miniaturansichten und statischen Inhalten.

Ich bin an einem Punkt angelangt, an dem der Webserver das Datenverkehrsaufkommen nicht mehr bewältigen kann. Daher suche ich nach einer Möglichkeit, die Kapazität angesichts der großen Menge herunterladbarer Inhalte am besten zu erhöhen.

Mein Host schlägt vor, alles auf einem zweiten Webserver zu spiegeln und die Last entweder mit DNS Made Easy zwischen ihnen zu verteilen oder einen eigenen Load Balancer (mit ldirector) vor den beiden Webservern zu platzieren.

Kann mir jemand sagen, ob die obige Methode die beste Option ist? Hat jemand Erfahrung mit DNS Made Easy und/oder ldirector?

Ich wäre für jede Hilfe dankbar.

Antwort1

Zuallererst müssen Sie verstehen, wo der Engpass liegt, bevor Sie Fortschritte erzielen können.

Gastgeber empfehlen gerne neue Hardware, doch in vielen Fällen bringt neue Hardware keine nennenswerten Verbesserungen, es sei denn, es sind offensichtliche Hardwareeinschränkungen vorhanden.

Das Hinzufügen von Hardware führt zu abnehmenden Erträgen, wenn es nicht intelligent durchgeführt wird. Wenn Sie von einem Server auf zwei aufstocken, verdoppeln Sie möglicherweise Ihre Ressourcen, aber Sie müssen dann von 2 auf 4 und von 4 auf 8 aufstocken, um den gleichen Zuwachs zu erzielen.

Überwachen und Messen

Wenn Sie keine Systemmetriken, Ladezeiten und andere Daten überwachen, sollten Sie damit beginnen. Kostenlose Tools wie Munin und systat sind für Serverlösungen hervorragend geeignet. Tools wiehttp://Browsermob.comUndhttp://webpagetest.orgkann Ihnen benutzerorientierte Metriken liefern.

Segmentverkehr

Normalerweise ist die direkte Portierung einer komplexen Mediensite auf einen anderen Server nicht sehr effektiv. Durch die Segmentierung des Datenverkehrs erzielen Sie oft bessere Ergebnisse für Ihre Investition.

Wir haben beispielsweise einen Kunden mit einer sehr aktiven Flash-Game-Site (Millionen Zugriffe pro Tag). Wir haben die Flash-Games auf einen Pool kostengünstiger Server ausgelagert, auf denen Nginx läuft. Diese Systeme erzeugen monatlich mehrere TB an Datenverkehr. Dabei handelt es sich um Einsteiger-Boxen, die nur statische Inhalte liefern.

Was die Kosten angeht, waren diese beiden Einstiegsboxen zusammen 20 % günstiger als der primäre Server. Wir haben eine mehr als vierfache Kapazitätsverbesserung erreicht. Wenn wir einfach den primären Server geklont und die Last ausgeglichen hätten, hätte die Verbesserung vermutlich bestenfalls das 1,5- bis 1,8-Fache betragen.

Kurz gesagt: Wenn Sie sich etwas Mühe geben, um das Leistungsproblem im Kern zu verstehen, können Sie später viel Geld sparen.

DNS leicht gemacht

Dies ist eine DNS-Lösung und befasst sich nicht wirklich mit Lastenausgleich. Möglicherweise sprechen sie von Round-Robin-DNS. Ich bin mir nicht wirklich sicher, warum dies zu diesem Zeitpunkt in die Gleichung einbezogen wurde.

Regisseur

Dies ist ein Tool zum Verwalten von Knoten in einem LVS-Cluster. Auch hier bin ich nicht sicher, warum dieses spezielle Element vorgeschlagen wurde. Normalerweise verwenden wir einfach einen Load Balancer (Hardware oder etwas wie Nginx/HA-Proxy) und leiten den Datenverkehr an die entsprechenden Backend-Server weiter.

Antwort2

DNS-basierter Lastenausgleich ist aus mehreren Gründen nicht gut:

  1. Sie können steuern, wie auf Ihre Server zugegriffen wird, und Sie können den Datenverkehr nicht unterschiedlich oder gleichmäßig zwischen den beiden Servern verteilen.
  2. Wichtiger noch: Bei dieser Art des Lastenausgleichs werden Serverausfälle nicht erkannt. Wenn also einer der Server unerwartet ausfällt, geht ein Teil des Datenverkehrs verloren.
  3. DNS-Caching macht es noch schlimmer.

Ich bevorzuge eine intelligentere Lastausgleichstechnik wie ldirectoroder haproxy. Diese Art des Lastausgleichs ermöglicht es Ihnen, den Datenverkehr entsprechend den Serverspezifikationen und unter Berücksichtigung mehrerer Faktoren (Last, Anzahl der Verbindungen usw.) zu verteilen.

Es gibt noch eine weitere wichtige Sache zu beachten. Sie sagten, Sie hätten eine MySQL-Datenbank und Benutzerinhalte auf dem Server. Wenn Sie den Datenverkehr zwischen den beiden Servern verteilen möchten, benötigen Sie einen Synchronisierungsmechanismus zwischen den beiden Servern. Andernfalls sehen die Benutzer nicht immer dieselben Daten, wenn sie jedes Mal auf einen anderen Server zugreifen.

verwandte Informationen