3.2.8. 群集的修改


3.2.8.1. 修改应用程序以用于群集环境

  1. 启动启用了群集的 JBoss EAP 6

    要在 JBoss EAP 5.x 里启用群集,您需要使用 all 配置集或其衍生配置集来启动服务器实例,如:
    $ EAP5_HOME/bin/run.sh -c all$ EAP5_HOME/bin/run.sh -c all$ EAP5_HOME/bin/run.sh -c all
    Copy to Clipboard Toggle word wrap
    在 JBoss EAP 6 里,启用群集的方法取决于服务器是独立的还是运行在受管域里。
    1. 为运行在受管域l里的服务器启用群集

      要为使用域控制器启动的服务器的群集,请更新您的 domain.xml 并指定一个服务器组来使用 ha 配置集和 ha-sockets 套接字绑定组。例如:
      <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>
      
      Copy to Clipboard Toggle word wrap
    2. 为独立服务器启用群集

      要为独立服务器启用群集,用下列配置文件启动服务器:
      $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME
      Copy to Clipboard Toggle word wrap
  2. 指定绑定地址

    在 JBoss EAP 5.x 里,您通常要用 -b 命令行参数来指定用于群集的绑定地址:
    $ EAP5_HOME/bin/run.sh -c all -b 192.168.0.2$ EAP5_HOME/bin/run.sh -c all -b 192.168.0.2$ EAP5_HOME/bin/run.sh -c all -b 192.168.0.2
    Copy to Clipboard Toggle word wrap
    JBoss EAP 6 绑定套接字到 standalone.xmldomain.xmlhost.xml 文件里 <interfaces> 元素的 IP 地址和接口。JBoss EAP 6 附带的标准配置包含两个接口配置:
    <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>
    
    Copy to Clipboard Toggle word wrap
    这些接口配置使用了系统属性 jboss.bind.address.managementjboss.bind.address 的值。如果没有设置这些系统属性,默认的 127.0.0.1 将被使用。
    您也可以在启动服务器时指定绑定地址为命令行参数,或者您可以在 JBoss EAP 6 服务器配置文件里显性地定义它。
    • 在启动 JBoss EAP 独立服务器时在命令行指定绑定参数。
      下面是一个如何在命令行为独立服务器指定绑定地址的例子:
      EAP_HOME/bin/standalone.sh -Djboss.bind.address=127.0.0.1EAP_HOME/bin/standalone.sh -Djboss.bind.address=127.0.0.1
      Copy to Clipboard Toggle word wrap

      注意

      您也可以使用 -b 参数,它是 -Djboss.bind.address=127.0.0.1 的快捷方式。
      EAP_HOME/bin/standalone.sh -b=127.0.0.1EAP_HOME/bin/standalone.sh -b=127.0.0.1
      Copy to Clipboard Toggle word wrap
      JBoss EAP 5 的语法格式仍被支持:
      EAP_HOME/bin/standalone.sh -b 127.0.0.1EAP_HOME/bin/standalone.sh -b 127.0.0.1
      Copy to Clipboard Toggle word wrap
      请注意 -b 参数只会修改 public 接口。它不会影响 management 接口。
    • 在服务器配置文件里指定绑定地址。
      对于运行在受管域里的服务器,请在 domain/configuration/host.xml 文件里指定绑定地址。对于独立服务器,请在 standalone-ha.xml 文件里指定绑定地址。
      在下面的例子里,public 接口被指定为 ha-sockets 套接字绑定组里的所有套接字的默认接口。
      <interfaces>
        <interface name="management">
          <inet-address value="192.168.0.2"/>
        </interface>
        <interface name="public">
          <inet-address value="192.168.0.2"/>
        </interface>
      </interfaces>
      
      Copy to Clipboard Toggle word wrap
      <socket-binding-groups>
        <socket-binding-group name="ha-sockets" default-interface="public">
          <!-- ... -->
        </socket-binding-group>
      </socket-binding-groups>
      
      Copy to Clipboard Toggle word wrap

      注意

      如果您用硬编码值而不是配置文件里的系统属性来指定绑定地址,那您无法用命令行参数来覆盖它。
  3. 配置 jvmRoute 以支持 mod_jk 和 mod_proxy

    在 JBoss EAP 5 里,web 服务器 jvmRoute 是用 server.xml 文件里的一个属性进行配置的。在 JBoss EAP 6 里,jvmRoute 属性使用 instance-id 属性在服务器配置文件的 web subsystem 部分进行配置。
    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false" instance-id="{JVM_ROUTE_SERVER}">
    
    
    Copy to Clipboard Toggle word wrap
    上面的 {JVM_ROUTE_SERVER} 应该用 jvmRoute 服务器 ID 替换。
    instance-id 也可以用管理控制台来设置。
  4. 指定多点传送地址和端口

    在 JBoss EAP 5.x 里,您可以使用命令行参数 -u-m 分别指定用于群集间通讯的多点传送地址和端口,如:
    $ EAP5_HOME/bin/run.sh -c all -u 228.11.11.11 -m 45688$ EAP5_HOME/bin/run.sh -c all -u 228.11.11.11 -m 45688
    Copy to Clipboard Toggle word wrap
    在 JBoss EAP 6 里,用于群集间通讯的多点传送地址和端口是用相关的 JGroups 协议栈引用的 socket-binding 定义的。
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <transport type="UDP" socket-binding="jgroups-udp"/>
            <!-- ... -->
        </stack>
    </subsystem>
    
    Copy to Clipboard Toggle word wrap
    <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>
    
    
    Copy to Clipboard Toggle word wrap
    如果您想在命令行指定多点传送地址和端口,您可以将多点传送地址和端口定义为系统属性并在启动服务器时在命令行使用这些属性。在下面的例子里, jboss.mcast.addr 是多点传送地址的变量名,而 jboss.mcast.port 是端口的变量名。
    <socket-binding name="jgroups-udp" port="55200"
     multicast-address="${jboss.mcast.addr:230.0.0.4}" multicast-port="${jboss.mcast.port:45688}"/>
    
    
    Copy to Clipboard Toggle word wrap
    您可以用下列命令行参数启动服务器:
    $ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688$ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688$ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688
    Copy to Clipboard Toggle word wrap
  5. 使用其他的协议栈

    在 JBoss EAP 5.x 里,您可以使用 jboss.default.jgroups.stack 系统属性来操纵用于群集服务的默认协议栈。
    $ EAP5_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp$ EAP5_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp$ EAP5_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp
    Copy to Clipboard Toggle word wrap
    在 JBoss EAP 6 里,默认的协议栈是由 domain.xmlstandalone-ha.xml里的 JGroups 子系统定义的:
    <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
        <stack name="udp">
            <!-- ... -->
        </stack>
    </subsystem>
    
    Copy to Clipboard Toggle word wrap
  6. 替换 Buddy Replication

    JBoss EAP 5.x 使用 JBoss Cache Buddy Replication 来抑制将数据复制到群集里的所有实例。
    在 JBoss EAP 6 里,Buddy Replication 已被 Infinispan 的分布式缓存(也称为 DIST 模式)所替代。Distribution 是一个强大的群集模式,它允许 Infinispan 在添加更多服务器到群集里时进行线性扩充。下面是配置服务器使用 DIST 缓存模式的例子。
    1. 打开命令行窗口并用 HA 或 Full 配置集启动服务器,例如:
      EAP_HOME/bin/standalone.sh -c standalone-ha.xml
      Copy to Clipboard Toggle word wrap
    2. 打开另外一个命令行窗口并连接至管理 CLI。
      • 对于 Linux,输入下列命令:
        $ EAP_HOME/bin/jboss-cli.sh --connect
        
        Copy to Clipboard Toggle word wrap
      • 对于 Windows,输入下列命令:
        C:\>EAP_HOME\bin\jboss-cli.bat --connect
        
        Copy to Clipboard Toggle word wrap
      您应该看到下面的结果:
      Connected to standalone controller at localhost:9999
      Copy to Clipboard Toggle word wrap
    3. 运行下列命令:
      /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
      
      Copy to Clipboard Toggle word wrap
      您应该在每条命令后看到下面的结果:
      "outcome" => "success"
      
      Copy to Clipboard Toggle word wrap
      这些命令修改了 standalone-ha.xml 文件的 infinispan 子系统的 web <cache-container> 配置里的 dist <distributed-cache> 元素:
      <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>
      
      
      Copy to Clipboard Toggle word wrap
      更多的信息请参考客户门户 https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/ 上的《JBoss EAP 6 开发指南》里的『Web 应用程序里的群集』章节。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat