Microsoft Azure erfordert, dass Anwendungen zwei Instanzen in mehreren Rechenzentren verwenden, um ihre SLA "Hochverfügbarkeit" zu erreichen und sicherzustellen, dass Ihre Websites nicht für die routinemäßige Wartung ausfallen. Sie sagen Ihnen sogar, welche Paare von Rechenzentren niemals gleichzeitig gewartet werden.
Das ist alles schön und gut, aber wie würden Sie dies in der Praxis für eine App wie WordPress mit einer MySQL-Datenbank auf derselben VM einfach tun? Der Lastausgleich zwischen zwei VMs ist mir nicht fremd, aber das Setup für die Datenbankreplikation entgeht mir. Wir möchten nicht, dass zwei Versionen der Daten nicht mehr synchron sind. Die MySQL-Replikation scheint ein Master-Slave-Setup zu erfordern, bei dem Änderungen nicht mit der Master-Datenbank synchronisiert werden können, wenn ein Benutzer auf der Slave-Instanz landet.
Verstehe ich dieses Konzept nur falsch? Jede Hilfe wird sehr geschätzt!
Antworten:
Die schlechte Nachricht: Die Open Source-Kernbasis von Wordpress geht von einigen Annahmen über die Ausführung auf einem einzelnen Server aus (WP-Inhalt, Benutzer-Uploads und Medienbibliothek, um nur einige zu nennen).
Die gute Nachricht: Nahezu alle Cloud-Anbieter (einschließlich Azure) verfügen über Abstraktionen, mit denen Sie diese Designeinschränkungen umgehen können.
Grundsätzlich werden Sie folgende Bedenken ansprechen:
Verwalten von Sitzungen WENN Sie Benutzern erlauben, sich bei den Sites anzumelden. In diesem Fall müssen Sie bei der Anmeldung bei Server 1 sicherstellen, dass entweder alle zukünftigen Anforderungen an diesen Server weitergeleitet werden (Sticky Sessions) oder dass es keine Rolle spielt, auf welchen Server sie zugreifen, da Sitzungen über einen anderen Mechanismus verwaltet werden ( zum Beispiel über Zend Server Session Clustering ).
Verwalten von Administratoranmeldungen WENN Sie einige Benutzer beim Back-End anmelden lassen, um Inhalte zu verwalten (ähnlich wie oben).
Auswahl eines DB-Systems, das AUCH hoch verfügbar ist. Es macht keinen Sinn, zwei Front-End-Server zu haben, wenn Ihre Datenbank abstürzt und das gesamte System ausfällt. Sie müssen die MySQL Master / Slave-Replikation über ClearDB nutzen oder WordPress über das Plugin ändern, um SQL Server zu nutzen, damit Sie die nativen Clustersysteme verwenden können . Dies bedeutet, dass Sie mindestens 4 VMs benötigen, wenn Sie die DB-Schicht selbst verwalten möchten (2 x App & 2 x DB). So könnte das aussehen:
HINWEIS - Um ein zuverlässiges Failover zu gewährleisten und die Sicherheit des Systems zu schützen, wird normalerweise ein DRITTES Netzwerk-Subnetz verwendet, um die beiden Datenbankknoten über einen privaten Kanal miteinander zu verbinden, der von den anderen Kommunikationsnetzwerken getrennt ist, mit denen die App-Server kommunizieren Die Datenbank und die App-Server kommunizieren mit der Außenwelt.
Aktivieren des Verbindungspools, um die Leistung und Zuverlässigkeit der Datenbankverbindungen Ihres App-Servers zu maximieren.
Nutzen Sie ein Caching-Plugin wie W3 Total Cache oder Super Cache, um die Belastung der Front-End-Server zu minimieren.
Die folgenden Anleitungen enthalten Einzelheiten dazu, wie Sie die oben genannten Herausforderungen bewältigen können. In Azure gibt es verschiedene Möglichkeiten, um mit jeder Aufgabe umzugehen. Sie müssen also entscheiden, wie Sie jede Herausforderung angreifen möchten, und dann die Einschränkungen zu bewältigen, die jede dieser Auswahlmöglichkeiten beim Auf- und Abarbeiten des Stapels mit sich bringt.
quelle