Java EE hochverfügbar

471 Aufrufe

Veröffentlicht am

Folien zum Vortrag auf der JAX 2013

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
471
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
19
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Java EE hochverfügbar

  1. 1. Dirk Weil | GEDOPLANJava EE hochverfügbar
  2. 2. dirk.weil@gedoplan.deDirk Weil• GEDOPLAN GmbH, Bielefeld• Java EE seit 1998• Konzeption undRealisierung• Vorträge• Seminare• Veröffentlichungen2 Java EE hochverfügbar
  3. 3. dirk.weil@gedoplan.deHochverfügbarkeit• Lastverteilung– Große Menge von Anfragen– Verteilung auf mehrereCluster-Knoten– VerschiedeneLastverteilungsverfahren– Einzelne Anfrage wird i. d. R. verlangsamt!3 Java EE hochverfügbar
  4. 4. dirk.weil@gedoplan.deHochverfügbarkeit• Ausfallsicherheit– Mehrere redundante Cluster-Knoten– Transparentes „Fail-Over“ beiKnotenausfall– Replikation von Sitzungsdaten4 Java EE hochverfügbar
  5. 5. dirk.weil@gedoplan.deCluster-Architekturen• EinfacherCluster-Aufbau5ClientLoadBalancerDBClusterServer 1Web LogicServer 1Web LogicServlet EJBCDIJPAJMSServer 2Web LogicServer 2Web LogicServlet EJBCDIJPAJMSJava EE hochverfügbar
  6. 6. dirk.weil@gedoplan.deCluster-Architekturen• Mehrstufiger Cluster-Aufbau6Cluster 2ClientLoadBalancerDBServer 3LogicServer 3LogicEJBCDIJPAJMSServer 4LogicServer 4LogicEJBCDIJPAJMSCluster 1Server 1WebServer 1WebServletServer 2WebServer 2WebServletJava EE hochverfügbar
  7. 7. dirk.weil@gedoplan.deCluster-Architekturen• SegmentierterCluster-Aufbau7Cluster 1Server 1Web LogicServer 1Web LogicServ-letEJBCDIJPAJMSServer 2Web LogicServer 2Web LogicServ-letEJBCDIJPAJMSCluster 2Server 3Web LogicServer 3Web LogicServ-letEJBCDIJPAJMSServer 4Web LogicServer 4Web LogicServ-letEJBCDIJPAJMSDBClientLoadBalancerJava EE hochverfügbar
  8. 8. dirk.weil@gedoplan.deCluster-Architekturen• Load-Balancer = Illusion „1 Server“• Implementierungsvarianten:– Hardware– Webserver-Proxy– Cluster-aware Proxies8Load BalancerClient10.1.2.101Server 110.1.2.102Server 210.1.2.103Server 3Java EE hochverfügbar
  9. 9. dirk.weil@gedoplan.deCluster-Architekturen• Lastverteilungsverfahren:– Round-Robin– Random– Gewichtet• Sticky Session9Load BalancerClient10.1.2.101Server 110.1.2.102Server 210.1.2.103Server 3Java EE hochverfügbar
  10. 10. dirk.weil@gedoplan.deJBoss 7 im Clusterbetrieb• „Work in Progress“• Viele Änderungen7.0.x 7.1.0 7.1.1 ( 7.1.3)• Dokumentationunvollständig,teilweiseveraltet10 Java EE hochverfügbar
  11. 11. dirk.weil@gedoplan.deJBoss 7 im Clusterbetrieb• Standalone-Modus– Konfiguration …-ha.xml– Kein gemeinsames Deployment!– Autodeployment möglich.11StandaloneServerStandaloneServerStandaloneServerJava EE hochverfügbar
  12. 12. dirk.weil@gedoplan.deJBoss 7 im Clusterbetrieb• Domänen-Modus– Profil ha oder full-ha– Gemeinsames Deploymentmittels Admin-Tools– Kein Autodeployment12 Java EE hochverfügbar
  13. 13. dirk.weil@gedoplan.deJBoss 7 im Clusterbetrieb13JGroupsInfinispanStatefulSessionBeansHibernate(JPA)WebSessionHornetQ(JMS)
  14. 14. dirk.weil@gedoplan.deKonfiguration eines Clusters• Domain• Server Group imProfil haoder full-ha14 Java EE hochverfügbar
  15. 15. dirk.weil@gedoplan.deKonfiguration eines Clusters• Demo:– Master aufWindows-PC– 2 virtuelleLinux-Maschinenmit je 2 Slaves15 Java EE hochverfügbar
  16. 16. dirk.weil@gedoplan.deWeb-Anwendungenim JBoss-7-Cluster• Lastverteilung mittelsmod_cluster möglich– Dynamische Konfiguration– Lastverteilung mit serverbasierten Metriken– HTTP, HTTPS oder AJP16ApacheHTTP Server10.1.2.101JBoss110.1.2.102JBoss210.1.2.103JBoss3HTTP/HTTPS/AJPHTTP/HTTPSJava EE hochverfügbar
  17. 17. dirk.weil@gedoplan.deWeb-Anwendungenim JBoss-7-Cluster• Demo:– Clusterfähige Web-Anwendungim JBoss-Cluster– Apache Webserver mit mod_cluster aufWindows-PC17 Java EE hochverfügbar
  18. 18. dirk.weil@gedoplan.deEJBs im JBoss-7-Cluster• Proxies implementierenLastverteilungsverfahren• Erster Zugriff auf beliebigen Knoten• Weitere Zugriffe durch Proxy verteilt• Kein externer Loadbalancer nötig!• Lastverteilung nur bei Remote-Zugriffen18Node 2EJBNode 1EJBClientProxyJava EE hochverfügbar
  19. 19. dirk.weil@gedoplan.deEJBs im JBoss-7-Cluster• Demo:– Remote-Aufruf von Stateless und StatefulSession Beans19 Java EE hochverfügbar
  20. 20. dirk.weil@gedoplan.deMessaging im JBoss-7-Cluster• Verbindungsaufbau(ConnectionFactory, Connection)geschieht zufällig zu einem Knoten• Meldungsversand– PtP-Meldungen werden lastverteilt– Pub/Sub-Meldungen gehen an alle Knoten– Knoten ohne passende Consumer werdennicht bedient20 Java EE hochverfügbar
  21. 21. dirk.weil@gedoplan.deMessaging im JBoss-7-Cluster• Meldungsempfang– Nur von einem Knoten– aber: Knoten ohne passende Consumererhalten keine Meldungen21 Java EE hochverfügbar
  22. 22. dirk.weil@gedoplan.deMessaging im JBoss-7-Cluster• Ein Ausfall eines Knotens …• … wird serverseitig automatischbehandelt– Das Lastverteilungsverfahren wirdreorganisiert– Zwischenzeitlich für den ausgefallenenKnoten vorgesehene Meldungen werdenzugestellt, wenn er wieder läuft22 Java EE hochverfügbar
  23. 23. dirk.weil@gedoplan.deMessaging im JBoss-7-Cluster• Ein Ausfall eines Knotens …• … führt clientseitig zum Abbruch– sofortiges Reconnect (an anderen Knoten)möglich• Keine Meldung geht verloren, wennAuslieferung persistent!23 Java EE hochverfügbar
  24. 24. dirk.weil@gedoplan.deJPA-Entitiesim JBoss-7-Cluster• Profitieren nur indirekt– Lastverteilung Webanwendung bzw.EJBs– Failover Datenbank– Performanceerhöhung• 2nd Level Cache• Query Cache24 Java EE hochverfügbar
  25. 25. dirk.weil@gedoplan.deJPA-Entitiesim JBoss-7-Cluster• Default-Verfahren: Cache mit Invalidierung– Jeder Knoten füllt den 2nd Level Cacheselbsttätig– Schreiboperation invalidiert betroffeneEinträge auf den anderenCluster-Knoten• Andere Verfahrenmöglich, aberselten sinnvoll25JBoss1L2CJBoss2L2CJBoss3L2CJava EE hochverfügbar
  26. 26. dirk.weil@gedoplan.deInfinispan-Repl.-Verfahren• Session-Replikation– Default: An alle, asynchron• Skaliert nicht• Hohe Verfügbarkeit– Synchron– Distributed• 1 … n Kopien• Skaliert• Verringerte Verfügbarkeit26 Java EE hochverfügbar
  27. 27. dirk.weil@gedoplan.deSession Replication• Für Web-App inweb.xml aktivieren• Für EJBs serverabhängigJava EE hochverfügbar27<web-app …>…<distributable /><jboss …><jee:assembly-descriptor><c:clustering><jee:ejb-name>CounterBean</jee:ejb-name><c:clustered>true</c:clustered></c:clustering>
  28. 28. dirk.weil@gedoplan.deSession Replication• Nur Serializable!• Fat Session Problem• Braucht N-fach Speicher• Skaliert nicht, wenn Replikation an alle• Unterschiedliche Trigger• Verschiedene GranularitätenJava EE hochverfügbar28
  29. 29. dirk.weil@gedoplan.deGlassFish• Domäne– DedizierterAdmin-Server– Vollständige Kontrolleder Cluster-Serverper SSH möglichJava EE hochverfügbar29Das Bild kann zurzeit nicht angezeigt werden.
  30. 30. dirk.weil@gedoplan.deGlassFish• Lastverteilung & Failover– Web-App: HTTP Load Balancer Plug-In– EJBs: InitialContext: Random nodeEJB Proxy: Sticky / Per-Req. LBTransparent Failover– JMS: Message BrokerVerteilte DestinationsTransparent Failover möglichJava EE hochverfügbar30
  31. 31. dirk.weil@gedoplan.deGlassFish• Replikationsverfahren– In Memory– Je ein Replikat– Consistent HashAlgorithmJava EE hochverfügbar31
  32. 32. dirk.weil@gedoplan.deWebLogic• Domäne– Dedizierter Admin-Server– Rechnerübergreifendmittels Node Manager– Deployment auch aufCluster-Teile möglichJava EE hochverfügbar32
  33. 33. dirk.weil@gedoplan.deWebLogic• Lastverteilung & Failover– Web-App: Webserver-Plugin– EJBs: Replica-aware Stubs– JMS: Distributed DestinationsMigratable JMS ServersJava EE hochverfügbar33
  34. 34. dirk.weil@gedoplan.deWebLogic• Replikationsverfahren– In Memory (Primär/Sekundär)– Filesystem– DatenbankJava EE hochverfügbar34
  35. 35. Schön, dass Sie da waren!Fr, 15:30: Java EE – Lessons Learneddirk.weil@gedoplan.de

×