Skalieren einer auf EC2 gehosteten LAMP-Website

Skalieren einer auf EC2 gehosteten LAMP-Website

Ich bin ganz neu in all dem – ich habe es vor Kurzem geschafft, meine Website auf EC2 zu starten. Als nächsten Schritt möchte ich lernen, wie ich die Website skalieren kann. Ich habe eine allgemeine Vorstellung, wollte aber von den Experten ein paar Tipps dazu, wie ich vorgehen soll.

Meine Website basiert auf LAMP, verfügt aber auch über einen Red5-Server, der es Benutzern ermöglicht, Nachrichten aufzuzeichnen und auch wiederzugeben.

Dies ist derzeit die Architektur, die ich für die erste Skalierung einrichten möchte. Stellen Sie vier kleine EC2-Instanzen für die folgenden Zwecke bereit:

Instanz-1: Auf dieser Instanz werde ich die MySql-Datenbank ausführen

Instanz-2: Auf dieser Instanz werde ich den red5-Server ausführen

Instanz-3 & Instanz-4 Diese beiden Instanzen werden zum Bereitstellen der Website verwendet und werden Apache ausführen. Sie kommunizieren mit dem MySQL-Server auf Instanz-1 und dem Red5-Server auf Instanz-2 über die interne IP-Adresse. Bei Bedarf starte ich eine weitere Instanz derselben

EBS - Ich werde ein EBS von sagen wir 50 GIG haben, in dem alle MySQL-Daten gespeichert werden. Außerdem wird red5 dieses EBS verwenden, um die Videonachrichten zu speichern

Load Balancer - Verwenden Sie den von Amazon bereitgestellten Load Balancer, um die Last zwischen Instance-3 und Instance-4 auszugleichen.

Das ist, was ich im Sinn habe. Ich könnte völlig danebenliegen, also haben Sie bitte Geduld mit mir. Außerdem habe ich die Skalierung des MySql-Servers nicht berücksichtigt, da ich derzeit keine Ahnung habe, wie das gemacht wird und ob es anfangs notwendig ist oder nicht.

Mir ist bewusst, dass Amazon auch automatische Skalierung und MySQL-Skalierung bereitstellt, aber darauf möchte ich jetzt nicht näher eingehen.

Wir freuen uns über Ihr Feedback. Danke

Antwort1

Es gibt eine ganze Reihe von Artikeln zu diesem Thema @http://highscalability.com

Ich habe AWS nicht verwendet, aber ich habe Erfahrung mit dem Ausführen virtueller Instanzen in einem Rechenzentrum, mit virtuellen Rackspace-Instanzen und AppEngine.

Wie Sie skalieren (nach oben oder nach außen), hängt weitgehend davon ab, was Sie zu tun versuchen. Einige Apps sind E/A-intensiv, andere CPU-intensiv. Ihr Engpass kann eingehende E/A, Verarbeitungsleistung oder Backend-E/A oder eine Kombination dieser drei in unterschiedlichem Ausmaß sein, je nachdem, wo Sie sich im Lebenszyklus Ihrer App befinden. Alle erfordern eine leicht unterschiedliche Strategie.

Wenn Sie etwas wie AWS verwenden, möchten Sie im Allgemeinen skalieren. Sie müssen mit dem Ende im Hinterkopf beginnen und Ihre Apps lose gekoppelt halten. Auf diese Weise können Sie eine weitere Instanz erstellen, um sie je nach Bedarf zu skalieren. Es ist in Ordnung, Ihre Datenbankinstanz zu Beginn auf derselben Instanz wie Ihre Haupt-App zu belassen, aber das ist normalerweise das Erste, was auf einen eigenen Server ausgegliedert wird.

Sie beginnen vielleicht damit, dass alles auf einer Instanz läuft. Dann kommt etwas Verkehr auf Sie zu und Sie merken, dass die Datenbank Ihre CPU-Leistung auffrisst. Sie verschieben die Datenbank also auf eine andere Instanz und alles ist prima. Bis der Verkehr zunimmt ... und Sie merken, dass Ihr Front-End mit dem Verkehr nicht mithalten kann. Dann starten Sie ein paar weitere Instanzen, führen einen Lastausgleich durch und sind eine Zeit lang zufrieden. Dann skalieren Sie auf vielleicht ein Dutzend Webserver ... Aber dann kommt mehr Verkehr auf Sie zu und während das Front-End mithält, fängt Ihre Datenbankmaschine an zu streiken. Dann replizieren Sie Ihre Datenbank auf einen Master und ein paar Slaves und alles ist in Ordnung ... und so weiter und so fort.

Antwort2

Ich habe vor einiger Zeit bei der Einführung an Amazon EC2/EBS usw. gearbeitet und eine der großen Sites erfolgreich von physischen Hosts in seine Umgebungen verschoben.

Ich habe einige meiner Erfahrungen in meinem Blog dokumentiert, wie http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/es gibt noch mehr Beiträge, aber ich kann hier keinen Link einfügen. Ich hoffe, es hilft Ihnen weiter.

verwandte Informationen