SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Session Storage im
Zend Server Cluster Manager
Jan Burkl
System Engineer, Zend Technologies

Das Webinar kann hier angeschaut werden:
http://www.zend.com/de/webinar/ZSCM/70170000000bIaI-Session-
Storage-ZSCM-20100722_DE.flv




                                               © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Zend Server Cluster Manager
Zend’s leading PHP Web Application Server just got Clustered




                      © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
PHP und Sessions
Representing state over a stateless protocol




                       © All rights reserved. Zend Technologies, Inc.
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        © All rights reserved. Zend Technologies, Inc.
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     © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Session Handling in PHP




10   Session Storage im ZSCM   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Zend Session Clustering
Designed and built for serious session handling




                       © All rights reserved. Zend Technologies, Inc.
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    © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Architektonischer Überblick




16   Session Storage im ZSCM   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Normale Operation




18   Session Storage im ZSCM   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Failure Handling




20   Session Storage im ZSCM   © All rights reserved. Zend Technologies, Inc.
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      © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
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   © All rights reserved. Zend Technologies, Inc.
Danke schön




          © All rights reserved. Zend Technologies, Inc.
Webinar

Das Webinar kann hier angeschaut werden:
http://www.zend.com/de/webinar/ZSCM/70170000000bIaI-
Session-Storage-ZSCM-20100722_DE.flv
oder
http://bit.ly/q9Sofj

(nach einer kurzen Registrierung)




                              © All rights reserved. Zend Technologies, Inc.

Weitere ähnliche Inhalte

Mehr von Zend by Rogue Wave Software

Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM iZend by Rogue Wave Software
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Zend by Rogue Wave Software
 
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)Zend by Rogue Wave Software
 
Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Zend by Rogue Wave Software
 

Mehr von Zend by Rogue Wave Software (20)

Develop microservices in php
Develop microservices in phpDevelop microservices in php
Develop microservices in php
 
Speed and security for your PHP application
Speed and security for your PHP applicationSpeed and security for your PHP application
Speed and security for your PHP application
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM i
 
Building web APIs in PHP with Zend Expressive
Building web APIs in PHP with Zend ExpressiveBuilding web APIs in PHP with Zend Expressive
Building web APIs in PHP with Zend Expressive
 
To PHP 7 and beyond
To PHP 7 and beyondTo PHP 7 and beyond
To PHP 7 and beyond
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
 
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)The Sodium crypto library of PHP 7.2 (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
 
Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)Develop web APIs in PHP using middleware with Expressive (Code Europe)
Develop web APIs in PHP using middleware with Expressive (Code Europe)
 
Middleware web APIs in PHP 7.x
Middleware web APIs in PHP 7.xMiddleware web APIs in PHP 7.x
Middleware web APIs in PHP 7.x
 
Ongoing management of your PHP 7 application
Ongoing management of your PHP 7 applicationOngoing management of your PHP 7 application
Ongoing management of your PHP 7 application
 
Developing web APIs using middleware in PHP 7
Developing web APIs using middleware in PHP 7Developing web APIs using middleware in PHP 7
Developing web APIs using middleware in PHP 7
 
The Docker development template for PHP
The Docker development template for PHPThe Docker development template for PHP
The Docker development template for PHP
 
The most exciting features of PHP 7.1
The most exciting features of PHP 7.1The most exciting features of PHP 7.1
The most exciting features of PHP 7.1
 
Unit testing for project managers
Unit testing for project managersUnit testing for project managers
Unit testing for project managers
 
The new features of PHP 7
The new features of PHP 7The new features of PHP 7
The new features of PHP 7
 
Deploying PHP apps on the cloud
Deploying PHP apps on the cloudDeploying PHP apps on the cloud
Deploying PHP apps on the cloud
 
Data is dead. Long live data!
Data is dead. Long live data! Data is dead. Long live data!
Data is dead. Long live data!
 
Optimizing performance
Optimizing performanceOptimizing performance
Optimizing performance
 
Resolving problems & high availability
Resolving problems & high availabilityResolving problems & high availability
Resolving problems & high availability
 
Developing apps faster
Developing apps fasterDeveloping apps faster
Developing apps faster
 

Session Storage in Zend Server Cluster Manager

  • 1. Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies Das Webinar kann hier angeschaut werden: http://www.zend.com/de/webinar/ZSCM/70170000000bIaI-Session- Storage-ZSCM-20100722_DE.flv © All rights reserved. Zend Technologies, Inc.
  • 2. 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 © All rights reserved. Zend Technologies, Inc.
  • 3. Zend Server Cluster Manager Zend’s leading PHP Web Application Server just got Clustered © All rights reserved. Zend Technologies, Inc.
  • 4. 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 © All rights reserved. Zend Technologies, Inc.
  • 5. 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 © All rights reserved. Zend Technologies, Inc.
  • 6. PHP und Sessions Representing state over a stateless protocol © All rights reserved. Zend Technologies, Inc.
  • 7. 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 © All rights reserved. Zend Technologies, Inc.
  • 8. 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 © All rights reserved. Zend Technologies, Inc.
  • 9. 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 © All rights reserved. Zend Technologies, Inc.
  • 10. Session Handling in PHP 10 Session Storage im ZSCM © All rights reserved. Zend Technologies, Inc.
  • 11. 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 © All rights reserved. Zend Technologies, Inc.
  • 12. 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 © All rights reserved. Zend Technologies, Inc.
  • 13. Zend Session Clustering Designed and built for serious session handling © All rights reserved. Zend Technologies, Inc.
  • 14. 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 © All rights reserved. Zend Technologies, Inc.
  • 15. 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 © All rights reserved. Zend Technologies, Inc.
  • 16. Architektonischer Überblick 16 Session Storage im ZSCM © All rights reserved. Zend Technologies, Inc.
  • 17. 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 © All rights reserved. Zend Technologies, Inc.
  • 18. Normale Operation 18 Session Storage im ZSCM © All rights reserved. Zend Technologies, Inc.
  • 19. 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 © All rights reserved. Zend Technologies, Inc.
  • 20. Failure Handling 20 Session Storage im ZSCM © All rights reserved. Zend Technologies, Inc.
  • 21. 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 © All rights reserved. Zend Technologies, Inc.
  • 22. 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 © All rights reserved. Zend Technologies, Inc.
  • 23. 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 © All rights reserved. Zend Technologies, Inc.
  • 24. Danke schön © All rights reserved. Zend Technologies, Inc.
  • 25. Webinar Das Webinar kann hier angeschaut werden: http://www.zend.com/de/webinar/ZSCM/70170000000bIaI- Session-Storage-ZSCM-20100722_DE.flv oder http://bit.ly/q9Sofj (nach einer kurzen Registrierung) © All rights reserved. Zend Technologies, Inc.