第 2 章 应用服务器管理

2.1. 启动和停止 JBoss EAP 6

2.1.2. 将 JBoss EAP 6 作为独立服务器启动

介绍

本节涵盖将 JBoss EAP 6 作为独立服务器启动的步骤

过程 2.1. 将平台服务作为独立服务器启动

  1. 对于红帽企业版 Linux。

    运行命令:EAP_HOME/bin/standalone.sh
  2. 对于 Microsoft Windows 服务器。

    运行命令:EAP_HOME\bin\standalone.bat
  3. 可选:指定其他的参数。

    要查看传入启动脚本的其他参数,请使用 -h 参数。
结果

JBoss EAP 6 服务器实例已启动。

2.1.3. 将 JBoss EAP 6 作为受管域启动

操作顺序

域控制器必须在域里任何服务器组里的任何从服务器之前启动。先在域控制器上,然后在每个关联的主机控制器和其他主机上使用这个过程。

过程 2.2. 将平台服务作为受管域启动

  1. 对于红帽企业版 Linux。

    运行命令: EAP_HOME/bin/domain.sh
  2. 对于 Microsoft Windows 服务器。

    运行: EAP_HOME\bin\domain.bat
  3. 可选:传递其他参数到启动脚本里。

    请使用 -h 参数来获取传递到启动脚本里的参数列表。
结果

JBoss EAP 6 受管域实例已启动。

2.1.4. 配置受管域里主机的名字

概述

运行在受管域里的每个主机都必须有一个唯一的名称。为了简化管理并允许在多个主机上使用相同的主机配置文件,服务器将使用下列次序来确定主机名。

  1. host.xml 配置文件里的 host 元素的 name 属性,如果指定了的话。
  2. jboss.host.name 系统属性的值。
  3. jboss.qualified.host.name 系统属性里最后一个句点(".")后的值,如果没有句点则是整个值。
  4. 基于 POSIX 的操作系统的 HOSTNAME 环境变量或 Microsoft Windows 的 COMPUTERNAME 环境变量里的句点(“.”)后的值,如果没有句点则是整个值。

关于设置环境变量的信息,请参考操作系统的相关文档。关于如何设置系统属性的信息,请参考 第 3.6.11 节 “用管理 CLI 配置系统属性”
本节描述了如何通过系统属性或硬编码在配置文件里设置主机名。

过程 2.3. 使用系统属性配置主机名

  1. 打开主机配置文件,如 host.xml
  2. 找到 host 元素,例如:
    <host name="master" xmlns="urn:jboss:domain:1.6">
    
  3. 如果有这些内容,请删除 name="HOST_NAME" 属性声明。host 元素应该类似于下面的例子。
    <host xmlns="urn:jboss:domain:1.6">
    
  4. -Djboss.host.name 参数启动服务器,例如:
    -Djboss.host.name=HOST_NAME

过程 2.4. 使用专有名称配置主机名

  1. 用下列语法启动 JBoss EAP 从主机:
    bin/domain.sh --host-config=HOST_FILE_NAME
    例如:
    bin/domain.sh --host-config=host-slave01.xml
  2. 启动管理 CLI。
  3. 使用下列语法来替代主机名:
    /host=EXISTING_HOST_NAME:write-attribute(name="name",value=UNIQUE_HOST_NAME)
    例如:
    /host=master:write-attribute(name="name",value="host-slave01")
    你应该看到下面的结果。
     "outcome" => "success"
    这修改了 host-slave01.xml 文件里的 host name 属性:
    <host name="host-slave01" xmlns="urn:jboss:domain:1.6">
    
  4. 您必须重新加载使用旧的主机名的服务器配置以完成这个过程。
    reload --host=EXISTING_HOST_NAME
    例如:
    reload --host=master

2.1.5. 在两台主机上创建受管域

注意

您可能需要配置防火墙以运行这个例子。
您可以在两台主机上创建受管域,其中一台主机是域控制器而另外一个是普通主机。详情请参考 第 1.6 节 “关于域控制器”
  • IP1 = IP address of the domain controller (Machine 1)
  • IP2 = IP address of the host (Machine 2)

过程 2.5. 在两台主机上创建受管域

  1. 在 Machine 1 上

    1. 使用 add-user.sh 脚本添加管理用户,例如 slave01,让主机可以通过域控制器进行验证。请注意 add-user 输出里的 SECRET_VALUE
    2. host-master.xml 配置文件启动域,它为指定的域控制器进行了预先配置。
    3. -bmanagement=$IP1 使域控制器对于其他主机可见。
      [$JBOSS_HOME/bin]$ ./domain.sh --host-config=host-master.xml -bmanagement=$IP1
  2. 在 Machine 2 上

    1. 用用户凭证更新 $JBOSS_HOME/domain/configuration/host-slave.xml 文件。
      	<?xml version='1.0' encoding='UTF-8'?>
              <host xmlns="urn:jboss:domain:1.6" name="slave01">   
              <!-- add user name here -->
               <management>
                  <security-realms>
                     <security-realm name="ManagementRealm">
                        <server-identities>
                          <secret value="$SECRET_VALUE" />   
                          <!-- use secret value from add-user.sh output-->
                        </server-identities> 
                        ...
      
    2. 启动主机。
      [$JBOSS_HOME/bin]$ ./domain.sh --host-config=host-slave.xml  -Djboss.domain.master.address=$IP1 -b=$IP2
  3. 现在我们可以管理域了。

    通过 CLI:
    [$JBOSS_HOME/bin]$ ./jboss-cli.sh -c --controller=$IP1
    
    通过 Web 控制台:
    http://$IP1:9990
    
    访问服务器的索引页:
    http://$IP2:8080/
    http://$IP2:8230/
    

2.1.6. 用替代配置启动 JBoss EAP 6

如果您没有指定配置文件,服务器将用默认的文件启动。然而,当您启动服务器时,您可以手动指定一个配置文件。启动过程会稍有不同,这取决于您是使用受管域还是独立服务器、以及您使用的操作系统。

必须具备的条件

  • 在使用替代配置文件之前,请将 default 配置作为模版使用。对于受管域,配置文件必须位于 EAP_HOME/domain/configuration/ 目录。对于独立服务器,配置文件必须位于 EAP_HOME/standalone/configuration/ 目录。

注意

EAP_HOME/docs/examples/configs/ 目录里包含了几个配置示例。请用这些例子来启用额外的功能,如群集或 Transactions XTS API。

过程 2.6. 用其他配置启动实例

  1. 独立服务器

    对于独立服务器,请将配置文件的名称作为 --server-config 参数的选项。配置文件必须位于 EAP_HOME/standalone/configuration/ 目录里,而且您需要指定相对这个目录的路径。

    例 2.1. 在红帽企业版 Linux 里对独立服务器使用其他的配置文件

    [user@host bin]$ ./standalone.sh --server-config=standalone-alternate.xml
    这个例子使用了 EAP_HOME/standalone/configuration/standalone-alternate.xml 配置文件。

    例 2.2. 在 Microsoft Windows 服务器里对独立服务器使用其他的配置文件

    C:\EAP_HOME\bin> standalone.bat --server-config=standalone-alternate.xml
    这个例子使用了 EAP_HOME\standalone\configuration\standalone-alternative.xml 配置文件。
  2. 受管域

    对于受管域,请为 --domain-config 参数提供配置文件的名称。这个文件必须位于 EAP_HOME/domain/configuration/ 目录,且您需要指定相对这个目录的路径。

    例 2.3. 在红帽企业版 Linux 里对受管域使用其他的配置文件

    [user@host bin]$ ./domain.sh --domain-config=domain-alternate.xml
    这个例子使用了 EAP_HOME/domain/configuration/domain-alternate.xml 配置文件。

    例 2.4. 在 Microsoft Windows 服务器里对受管域使用其他的配置文件

    C:\EAP_HOME\bin> domain.bat --domain-config=domain-alternate.xml
    
    
    这个例子使用了 EAP_HOME\domain\configuration\domain-alternate.xml 配置文件。
结果

使用替代配置运行了 JBoss EAP 6。

2.1.7. 停止 JBoss EAP 6

您停止 JBoss EAP 6 的方式取决于它是如何启动的。本节涵盖停止交互式启动的实例、停止作为服务启动的实例以及停止用脚本复制至后台进程的实例。

注意

关于在受管域里停止服务器或服务器组的信息,请参考 第 2.2.3 节 “使用管理控制台停止服务器”。关于使用管理 CLI 停止服务器的信息,请参考 第 2.2.1 节 “用管理 CLI 启动或停止服务器。”
  • 过程 2.7. 停止 JBoss EAP 6 的实例

    • 停止从命令提示交互式启动的实例。

      在 JBoss EAP 6 运行的终端窗口里按 Ctrl-C
  • 过程 2.8. 停止作为操作系统服务启动的实例。

    根据操作系统使用下列步骤。
      • Red Hat Enterprise Linux

        对于红帽企业版 Linux,如果您已经编写了服务脚本,请使用它的 stop 功能。这需要编写到脚本里。然后您可以使用 service scriptname stop,这里的 scriptname 是脚本名称。
      • Microsoft Windows Server

        在 Microsoft Windows 里,使用 net service 命令,或者通过控制面板里的 Services 小程序来停止服务。
  • 过程 2.9. 停止在后台运行的示例(红帽企业版 Linux)

    1. 获取进程的 ID(PID):
      • 如果只有一个实例在运行(独立模式)

        下面的命令都会返回单个 JBoss EAP 6 实例的 PID
        • pidof java
        • jps
          jps 命令将返回两个进程的 ID:jboss-modules.jarjps 自身。请使用 jboss-modules.jar 的 ID 来停止 EAP 实例)
      • 如果有多个 EAP 实例在运行(域模式)

        有多个 EAP 实例运行时要确定正确的进程需要使用更复杂的命令。
        • jps 命令可以使用冗余模式来提供 java 进程的更多信息。
          下面是确定不同 EAP 进程的冗余 jps 命令的摘要,包括 PID 和角色:
          $ jps -v
          12155 jboss-modules.jar -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1303m 
          ...
          
          12196 jboss-modules.jar -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1303m 
          ...
          
          12096 jboss-modules.jar -D[Host Controller] -Xms64m -Xmx512m -XX:MaxPermSize=256m 
          ...
          
          11872 Main -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=96m -XX:+UseCodeCacheFlushing 
          ...
          
          11248 jboss-modules.jar -D[Standalone] -XX:+UseCompressedOops -verbose:gc 
          ...
          
          12892 Jps 
          ...
          
          12080 jboss-modules.jar -D[Process Controller] -Xms64m -Xmx512m -XX:MaxPermSize=256m 
          ...
          
        • ps aux 命令也可以用来返回多个 EAP 实例的信息。
          下面是确定不同 EAP 进程的冗余 ps aux 命令的摘要,包括 PID 和角色:
          $ ps aux | grep java
          username 12080  0.1  0.9 3606588 36772 pts/0   Sl+  10:09   0:01 /path/to/java -D[Process Controller] -server -Xms128m -Xmx128m -XX:MaxPermSize=256m 
          ...
          
          username 12096  1.0  4.1 3741304 158452 pts/0  Sl+  10:09   0:13 /path/to/java -D[Host Controller] -Xms128m -Xmx128m -XX:MaxPermSize=256m 
          ...
          
          username 12155  1.7  8.9 4741800 344224 pts/0  Sl+  10:09   0:22 /path/to/java -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1000m -Xmx1000m -server -
          ...
          
          username 12196  1.8  9.4 4739612 364436 pts/0  Sl+  10:09   0:22 /path/to/java -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1000m -Xmx1000m -server 
          ...
          
        在上面的例子里,Process Controller 进程是停止以停止整个域的进程。
        grep 工具可以和这些命令一起使用来确定 Process Controller
        jps -v | grep "Process Controller"
        ps aux | grep "Process Controller"
    2. 运行 kill PID 给进程发送 TERM 信号,这里的 PID 是上面的命令确定的进程号。
结果

每个方法都可以干净地关闭 JBoss EAP 6,所以不会丢失数据。

2.1.8. 服务器启动参数和开关参考

应用服务器启动脚本在运行时接受其他参数和开关。这些参数允许服务器根据 standalone.xmldomain.xmlhost.xml 配置文件里定义的其他配置启动。这可能包括用其他套接字绑定集或次级配置启动服务器。在启动时使用 help 开关可以参考这些可用的参数列表。

例 2.5. 

下面的例子和 第 2.1.2 节 “将 JBoss EAP 6 作为独立服务器启动”第 2.1.3 节 “将 JBoss EAP 6 作为受管域启动” 里解释的服务器启动类似,但添加了 -h--help 开关。下表解释了 help 开关的结果。
独立模式:
[localhost bin]$ standalone.sh -h
域模式:
[localhost bin]$ domain.sh -h

表 2.1. 运行时开关和参数表

参数或开关 模式 描述
--admin-only 独立服务器模式 设置服务器的运行类型为 ADMIN_ONLY。这将导致它打开管理接口并接受管理请求,但不会启动其他运行时服务或接受最终用户请求。
--admin-only 域模式 设置主机控制器的运行类型为 ADMIN_ONLY。这将导致它打开管理接口并接受管理请求,但不会启动其他运行时服务;如果这个主机控制器不是域的主控制器,将接受来自从主机控制器的转入连接。
-b <value> , -b=<value> 独立服务器模式,域模式 设置系统属性 jboss.bind.address 为给定的值。
-b<interface>=<value> 独立服务器模式,域模式 设置系统属性 jboss.bind.address.<interface> 为给定的值。
--backup 域模式 保持持久性域配置的备份,即使这个主机不是域控制器。
-c <config> , -c=<config> 独立服务器模式 要使用的服务器配置文件的名称。默认是 standalone.xml
-c <config> , -c=<config> 域模式 要使用的服务器配置文件的名称。默认是 domain.xml
--cached-dc 域模式 如果主机不是域控制器且在引导时无法联系域控制器,它将使用域配置的本地缓存备份。
--debug [<port>] 独立服务器模式 激活调试模式并用可选参数来指定端口。只有启动脚本支持才可以使用。
-D<name>[=<value>] 独立服务器模式,域模式 设置系统属性。
--domain-config=<config> 域模式 要使用的服务器配置文件的名称。默认是 domain.xml
-h , --help 独立服务器模式,域模式 显示帮助信息并退出。
--host-config=<config> 域模式 要使用的主机配置文件的名称。默认是 host.xml
--interprocess-hc-address=<address> 域模式 主机控制器侦听的与进程控制器通讯的地址。
--interprocess-hc-port=<port> 域模式 主机控制器侦听的与进程控制器通讯的端口。
--master-address=<address> 域模式 设置系统属性 jboss.domain.master.address 为给定的值。在默认的从主机控制器配置里,它被用来配置和主主机控制器进行原生通讯的地址。
--master-port=<port> 域模式 设置系统属性 jboss.domain.master.port 为给定的值。在默认的从主机控制器配置里,它被用来配置和主主机控制器进行原生通讯的端口。
--read-only-server-config=<config> 独立服务器模式 要使用的服务器配置文件的名称。它和 --server-config-c 不同,因为原始文件不会被覆盖。
--read-only-domain-config=<config> 域模式 要使用的域配置文件的名称。这和 --domain-config-c 参数不同,因为初始文件不会被覆盖。
--read-only-host-config=<config> 域模式 要使用的主机配置文件的名称。这和 --host-config 参数不同,因为初始文件不会被覆盖。
-P <url> , -P=<url> , --properties=<url> 独立服务器模式,域模式 从给定的 URL 加载系统属性。
--pc-address=<address> 域模式 进程控制器与其控制的进程通讯时侦听的地址。
--pc-port=<port> 域模式 进程控制器与其控制的进程通讯时侦听的端口。
-S<name>[=<value>] 独立服务器模式 设置安全属性。
--server-config=<config> 独立服务器模式 要使用的服务器配置文件的名称。默认是 standalone.xml
-u <value> , -u=<value> 独立服务器模式,域模式 设置系统属性 jboss.default.multicast.address 为给定的值。
-v , -V , --version 独立服务器模式,域模式 显示应用服务器的版本并退出。