SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
JBoss 7 als Plattform für
hochverfügbare Anwendungen



Expertenkreis Java
14.03.2013, GEDOPLAN

Dirk Weil, GEDOPLAN GmbH
Hochverfügbarkeit

  Lastverteilung
     Große Menge von Anfragen
     Verteilung auf mehrere Cluster-Knoten
     Verschiedene Lastverteilungsverfahren
     Einzelne Anfrage wird i. d. R. verlangsamt!

  Ausfallsicherheit
     Mehrere redundante Cluster-Knoten
     Transparentes „Fail-Over“ bei Knotenausfall
     Replikation von Sitzungsdaten


                                                   2
Cluster-Architekturen

Einfacher Cluster-Aufbau
                                              Cluster



                                           JBoss 1
                                    JSPs             EJBs

                   Load Balancer
                                   Servlets         JDBC
          Client                                            Datenbank


                                           JBoss 2
                                    JSPs             EJBs



                                   Servlets         JDBC




                                                                        3
Cluster-Architekturen

  Mehrstufiger Cluster-Aufbau

                                     Cluster 1   Cluster 2


                                     JBoss 1     JBoss 3



                     Load Balancer
                                      JSPs         EJBs

                                     Servlets     JDBC       Datenbank
            Client

                                     JBoss 2     JBoss 4

                                      JSPs         EJBs

                                     Servlets     JDBC




                                                                         4
Cluster-Architekturen
                                              Cluster 1


Segmentierter Cluster-Aufbau
                                                JBoss 1
                                         JSPs         EJBs


                                        Servlets      JDBC



                                                JBoss 2
                                         JSPs         EJBs


                                        Servlets      JDBC




                        Load Balancer
                                              Cluster 2

               Client                           JBoss 3      Datenbank
                                         JSPs         EJBs


                                        Servlets      JDBC



                                                JBoss 4
                                         JSPs         EJBs


                                        Servlets      JDBC




                                                                         5
Cluster-Architekturen

  Load-Balancer erzeugt Illusion „einzelner Server“
  Implementierungsvarianten:
      Hardware
      Webserver-Proxy
      Cluster-aware Proxies
  Lastverteilungsverfahren:
      Round-Robin                                     10.1.2.100
                                                                   JBoss1

      Random                                          10.1.2.101
                      Client        Load Balancer                  JBoss2
      Gewichtet
  Sticky Session                                      10.1.2.102
                                                                   JBoss3




                                                                            6
JBoss 7 im Clusterbetrieb

  „Work in Progress“
  Viele Änderungen 7.0.x   7.1.0    7.1.1 ( 7.1.2)
  Dokumentation unvollständig, teilweise veraltet




                                                     7
JBoss 7 im Clusterbetrieb

  Standalone-Modus
                                                 Standalone
     Konfiguration …-ha.xml                        Server


     Kein gemeinsames Deployment!   Standalone
                                      Server
     Autodeployment möglich.
                                                   Standalone
                                                     Server


  Domänen-Modus
    Profil ha oder full-ha
    Gemeinsames Deployment
    mittels Admin-Tools
    Kein Autodeployment


                                                                8
Web
                              Session
                                             JBoss 7 im Clusterbetrieb




                              Stateful
                           Session Beans

    JGroups
              Infinispan
                           Hibernate (JPA)


                      HornetQ (JMS)

9
Konfiguration eines Clusters

  Domain
  Server Group im
  Profil ha oder full-ha




                               10
Konfiguration eines Clusters

  Demo:
     Master auf Windows-PC
     2 virtuelle
     Linux-Maschinen
     mit je 2 Slaves




                               11
Web-Anwendungen im JBoss-7-Cluster


  Lastverteilung mittels mod_cluster möglich
     Dynamische Konfiguration
     Lastverteilung mit serverbasierten Metriken
     HTTP, HTTPS oder AJP                                                   10.1.2.100
                                                                                         JBoss1
                                      Apache HTTP Server
                                                                            10.1.2.101
                         HTTP/HTTPS                        HTTP/HTTPS/AJP                JBoss2


                                                                            10.1.2.102
                                                                                         JBoss3




                                                                                              12
Web-Anwendungen im JBoss-7-Cluster

  Demo:
     Clusterfähige Web-Anwendung im JBoss-Cluster
     Apache Webserver mit mod_cluster auf Windows-PC




                                                       13
EJBs im JBoss-7-Cluster

  Proxies implementieren Lastverteilungsverfahren
  Erster Zugriff auf beliebigen Knoten
  Weitere Zugriffe durch Proxy verteilt

  Kein externer Loadbalancer nötig!                 Node 1
                               Client                EJB
                                        Proxy
                                                             Node 2
                                                              EJB

  Lastverteilung nur bei Remote-Zugriffen




                                                                      14
EJBs im JBoss-7-Cluster

  Demo:
     Remote-Aufruf einer Stateless Session Bean
     Remote-Aufruf einer Stateful Session Bean




                                                  15
Messaging 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 werden nicht bedient

  Meldungsempfang
     Nur von einem Knoten
     aber: Knoten ohne passende Consumer erhalten keine Meldungen
                                                              16
Messaging im JBoss-7-Cluster

  Ein Ausfall eines Knotens …

  … wird serverseitig nach einigen Sekunden bemerkt
     Das Lastverteilungsverfahren wird reorganisiert
     Zwischenzeitlich für den ausgefallenen Knoten vorgesehene
     Meldungen werden zugestellt, wenn er wieder läuft

  … führt clientseitig zum Verbindungsabbruch
     sofortiges Reconnect (an anderen Knoten) möglich

  Keine Meldung geht verloren, wenn Auslieferung persistent!
                                                                 17
JPA-Entities im JBoss-7-Cluster

  Profitieren nur indirekt
     Lastverteilung Webanwendung bzw. EJBs
     Failover     Datenbank

     Performanceerhöhung
        2nd Level Cache
        Query Cache




                                             18
JPA-Entities im JBoss-7-Cluster

  Default-Verfahren: Caching mit Invalidierung
     Jeder Knoten füllt den 2nd Level Cache selbsttätig
     Schreiboperation invalidiert betroffene Einträge auf den anderen
     Cluster-Knoten
                                                           L2C


  Andere Verfahren                                JBoss2


  möglich, aber                         L2C


  selten sinnvoll              JBoss1
                                                                     L2C

                                                            JBoss3




                                                                           19
Schön, dass Sie da waren!



Unsere nächsten Termine:
16.05.2013: Desktop Usability im Browser - GWT in Business Anwendungen
04.07.2013: jBPM und Drools: Prozess- und Regelgestützte Fachanwendungen




                                                              dirk.weil@gedoplan.de

Weitere ähnliche Inhalte

Andere mochten auch

How to think like a startup
How to think like a startupHow to think like a startup
How to think like a startupLoic Le Meur
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakShelly Sanchez Terrell
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Andere mochten auch (6)

Mi ple
Mi pleMi ple
Mi ple
 
Inaugural Addresses
Inaugural AddressesInaugural Addresses
Inaugural Addresses
 
How to think like a startup
How to think like a startupHow to think like a startup
How to think like a startup
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & Textspeak
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Ähnlich wie JBoss 7 als Plattform für hochverfügbare Anwendungen

JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7hwilming
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
JBoss AS 7 als Plattform moderner Enterprise-Anwendungen
JBoss AS 7 als Plattform moderner Enterprise-AnwendungenJBoss AS 7 als Plattform moderner Enterprise-Anwendungen
JBoss AS 7 als Plattform moderner Enterprise-Anwendungengedoplan
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?GFU Cyrus AG
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6GFU Cyrus AG
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMichael Hofmann
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering hwilming
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnRoman Roelofsen
 

Ähnlich wie JBoss 7 als Plattform für hochverfügbare Anwendungen (12)

JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
 
Arquillian
ArquillianArquillian
Arquillian
 
BED Con JBoss
BED Con JBossBED Con JBoss
BED Con JBoss
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
JBoss AS 7 als Plattform moderner Enterprise-Anwendungen
JBoss AS 7 als Plattform moderner Enterprise-AnwendungenJBoss AS 7 als Plattform moderner Enterprise-Anwendungen
JBoss AS 7 als Plattform moderner Enterprise-Anwendungen
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM Liberty
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering
 
Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
 

JBoss 7 als Plattform für hochverfügbare Anwendungen

  • 1. JBoss 7 als Plattform für hochverfügbare Anwendungen Expertenkreis Java 14.03.2013, GEDOPLAN Dirk Weil, GEDOPLAN GmbH
  • 2. Hochverfügbarkeit Lastverteilung Große Menge von Anfragen Verteilung auf mehrere Cluster-Knoten Verschiedene Lastverteilungsverfahren Einzelne Anfrage wird i. d. R. verlangsamt! Ausfallsicherheit Mehrere redundante Cluster-Knoten Transparentes „Fail-Over“ bei Knotenausfall Replikation von Sitzungsdaten 2
  • 3. Cluster-Architekturen Einfacher Cluster-Aufbau Cluster JBoss 1 JSPs EJBs Load Balancer Servlets JDBC Client Datenbank JBoss 2 JSPs EJBs Servlets JDBC 3
  • 4. Cluster-Architekturen Mehrstufiger Cluster-Aufbau Cluster 1 Cluster 2 JBoss 1 JBoss 3 Load Balancer JSPs EJBs Servlets JDBC Datenbank Client JBoss 2 JBoss 4 JSPs EJBs Servlets JDBC 4
  • 5. Cluster-Architekturen Cluster 1 Segmentierter Cluster-Aufbau JBoss 1 JSPs EJBs Servlets JDBC JBoss 2 JSPs EJBs Servlets JDBC Load Balancer Cluster 2 Client JBoss 3 Datenbank JSPs EJBs Servlets JDBC JBoss 4 JSPs EJBs Servlets JDBC 5
  • 6. Cluster-Architekturen Load-Balancer erzeugt Illusion „einzelner Server“ Implementierungsvarianten: Hardware Webserver-Proxy Cluster-aware Proxies Lastverteilungsverfahren: Round-Robin 10.1.2.100 JBoss1 Random 10.1.2.101 Client Load Balancer JBoss2 Gewichtet Sticky Session 10.1.2.102 JBoss3 6
  • 7. JBoss 7 im Clusterbetrieb „Work in Progress“ Viele Änderungen 7.0.x 7.1.0 7.1.1 ( 7.1.2) Dokumentation unvollständig, teilweise veraltet 7
  • 8. JBoss 7 im Clusterbetrieb Standalone-Modus Standalone Konfiguration …-ha.xml Server Kein gemeinsames Deployment! Standalone Server Autodeployment möglich. Standalone Server Domänen-Modus Profil ha oder full-ha Gemeinsames Deployment mittels Admin-Tools Kein Autodeployment 8
  • 9. Web Session JBoss 7 im Clusterbetrieb Stateful Session Beans JGroups Infinispan Hibernate (JPA) HornetQ (JMS) 9
  • 10. Konfiguration eines Clusters Domain Server Group im Profil ha oder full-ha 10
  • 11. Konfiguration eines Clusters Demo: Master auf Windows-PC 2 virtuelle Linux-Maschinen mit je 2 Slaves 11
  • 12. Web-Anwendungen im JBoss-7-Cluster Lastverteilung mittels mod_cluster möglich Dynamische Konfiguration Lastverteilung mit serverbasierten Metriken HTTP, HTTPS oder AJP 10.1.2.100 JBoss1 Apache HTTP Server 10.1.2.101 HTTP/HTTPS HTTP/HTTPS/AJP JBoss2 10.1.2.102 JBoss3 12
  • 13. Web-Anwendungen im JBoss-7-Cluster Demo: Clusterfähige Web-Anwendung im JBoss-Cluster Apache Webserver mit mod_cluster auf Windows-PC 13
  • 14. EJBs im JBoss-7-Cluster Proxies implementieren Lastverteilungsverfahren Erster Zugriff auf beliebigen Knoten Weitere Zugriffe durch Proxy verteilt Kein externer Loadbalancer nötig! Node 1 Client EJB Proxy Node 2 EJB Lastverteilung nur bei Remote-Zugriffen 14
  • 15. EJBs im JBoss-7-Cluster Demo: Remote-Aufruf einer Stateless Session Bean Remote-Aufruf einer Stateful Session Bean 15
  • 16. Messaging 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 werden nicht bedient Meldungsempfang Nur von einem Knoten aber: Knoten ohne passende Consumer erhalten keine Meldungen 16
  • 17. Messaging im JBoss-7-Cluster Ein Ausfall eines Knotens … … wird serverseitig nach einigen Sekunden bemerkt Das Lastverteilungsverfahren wird reorganisiert Zwischenzeitlich für den ausgefallenen Knoten vorgesehene Meldungen werden zugestellt, wenn er wieder läuft … führt clientseitig zum Verbindungsabbruch sofortiges Reconnect (an anderen Knoten) möglich Keine Meldung geht verloren, wenn Auslieferung persistent! 17
  • 18. JPA-Entities im JBoss-7-Cluster Profitieren nur indirekt Lastverteilung Webanwendung bzw. EJBs Failover Datenbank Performanceerhöhung 2nd Level Cache Query Cache 18
  • 19. JPA-Entities im JBoss-7-Cluster Default-Verfahren: Caching mit Invalidierung Jeder Knoten füllt den 2nd Level Cache selbsttätig Schreiboperation invalidiert betroffene Einträge auf den anderen Cluster-Knoten L2C Andere Verfahren JBoss2 möglich, aber L2C selten sinnvoll JBoss1 L2C JBoss3 19
  • 20. Schön, dass Sie da waren! Unsere nächsten Termine: 16.05.2013: Desktop Usability im Browser - GWT in Business Anwendungen 04.07.2013: jBPM und Drools: Prozess- und Regelgestützte Fachanwendungen dirk.weil@gedoplan.de