SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque (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
 

Semelhante a JBoss 7 als Plattform für hochverfügbare Anwendungen

MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
Tobias Trelle
 

Semelhante a 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