Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies
Agenda Einführung in Zend Server und ZSCM Überblick über PHP Sessions Zend Session Clustering Session Hochverfügbarkeit Skalierung (up/down) mit Session Clustering 2 Session Storage im ZSCM
Zend Server Cluster Manager Zend s leading PHP Web Application Server just got Clustered
Was ist Zend Server? Zend s Web Application Server für PHP Bietet eine stabile, zertifizierte PHP Umgebung mit weiteren Features Teile im Zend Server Community Edition (aber nicht das Clustering Feature) Ähnliche, konsistente Umgebung für Linux und Windows Performance: Opcode Caching, Data Caching, Page Caching Zuverlässigkeit: Monitoring, Security Hot Fixes, Code Tracing Infrastruktur: Job Queue, Session Clustering 4 Session Storage im ZSCM
Was ist Zend Server Cluster Manager? Zentrale Managementstelle für einen Cluster mit Zend Server Instanzen Zentrales Konfigurationsmanagement Zentrales Monitoring Session Clustering 5 Session Storage im ZSCM
PHP und Sessions Representing state over a stateless protocol
User Sessions in HTTP HTTP ist ein statusloses Protokoll es gibt keine User Session Vergleich: HTTP zu FTP oder SSH Das HTTP Protokoll definiert keinen Weg, der eine Reihe von Requests einem einzelnen User zuweist Requests eines einzelnen Users können über eine oder mehrere TCP Connection gesendet werden Auch mehrere Connections parallel Pro: HTTP skaliert sehr gut Contra: User Status muss über die Applikation abgebildet werden 7 Session Storage im ZSCM
User Sessions in HTTP Ein einfacher Use Case: Eingeloggte User identifizieren Bei zwei aufeinanderfolgenden Request: Woher weiß man, dass sie vom selben User kommen? Wie kann ich feststellen, dass ein User eingeloggt ist, bevor diverse Aktionen autorisiert werden? Zusammenhängende, vom gleichem User stammende Requests identifizieren Informationen die zu einem User gehören über mehrere Requests hinweg speichern 8 Session Storage im ZSCM
PHP Sessions sind die Rettung! PHP bietet einen eingebauten Mechanismus, um User Session zu verarbeiten Eine Serie von Requests eines Users werden über eine Session ID eindeutig identifiziert Die Session ID wird vom Browser zum Server über ein Cookie oder GET/POST Parameter geschickt Um semipersistente Session Daten zu speichern, benutzt PHP einen Session Save Handler Es gibt sehr viele Session Save Handler - das Umschalten erfordert in der Regel keine Code-Änderungen 9 Session Storage im ZSCM
Session Handling in PHP 10 Session Storage im ZSCM
Sessions vs. Cookies HTTP Cookies können benutzt werden, um nutzerspezifische semipersistente Daten zu speichern und dadurch den Status abzubilden Anders als PHP Sessions, werden Cookies auf der Client Seite gespeichert Die Applikation sollte Daten aus einem Cookie nie vertrauen Cookie Daten werden bei jedem Request zwischen Browser und Server hin und her geschickt Große Datenmengen sollten nicht im Cookie gespeichert werden Cookies sind gut geeignet um Session ID zu transferieren 11 Session Storage im ZSCM
Unterschiedliche Session Handling Mechanismen Default mäßig speichert PHP Session Daten in lokalen Files Andere Save Handler können über Extensions oder im PHP Code implementiert werden In den meisten Fällen ist es sehr schwierig zu skalieren, wenn local file storage eingesetzt wird Sticky Loadbalancer kann helfen, hat aber auch Nachteile NFS ist eine schlechte Idee Es sind verschiedene clusterfähige Session Save Handler verfügbar 12 Session Storage im ZSCM
Zend Session Clustering Designed and built for serious session handling
Was macht Session Clustering? Session Clustering ist ein PHP Session Storage Mechanismus Session Clustering ist skalierbar Session Clustering ist fehlertolerant Session Clustering ist schnell Session Clustering ist cloudfähig Session Clustering kann transparent bei nahezu jeder PHP Applikation eingesetzt werden 14 Session Storage im ZSCM
Wie arbeitet Session Clustering? Session Clustering besteht aus zwei Hauptteilen: Session Clustering Extension (mod_cluster Save Handler) Session Clustering Daemon ( SCD ) Meiste Arbeit übernimmt der Daemon Die Extension ist verantwortlich für die Kommunikation zwischen PHP und dem Daemon Session werden auf Platte oder in den Speicher geschrieben Daemons im Cluster kommunizieren untereinander um Sessions zu teilen Jede Session wird auf zwei Servern gespeichert Master und Backup Server 15 Session Storage im ZSCM
Architektonischer Überblick 16 Session Storage im ZSCM
Speichern und Laden von Session Daten Wird eine neue Session durch einen User gestartet, wird sie auf dem Server erstellt, der den Request erhalten hat Dieser Server wählt einen Backup Server und kopiert die Session dorthin Die Session ID hat ein spezielles Format: sie identifiziert den Master und Backup Server Ein Request auf einem anderen Server als dem Master holt sich die Session Daten vom Master. 17 Session Storage im ZSCM
Normale Operation 18 Session Storage im ZSCM
Hochverfügbarkeit Wenn der Master Server down ist Der den Request empfangende Server holt sich die Daten vom Backup Server Der Backup Server bestimmt sich selbst zum neuen Master Der Backup Server bestimmt einen neuen Backup Server Wenn der Backup Server down ist Der Master Server bestimmt einen neuen Backup Server Die Session ID wird angepasst 19 Session Storage im ZSCM
Failure Handling 20 Session Storage im ZSCM
Skalierbarkeit & Cloud-Fähigkeit Session Clustering unterstützt ein Graceful Shutdown Mechanismus Wenn eine Maschine down ist, transferiert sie alle Sessions zu einem anderen Server im Cluster Alle Cluster Knoten nutzen den Replacement Server solange der Original-Server down ist Dieser Prozess dauert in etwa 30 Sekunden Graceful Shutdown erlaubt das Herunterfahren von Maschinen für Maintenance ohne Sessions zu verlieren Scaling down + Scaling up Cloud ready! 21 Session Storage im ZSCM
Tuning Tipps Default Settings sind für die meisten Zwecke in Ordnung, aber Session Clustering in Amazon EC2: zend_sc.ha.use_broadcast=0 Umschalten auf Disk Storage: zend_sc.storage.use_permanent_storage=1 22 Session Storage im ZSCM
Wie geht es weiter? Session Clustering Whitepaper: http://zend.com/products/server-cluster-manager/resources Download Zend Server und ZSCM 30 Tage Version Fragen? Email: jan@zend.com Produktmanager: Shahar Evron (shahar.e@zend.com) Twitter: @shevron, IRC: shevron in #zendserver on FreeNode ZendCon in Santa Clara, CA, 1. 4. Nov. 2010 23 Session Storage im ZSCM
Danke schön