Zend - The PHP Company


Hochverfügbarkeit mit Zend Server

Lesen Sie das White Paper: "Session Clustering in PHP" »

Um eine wirklich hoch verfügbare PHP-Applikation zur Verfügung zu stellen, müssen Sie diese über einen Cluster mit mehreren Servern verteilen und damit sicherstellen, dass nicht ein bestimmter Server ein einzelner Fehlerpunkt (Single Point of Failure, SPOF) ist. Redundanz ist ein wesentlicher Aspekt der Hochverfügbarkeit, und Zend Server vereinfacht es, Ihre Applikation über einen Cluster hinweg zu skalieren.

Redundanz und Ausfallsicherung sind für sich genommen jedoch nicht ausreichend. Wenn einer der Server im Cluster fehlschlägt, müssen die auf diesem Server gespeicherten PHP-Sessions auf den anderen Servern verfügbar sein. Anderenfalls stellen Benutzer fest, dass ihre Transaktionen abgebrochen oder ihre Warenkörbe leer sind, oder ihre Arbeit verloren gegangen ist. Dies ist für eine hoch verfügbare Applikation offensichtlich nicht akzeptabel.

Zend Server stellt integrierte Funktionen für das PHP-Session Clustering zur Verfügung, die für geschäftskritische Applikationen optimiert sind. Sollte eine bestimmte Benutzeranfrage von einem anderen Server gehandhabt werden, erfolgt ein nahtloses Failover der Sitzung, und der Endbenutzer nimmt keine Leistungsminderung wahr.


Funktionsweise des Zend-Session Clustering

Jede neue PHP-Sitzung wird an zwei Speicherorten gespeichert: auf einem Master-Server und auf einem Backup-Server. Wenn eine neue Session erstellt wird, wird der Server, auf dem die Anforderung zum Erstellen einer neuen Session eingegangen ist, als Master designiert, und der Session Clustering-Daemon sucht einen Backup-Server, indem er den am wenigsten ausgelasteten Server im Cluster ermittelt.



Zend Server Cluster Manager PHP Servers List

Die interne Identifizierung von sowohl Master- als auch Backup-Server wird in die dem Benutzer übergebene Session-ID codiert. Dadurch kann jeder Server im Cluster sowohl den Master- als auch den Backup-Server finden, indem er einfach das Token der Session-ID überprüft, das vom Client zur Verfügung gestellt wird. Es ist weder eine Überprüfung der Hash-Tabelle noch ein Abfragen in einer zentralen Datenbank erforderlich (wie dies der Fall bei einigen anderen Session Clustering-Techniken ist, was sich sowohl auf die Geschwindigkeit als auch auf die Skalierbarkeit auswirken kann).

Sollte eine zukünftige Anforderung von einem Server gehandhabt werden, bei dem es sich weder um den Master- noch um den Backup-Server handelt, – unabhängig davon, ob Load Balancing oder Server-Failover der Grund dafür ist – wird dem neuen Server über die Session-ID vermittelt, wo sich die Sessiondaten befinden.  Wenn der Master verfügbar ist, dann werden die Sessiondaten auf dem neuen Server zur Verfügung gestellt. Wenn der Master-Server nicht verfügbar ist, werden die Sessiondaten vom Backup-Server angefordert, der sich dann selbst als Master-Server designiert und einen neuen Backup-Server wählt. 

Skalierung und Hochverfügbarkeit

Das Session Clustering wurde mit Blick auf eine transparente, lineare Skalierbarkeit entwickelt. Während Sie dem Cluster neue Server hinzufügen, nimmt Ihre Kapazität für die lineare Handhabung zusätzlicher Sessions zu. Zend Server kümmert sich um das Aktualisieren der Konfiguration aller Clustermitglieder, sodass diese den neuen Server erkennen. Durch den eingehenden Traffic auf dem neuen Server werden neue Sessions erstellt, und der für die Auswahl der Backup-Server verwendete Algorithmus stellt sicher, dass die Verteilung der Sessionlast zwischen allen Servern letztendlich (und in der Regel innerhalb von Minuten) ausgeglichen ist.

Das Abwärtsskalieren nach einem Zeitraum mit viel Traffic ist genauso einfach, da Zend Server einen eleganten Mechanismus für das ordnungsgemäße Herunterfahren zur Verfügung stellt. Wenn ein Server aus dem Cluster entfernt wird, sucht er eines der anderen Mitglieder des Clusters, designiert dieses als Ersatzserver und überträgt alle aktiven Sessions auf diesen Server. Während dieser Zeit nimmt der zu entfernende Server keine neuen Sessions mehr an. Nach Abschluss der Übertragung (die in der Regel, je nach Speicher-Backend, Anzahl der Sessions und Netzwerkdurchsatz, zwischen wenigen Sekunden bis zu einer Minute dauert) benachrichtigt der entfernte Server alle Clustermitglieder darüber, dass er entfernt wurde.


Lesen Sie das white paper: "Session Clustering in PHP" »

Ressourcen
FOREN

Visit Forum

Mehr erfahren»

DATENBLATT

Read more about Zend Server Production Solution features

Mehr erfahren»

WEBINAR

Scalable High-Availability Session Storage with Zend Server

Mehr erfahren»

WHITE PAPER

Session Clustering in PHP - How to Implement a Scalable Failover Solution for PHP Sessions

Mehr erfahren»