3.2.8. Clustering-Änderungen

3.2.8.1. Durchführung von Änderungen an Ihrer Applikation für Clustering

  1. Starten Sie die JBoss EAP 6 mit aktiviertem Clustering

    Um Clustering in der JBoss EAP 5.x zu aktivieren müssen Sie Ihre Serverinstanzen mittels des all-Profils oder einer von dessen Ableitungen wie folgt starten:
    $ EAP5_HOME/bin/run.sh -c all
    In der JBoss EAP 6 hängt die Methode zur Aktivierung des Clustering davon ab, ob die Servers standalone sind oder in einer Managed Domain laufen.
    1. Aktivierung von Clustering für in einer Managed Domain laufenden Servern

      Um Clustering für mittels des Domain Controllers gestarteten Servern zu aktivieren, aktualisieren Sie Ihre domain.xml und designieren Sie eine Servergruppe zur Verwendung des ha-Profils und der ha-sockets-Socket-Binding-Gruppe. Zum Beispiel:
      <server-groups>
        <server-group name="main-server-group" profile="ha">
          <jvm name="default">
            <heap size="64m" max-size="512m"/>
          </jvm>
          <socket-binding-group ref="ha-sockets"/>
        </server-group>
      </server-group>
    2. Aktivierung von Clustering für Standalone Server

      Zur Aktivierung von Clustering für Standalone Server starten Sie den Server unter Verwendung der passenden Konfigurationsdatei wie folgt:
      $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME
  2. Spezifizieren Sie die Bind-Adresse

    Bei der JBoss EAP 5.x würden Sie normalerweise die für das Clustering zu verwendende Bind-Adresse unter Verwendung des -b-Befehlszeilenarguments wie folgt angeben:
    $ EAP5_HOME/bin/run.sh -c all -b 192.168.0.2
    JBoss EAP 6 bindet Sockets an die IP-Adressen und Interfaces, die in den <interfaces> Elementen in standalone.xml, domain.xml und host.xml Dateien enthalten sind. Die mit der JBoss EAP gelieferten Standardkonfigurationen umfassen zwei Interface-Konfigurationen:
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
           <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
    </interfaces>
    Diese Interface-Konfigurationen benutzen die Werte der System-Properties jboss.bind.address.management und jboss.bind.address. Wenn diese System-Properties nicht gesetzt wurden, wird für jeden Wert der Standardwert 127.0.0.1 benutzt.
    Sie können auch die Bind-Adresse bei Serverstart als Befehlszeilenargument angeben, oder sie explizit innerhalb der JBoss EAP 6 Serverkonfigurationsdatei definieren.
    • Bind-Argument auf der Befehlszeile bei Start des JBoss EAP Standalone Servers angeben.
      Es folgt ein Beispiel für die Angabe einer Bind-Adresse in der Befehlszeile für einen Standalone Server:
      EAP_HOME/bin/standalone.sh -Djboss.bind.address=127.0.0.1

      Anmerkung

      Sie können auch das -b Argument benutzen, eine Abkürzung für -Djboss.bind.address=127.0.0.1:
      EAP_HOME/bin/standalone.sh -b=127.0.0.1
      Das JBoss EAP 5 Syntaxformat wird ebenfalls noch unterstützt:
      EAP_HOME/bin/standalone.sh -b 127.0.0.1
      Beachten Sie, dass das -b Argument nur das public Interface ändert. Es beeinflusst nicht das management Interface.
    • Spezifizieren Sie die Bind-Adresse in der Server-Konfigurationsdatei.
      Geben Sie die Bind-Adressen für Server, die in einer Managed Domain laufen, in der domain/configuration/host.xml Datei an. Für Standalone Server geben Sie die Bind-Adressen in der standalone-ha.xml Datei an.
      Im folgenden Beispiel ist das public-Interface als das Standard-Interface für alle Sockets innerhalb der ha-sockets-Socket-Binding-Gruppe festgelegt.
      <interfaces>
        <interface name="management">
          <inet-address value="192.168.0.2"/>
        </interface>
        <interface name="public">
          <inet-address value="192.168.0.2"/>
        </interface>
      </interfaces>
      <socket-binding-groups>
        <socket-binding-group name="ha-sockets" default-interface="public">
          <!-- ... -->
        </socket-binding-group>
      </socket-binding-groups>

      Anmerkung

      Wenn Sie die Bind-Adressen als hartcodierten Wert anstatt als System Property in der Konfigurationsdatei angeben, können Sie sie nicht mit einem Befehlszeilenargument außer Kraft setzen.
  3. Konfiguration von jvmRoute zur Unterstützung von mod_jk und mod_proxy

    Bei der JBoss EAP 5 wurde der Webserver jvmRoute mittels einer Property in der server.xml-Datei konfiguriert. Bei der JBoss Enterprise Application Platform 6 wird das jvmRoute-Attribut im Web-Untersystem der Serverkonfigurationsdatei unter Verwendung des instance-id-Attributs wie folgt konfiguriert:
    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false" instance-id="{JVM_ROUTE_SERVER}">
    
    Das {JVM_ROUTE_SERVER} oben sollte durch die jvmRoute Server-ID ersetzt werden.
    Die instance-id kann auch mittels der Management-Konsole eingestellt werden.
  4. Festlegung von Multicast-Adresse und Port

    Bei der JBoss EAP 5.x konnten Sie die für intra-Cluster verwendete Multicast-Adresse und den Port mittels der Befehlszeilenargumente -u und -m wie folgt festlegen:
    $ EAP5_HOME/bin/run.sh -c all -u 228.11.11.11 -m 45688
    Bei der JBoss EAP 6 sind die für intra-Cluster-Kommunikation verwendete Multicast-Adresse und der Port mittels des von dem relevanten JGroups Protokoll-Stacks referenzierten Socket-Binding wie folgt definiert:
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <transport type="UDP" socket-binding="jgroups-udp"/>
            <!-- ... -->
        </stack>
    </subsystem>
    <socket-binding-groups>
        <socket-binding-group name="ha-sockets" default-interface="public">
            <!-- ... -->
            <socket-binding name="jgroups-udp" port="55200" multicast-address="228.11.11.11" multicast-port="45688"/>
            <!-- ... -->
        </socket-binding-group>
    </socket-binding-groups>
    
    Falls Sie die Multicast-Adresse und den Port lieber in der Befehlszeile festlegen möchten, so können Sie die Multicast-Adresse und Ports als System-Properties definieren und diese Properties an der Befehlszeile verwenden, wenn Sie den Server starten. Im folgenden Beispiel ist jboss.mcast.addr der Variablenname für die Multicast-Adresse und jboss.mcast.port ist der Variablenname für den Port.
    <socket-binding name="jgroups-udp" port="55200"
     multicast-address="${jboss.mcast.addr:230.0.0.4}" multicast-port="${jboss.mcast.port:45688}"/>
    
    Sie können dann Ihren Server mittels folgender Befehlszeilenargumente starten:
    $ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688
  5. Verwendung eines anderen Protocol-Stacks

    Bei der JBoss EAP 5.x konnten Sie das standardmäßige Protocol-Stack, das für alle die jboss.default.jgroups.stack System-Property verwendenden Clustering-Dienst verwendet wurde, bearbeiten.
    $ EAP5_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp
    Bei der JBoss EAP 6 ist das standardmäßige Protocol-Stack durch das JGroups-Subsystem innerhalb der domain.xml oder standalone-ha.xml definiert.
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <!-- ... -->
        </stack>
    </subsystem>
  6. Buddy-Replikation ersetzen

    JBoss EAP 5.x benutzte JBoss Cache Buddy Replication um die Replikation von Daten zu allen Instanzen eines Clusters zu unterdrücken.
    Bei der JBoss EAP 6 wurde Buddy Replication mit dem verteilten Cache von Infinispan, auch als DIST Modus bekannt, ersetzt. Verteilung ist ein starker Clusteringmodus, der es Infinispan ermöglicht linear zu skalieren, wenn dem Cluster mehr Server hinzugefügt werden. Es folgt ein Beispiel für die Konfiguration des Servers zur Verwendung des DIST Cachingmodus.
    1. Öffnen Sie eine Befehlszeile und starten Sie den Server mit HA oder Full Profile, zum Beispiel:
      EAP_HOME/bin/standalone.sh -c standalone-ha.xml
    2. Öffnen Sie eine weitere Befehlszeile und verbinden Sie sich mit dem Management-CLI.
      • In Linux geben Sie folgendes in der Befehlszeile ein:
        $ EAP_HOME/bin/jboss-cli.sh --connect
        
      • In Windows geben Sie folgendes in der Befehlszeile ein:
        C:\>EAP_HOME\bin\jboss-cli.bat --connect
        
      Sie sollten die folgende Antwort sehen:
      Connected to standalone controller at localhost:9999
    3. Geben Sie die folgenden Befehle ein:
      /subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=dist)
      /subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=3)
      :reload
      
      Sie sollten die folgende Antwort nach jedem Befehl sehen:
      "outcome" => "success"
      
      Diese Befehle ändern das dist <distributed-cache>-Element in der web <cache-container>-Konfiguration im infinispan-Subsystem der standalone-ha.xml-Datei wie folgt:
      <cache-container name="web" aliases="standard-session-cache" default-cache="dist" module="org.jboss.as.clustering.web.infinispan">
          <transport lock-timeout="60000"/>
          <replicated-cache name="repl" mode="ASYNC" batching="true">
              <file-store/>
          </replicated-cache>
          <replicated-cache name="sso" mode="SYNC" batching="true"/>
          <distributed-cache name="dist" owners="3" l1-lifespan="0" mode="ASYNC" batching="true">
              <file-store/>
          </distributed-cache>
      </cache-container>
      
      Weitere Informationen finden Sie im Kapitel Clustering in Web Applications im Development Guide für die JBoss EAP 6 im Kundenportal unter https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.