Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

第 2 章 管理 JBoss EAP

2.1. 下载和安装 JBoss EAP

本指南提供了平台独立的用 ZIP 安装方式下载和安装 JBoss EAP 的基本说明。

其他的细节,如用图形化安装程序或 PRM 软件包安装 JBoss EAP 的说明,请参考《安装指南》

2.1.1. 安装前提条件

在安装 JBoss EAP 之前请检验是否已满足下列预备条件。

共同的预备条件

ZIP 安装的预备条件

  • 运行 JBoss EAP 的用户必须具有对安装目录的读和写权限。
  • 所需的 Java 开发工具(JDK)已安装。
  • 对于 Hewlett-Packard HP-UX,unzip 工具已经安装。
  • 对于 Windows 服务器,JAVA_HOMEPATH 环境变量已经设置。

2.1.2. 下载 JBoss EAP

JBoss EAP 的 ZIP 安装文件可以从 Red Hat 客户门户网站下载。

  1. 登录 Red Hat 客户门户
  2. 点击 Downloads
  3. Product Downloads 列表里,点击 Red Hat JBoss Enterprise Application Platform
  4. Version 下拉菜单里选择想要的版本。
  5. 在表里找到 Red Hat JBoss Enterprise Application Platform 7.x.x 条目并点击 Download
  6. 将 ZIP 保存到想要的位置。

2.1.3. 安装 JBoss EAP

下载了 JBoss EAP ZIP 安装文件后,您可以解压软件包内容来进行安装。

  1. 如果有必要,请将 ZIP 文件移至服务器里 JBoss EAP 应该安装的位置。

    • 运行 JBoss EAP 的用户必须具有对该目录的读和写权限。
  2. 解压 ZIP 归档文件。

    $ unzip jboss-eap-7.x.x.zip
    注意

    对于 Windows 服务器,右击 ZIP 文件并选择 Extract All

解压 ZIP 归档创建的目录是服务器的顶层目录,通常被称为 EAP_HOME

2.2. 启动和停止 JBoss EAP

2.2.1. 启动 JBoss EAP

JBoss EAP 以两种操作模式之一运行:独立服务器或受管域,它支持多个平台:Red Hat Enterprise Linux、Windows Server、Oracle Solaris 和 Hewlett-Packard HP-UX。

启动 JBoss EAP 的命令取决于底层的平台及操作模式。

将 JBoss EAP 作为独立服务器启动
$ EAP_HOME/bin/standalone.sh
注意

对于 Windows 服务器,请使用 EAP_HOME\bin\standalone.bat 脚本。

这个启动脚本使用了 EAP_HOME/bin/standalone.conf 文件(Windows 服务器则使用 standalone.conf.bat)来设置某些默认参数,如 JVM 选项。您可以在这个文件里自定义这些设置。

JBoss EAP 默认使用 standalone.xml 配置文件,但也可以使用其他配置启动。关于可用的独立模式配置文件的细节及如何使用它们,请参考 Standalone Server Configuration Files 章节。

关于所有可用的启动脚本参数及其用途的完整列表,请使用 --help 参数查看或者参考 Server Runtime Arguments 章节。

将 JBoss EAP 作为受管域启动

域控制器必须在域中服务器组里的任何服务器之前启动。使用这个脚本会首先启动域控制器,然后是每个关联的主机控制器。

$ EAP_HOME/bin/domain.sh
注意

对于 Windows 服务器,请使用 EAP_HOME\bin\domain.bat 脚本。

这个启动脚本使用了 EAP_HOME/bin/domain.conf 文件(Windows 服务器则使用 domain.conf.bat)来设置某些默认参数,如 JVM 选项。您可以在这个文件里自定义这些设置。

JBoss EAP 默认使用 host.xml 主机配置文件,但也可以使用其他配置启动。关于可用的受管域模式配置文件的细节及如何使用它们,请参考 Managed Domain Configuration Files 章节。

当设立受管域时,也需要将其他参数传入启动脚本。关于可用启动脚本参数和用途的完整列表,请使用 --help 参数或参阅服务器运行时参数章节。

2.2.2. 停止 JBoss EAP

停止 JBoss EAP 的方式取决于它是如何启动的。

停止 JBoss EAP 的交互式实例

在启动 JBoss EAP 的终端窗口里按 Ctrl+C

停止 JBoss EAP 的后台实例

使用管理 CLI 来连接运行中的实例并关闭服务器。

  1. 启动管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh --connect
  2. 执行 shutdown 命令。

    shutdown
注意

当运行在受管域里时,您必须在 shutdown 命令里用 --host 参数指定主机名来关闭服务器。

2.3. JBoss EAP 管理

JBoss EAP 6 使用了简化的配置,对每个域或独立服务器使用一个配置文件。独立服务器的默认配置存储在 EAP_HOME/standalone/configuration/standalone.xml 文件里,而受管域的默认配置存储在 EAP_HOME/domain/configuration/domain.xml 文件里。此外,主机控制器的默认配置存储在 EAP_HOME/domain/configuration/host.xml 文件里。

JBoss EAP 可以用命令行管理 CLI 或基于 Web 的管理控制台来配置。用管理界面进行的修改会自动持久化,XML 配置文件会被 Management API 覆盖。我们不推荐手动编辑 XML 配置文件。

2.3.1. 管理性用户

默认的 JBoss EAP 配置提供了本地身份验证功能,因此,用户可以在不需要身份验证的情况下访问本地主机上的管理 CLI。

但是,如果您需要远程访问管理 CLI 或使用管理控制台(使用管理控制台被认为是一个远程访问,即使它的网络数据是由本地产生的),则需要添加一个管理用户。如果您在添加管理用户前试图访问管理控制台,则会收到一个错误信息。

如果使用图形化安装程序安装 JBoss EAP,则在安装过程中会创建一个管理用户。

本指南涵盖了使用 add-user 脚本进行简单的 JBoss EAP 用户管理,这个脚本添加可立即验证的新用户至属性文件里。关于高级验证和授权选项,如 LDAP 或基于角色的访问控制(Role-Based Access Control ,RBAC),请参考《JBoss EAP 安全架构》里的核心管理验证章节。

2.3.1.1. 添加管理性用户

  1. 运行 add-user 脚本并按下列提示进行。

    $ EAP_HOME/bin/add-user.sh
    注意

    对于 Windows 服务器,请使用 EAP_HOME\bin\add-user.bat 脚本。

  2. ENTER 选择默认的选项 a 来添加管理性用户。

    这个用户将被添加至 ManagementRealm 并被授权用管理控制台或管理 CLI 执行管理操作。另外一个选项(b)添加用户至用于应用程序的 ApplicationRealm 且不提供特殊的权限。

  3. 输入用户名和密码,系统会提示您确认密码。

    在默认情况下,JBoss EAP 允许弱密码但会提示警告。关于修改这个默认行为的细节,请参考 《JBoss EAP 配置指南》『Setting Add-User Utility Password Restrictions』 章节。

  4. 输入用逗号隔开的用户所属的组。如果您不希望用户属于任何组,请按 ENTER 留空。
  5. 复核这些信息并输入 yes 确认。
  6. 确定这个用户是否代表远程的 JBoss EAP 服务器实例。对于基本的管理性用户,请输入 no

    需要添加至 ManagementRealm 的一种用户类型是代表另外一个 JBoss EAP 实例的用户,它必须能够通过验证以成员身份加入群集。如果是这样,选择 yes,您将看到一个代表用户密码的哈希加密值,它需要添加到不同的配置文件里。

您也可以在 add-user 脚本里传入参数来非交互式地创建用户。我们不推荐在共享系统上使用这个方法,因为密码将出现在日志和历史文件里。更多信息请参考 Running the Add-User Utility Non-Interactively

2.3.1.2. 以非交互式运行 Add-User 工具

您可以通过传入参数至命令行非交互式地运行 add-user 脚本。您必须至少提供用户名和密码。

警告

我们不推荐在共享系统上使用这个方法,因为密码可以在日志或历史文件里看到。

创建属于多个组的用户

下面的命令添加一个属于 guestmgmtgroup 组的管理性用户(mgmtuser1)。

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser1' -p 'password1!' -g 'guest,mgmtgroup'
指定替代属性文件

在默认情况下,用 add-user 基本创建的用户和组信息存储在服务器配置目录里的属性文件里。

用户信息存储在下列属性文件里:

  • EAP_HOME/standalone/configuration/mgmt-users.properties
  • EAP_HOME/domain/configuration/mgmt-users.properties

组信息存储在下列属性文件里:

  • EAP_HOME/standalone/configuration/mgmt-groups.properties
  • EAP_HOME/domain/configuration/mgmt-groups.properties

这些默认的目录和属性文件名都可以被覆盖。下列命令添加一个新的用户,为用户属性文件指定不同的名称和位置。

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser2' -p 'password1!' -sc '/path/to/standaloneconfig/' -dc '/path/to/domainconfig/' -up 'newname.properties'

添加至用户属性文件的新用户现在存储在 /path/to/standaloneconfig/newname.properties/path/to/domainconfig/newname.properties。请注意这些文件必须已经存在,否则您会看到错误信息。

关于所有可用的 add-user 脚本参数及其用途的完整列表,请使用 --help 参数查看或者参考 Add-User Utility Arguments 章节。

2.3.2. 管理界面

2.3.2.1. 管理 CLI

管理命令行接口(management command-line interface,CLI)是一个 JBoss EAP 的命令行管理工具。

使用管理 CLI 启动和停止服务器、部署和卸载应用程序、配置系统设置并执行其他管理任务。操作可以批量模式进行,将多个任务作为一个组来运行。

它还有许多常用的终端命令,如 lscdpwd。管理 CLI 也支持 Tab Completion。

关于使用管理 CLI 的详情,包括命令和操作、语法和批模式运行,请参考《JBoss EAP 管理 CLI 指南》

启动管理 CLI
$ EAP_HOME/bin/jboss-cli.sh
注意

对于 Windows 服务器,请使用 EAP_HOME\bin\jboss-cli.bat 脚本。

连接至运行的服务器
connect

或者您可以启动管理 CLI 并使用 EAP_HOME/bin/jboss-cli.sh --connect 命令一步完成连接。

显示帮助

使用下列命令获取普通帮助信息。

help

使用下列命令获取特定命令的帮助信息。

deploy --help
退出管理 CLI
quit
查看系统设置

下列命令使用 read-attribute 操作来显示示例数据源是否已启用。

/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
{
    "outcome" => "success",
    "result" => true
}

当运行在受管域里时,您必须在命令里用 /profile=PROFILE_NAME 参数指定要更新的配置集。

/profile=default/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
更新系统设置

下列命令使用 write-attribute 操作来禁用示例数据源。

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)
启动服务器

管理 CLI 也可以用来启动和停止受管域里运行的服务器。

/host=HOST_NAME/server-config=server-one:start

2.3.2.2. 管理控制台

管理控制台是用于 JBoss EAP 6 的基于 Web 的管理工具。

您可以使用管理控制台来启动和停止服务器、部署和卸载应用程序、调整系统设置并对服务器配置进行持久性修改。管理控制台也可以执行管理任务,并在修改需要服务器实例重启或重载时进行实时通知。

在受管域里,相同域里的服务器实例和服务器组可以通过域控制器的管理控制台进行集中管理。

对于使用默认管理端口运行在本地主机上的 JBoss EAP 实例,管理控制台可以通过浏览器访问:http://localhost:9990/console/App.html。用户需要验证是否具有访问管理控制台的权限。

管理控制台下列标签页来导航和管理您的 JBoss EAP 独立服务器(standalone server)或受管域(managed domain)。

主页
学习如何完成常见的配置和管理任务。请进行体验以熟悉 JBoss EAP 管理控制台。
部署
添加、删除和启用部署。在受管域里,为服务器组分配部署。
配置
配置提供 Web Service、消息、高可用性等功能的子系统。在受管域里,管理包含不同子系统配置的配置集。
Runtime
查看 runtime 信息,如服务器状态、JVM 使用和服务器日志。在受管域里,管理您的主机、服务器组和服务器。
访问控制
在使用基于角色的访问控制时分配角色给用户和组。
补丁
应用补丁到您的 JBoss EAP 实例。
注意

要体验更新的管理控制台,请点击管理控制台主页上的 Take a Tour 链接。

要查看表单字段的细节,请点击 Need Help? 链接。

要查看您已执行的配置动作的消息历史,请点击管理控制台右上角的 Messages 链接。

2.3.3. 配置文件

2.3.3.1. 独立服务器的配置文件

独立配置文件位于 EAP_HOME/standalone/configuration/ 目录,有四个单独的预定义的配置集文件(defaulthafullfull-ha)。

表 2.1. 独立配置文件

配置文件用途

standalone.xml

这个独立配置文件是您启动独立服务器时的默认配置。它包含关于服务器的所有信息,如子系统、网络、部署、套接字绑定和其他的可配置细节。它不提供消息系统或高可用性所需的子系统。

standalone-ha.xml

这个独立配置文件包括所有的默认子系统并添加了用于高可用性的 modclusterjgroups 子系统。它没有提供消息所必需的子系统。

standalone-full.xml

这个独立配置文件包括所有的默认子系统并添加了 messaging-activemqiiop-openjdk 子系统。它没有提供高可用性所必需的子系统。

standalone-full-ha.xml

这个独立配置文件包含对每种可能的子系统的支持,包括用于消息和高可用性的子系统。

在默认情况下,以独立服务器方式启动 JBoss EAP 将使用 standalone.xml 文件。要用不同的配置集启动 JBoss EAP,请使用 --server-config 选项。例如:

$ EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml

2.3.3.2. 受管域配置文件

受管域配置文件位于 EAP_HOME/domain/configuration/ 目录。

表 2.2. 受管域配置文件

配置文件用途

domain.xml

这是用于受管域的主要配置文件。只有域主控制器会读取这个文件。它包含所有配置集的配置(defaulthafullfull-ha)。

host.xml

这个文件包含了受管域里的物理主机专有的配置细节,如网络接口、套接字绑定、主机名称和其他主机专有的细节。host.xml 文件包含了 host-master.xmlhost-slave.xml 的全部功能,正如下面所描述的。

host-master.xml

这个文件只包含将服务器作为主域控制器运行所需的配置细节。

host-slave.xml

这个文件只包含将服务器作为受管域主机控制器运行所需的配置细节。

在默认情况下,以受管域方式启动 JBoss EAP 将使用 host.xml 文件。要用不同的配置集启动 JBoss EAP,请使用 --host-config 选项。例如:

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml

2.3.3.3. 备份配置数据

为了以后能恢复 JBoss EAP 服务器配置,下列位置里的内容应该进行备份:

  • EAP_HOME/standalone/configuration/

    • 备份整个目录以保存用户数据、服务器配置和独立服务器的日志设置。
  • EAP_HOME/domain/configuration/

    • 备份整个目录以保存用户和配置集数据、域和主机配置、受管域的日志设置。
  • EAP_HOME/modules/

    • 备份自定义的模块。
  • EAP_HOME/welcome-content/

    • 备份任何自定义的欢迎内容。
  • EAP_HOME/bin/

    • 备份任何自定义脚本或启动配置文件。

2.3.3.4. 配置文件快照

为了协助维护和管理服务器实例,JBoss EAP 在启动时创建了一个原始配置文件的带时间戳的版本。管理操作导致的任何其他的配置修改都会让原始文件自动备份,而实例的一个工作备份会保留以供引用或回滚。此外,您可以获取服务器配置当前时间点的配置快照。而管理员可以保存和加载这些快照。

下面的例子使用了 standalone.xml 配置文件,但相同的过程适用于 domain.xmlhost.xml 配置文件。

创建快照

请用管理 CLI 来获取当前配置的快照。

:take-snapshot
{
    "outcome" => "success",
    "result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
列出快照

使用管理 CLI 来列出所有已创建的快照。

:list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot",
        "names" => [
            "20151022-133109702standalone.xml",
            "20151022-132715958standalone.xml"
        ]
    }
}
删除快照

使用管理 CLI 来删除快照。

:delete-snapshot(name=20151022-133109702standalone.xml)
用快照启动服务器

服务器可以用快照或自动保存的配置版本启动。

  1. 进入 EAP_HOME/standalone/configuration/standalone_xml_history 目录并确认要加载的快照或保存的配置文件。
  2. 启动服务器并指向所选的配置文件。传入相对于配置目录(EAP_HOME/standalone/configuration/)的相对路径。

    $ EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xml
注意

如果服务器运行在受管域里,请使用 --host-config 参数来指定配置文件。

2.3.3.5. 属性替换

JBoss EAP 允许您使用表达式来定义配置里的可替换属性。表达式使用 ${PARAMETER:DEFAULT_VALUE} 格式。如果已设置指定的参数,那么参数的值将被使用,否则将使用默认值。

解析表达式所支持的来源是系统属性、环境变量和库。仅对于部署,来源可以是部署归档中 META-INF/jboss.properties 文件里列出的属性。对于支持子部署的部署类型,如果属性文件位于外部部署(如 EAR),解析的作用域是全部子部署。如果属性文件位于某个子部署里,那么解析的作用域只是该子部署。

下面的 standalone.xml 配置文件里的示例设置 public 接口的 inet-address127.0.0.1,除非 jboss.bind.address 参数已被设置。

<interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>

当用下列命令以独立服务器方式启动 JBoss EAP 时可以设置 jboss.bind.address 参数:

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
嵌套表达式

表达式可以嵌套,这允许使用高级表达式来替代固定值。嵌套表达式的格式和普通表达式类似,但表达式是内嵌的,例如:

${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}

嵌套表达式是递归地评估的,所以首先会评估 inner 表达式,然后是 outer 表达式。表达式也可以是递归的,表达式解析另外一个表达式,从而完成整个解析。允许表达式的地方就允许嵌套表达式,例外是管理 CLI 命令。

使用嵌套表达式的一个例子是,如果数据源定义里使用的密码是掩盖的,我们可以使用嵌套表达式。数据源配置可能有下列的内容:

<password>${VAULT::ds_ExampleDS::password::1}</password>

ds_ExampleDS 的值可用使用嵌套表达式的系统属性(datasource_name)替换。数据眼的配置可以有下列内容:

<password>${VAULT::${datasource_name}::password::1}</password>

JBoss EAP 首先将评估表达式 ${datasource_name},然后将它放入更大的表达式并评估结果表达式。这种配置的优势是数据源的名称会从固定配置抽象出来。

基于描述符的属性替换

应用程序配置(如数据源连接参数)在部署、测试和产品环境里通常是不一样的。这种变化有时是通过构建系统脚本来处理,因为 Java EE 规格没有包含外部化这些配置的方法。在 JBoss EAP 里,您可以使用基于描述符的属性替换以在外部管理配置。

基于描述符的属性替换(Descriptor-based property replacement)基于描述符替换属性,允许您从应用程序和构建链里删除关于环境的假设。您可以在部署描述符而不是应用程序或构建系统脚本里指定环境专有的配置。您可以在文件里或作为命令行参数提供配置。

ee 子系统里有几个标记(flag)用来控制是否应用属性替换。

JBoss 专有描述符替换是由 jboss-descriptor-property-replacement 标记控制的,它的默认值是 enabled。启用后可以替换下列属性描述符文件里的属性:

  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • *-jms.xml
  • *-ds.xml

下列管理 CLI 命令可用来启用或禁用 JBoss 专有描述符文件里的属性替换:

/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)

Java EE 描述符替换是由 spec-descriptor-property-replacement 标记控制的,它的默认值是 disabled。启用后可以替换下列属性描述符文件里的属性:

  • ejb-jar.xml
  • persistence.xml
  • application.xml
  • web.xml

下列管理 CLI 命令可用来启用或禁用 Java EE 描述符文件里的属性替换:

/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)

2.4. 网络和端口配置

2.4.1. 接口

JBoss EAP 在整个配置里都引用命名接口。这允许配置引用具有逻辑名称的单独的接口声明,而不是每次使用时都要求完整的接口细节。

这使得受管域里的配置更为容易,而多台主机的网络接口细节可以不同。每个服务器实例可以对应一个逻辑名组。

standalone.xmldomain.xmlhost.xml 文件都包含接口声明。系统里有几个预配置的接口名称,这取决于使用哪个默认配置,management 接口可以用于要求管理层的所有组件和服务,其中包括 HTTP 管理端点。public 接口可用于所有和应用程序相关的网络通讯。unsecure 接口可用于标准配置里的 IIOP 套接字。private 接口用于标准配置里的 JGroups 套接字。

2.4.1.1. 默认的接口配置

<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>
  <interface name="private">
    <inet-address value="${jboss.bind.address.private:127.0.0.1}"/>
  </interface>
  <interface name="unsecure">
    <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
  </interface>
</interfaces>

在默认情况下,JBoss EAP 绑定这些接口到 127.0.0.1,但这些值可以在运行时通过设置合适的属性来覆盖。例如,当用下列命令将 JBoss EAP 作为独立服务器启动时,您可以设置 public 接口的 inet-address

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS

或者,您可以在服务器启动命令行里使用 -b 参数。关于服务器启动选项的更多信息,请参考 Server Runtime Arguments

重要

如果您修改了 JBoss EAP 使用的默认网络接口或端口,您必须也要记得更改任何使用这些修改接口或端口的脚本,这包含 JBoss EAP 服务脚本,而且记得在访问管理控制台或管理 CLI 时指定正确的接口和端口。

2.4.1.2. 配置接口

网络接口是通过指定逻辑名和物理接口的选择标准来声明的。这个选择标准可以引用通配符地址或指定接口或地址必须具有的一系列特征以进行有效匹配。关于所有可用的接口选择标准的列表,请参考 Interface Attributes 章节。

接口可以用管理控制台或管理 CLI 来配置。下面是几个添加和更新接口的例子。它们首先显示管理 CLI 命令,然后是对应的配置 XML 内容。

添加具有 NIC 值的接口

添加 NIC 值为 eth0 的新接口。

/interface=external:add(nic=eth0)
<interface name="external">
   <nic name="eth0"/>
</interface>
添加带有几个条件值的接口

添加匹配正确子网的任何接口/地址的新接口,且它已上线、支持多点传送且不是点对点的。

/interface=default:add(subnet-match=192.168.0.0/16,up=true,multicast=true,not={point-to-point=true})
<interface name="default">
   <subnet-match value="192.168.0.0/16"/>
   <up/>
   <multicast/>
   <not>
      <point-to-point/>
   </not>
</interface>
更新接口属性

更新 public 接口的默认 inet-address 值,保留 jboss.bind.address 属性以允许在运行时设置这个值。

/interface=public:write-attribute(name=inet-address,value="${jboss.bind.address:192.168.0.0}")
<interface name="public">
    <inet-address value="${jboss.bind.address:192.168.0.0}"/>
</interface>
添加接口至受管域里的服务器
/host=master/server-config=SERVER_NAME/interface=INTERFACE_NAME:add(inet-address=127.0.0.1)
<servers>
   <server name="SERVER_NAME" group="main-server-group">
      <interfaces>
         <interface name="INTERFACE_NAME">
            <inet-address value="127.0.0.1"/>
         </interface>
      </interfaces>
   </server>
</servers>

2.4.2. 套接字绑定

套接字绑定和绑定组允许您定义网络接口及它们和 JBoss EAP 配置要求的网络接口的关系。套接字绑定是用于套接字的命名配置。套接字绑定组是一个套接字绑定声明的集合,它们按逻辑名分组。

这允许配置的其他部分通过逻辑名引用套接字绑定,而不是每次使用都要求套接字配置的完整细节。

您可以在 standalone.xmldomain.xml 配置文件里找到这些命名配置的声明。独立服务器只包含一个套接字绑定组,而受管域可以包含多个组。您可以为受管域里的每个服务器组创建一个套接字绑定组,或者在多个服务器组间共享一个套接字绑定组。

JBoss EAP 默认使用的端口取决于使用哪个套接字绑定组和您的部署的要求。

2.4.2.1. 管理端口

JBoss EAP 7 合并了管理端口。在默认情况下,JBoss EAP 7 对于原生管理(被管理 CLI 使用)和 HTTP 管理(被基于 Web 的管理控制台使用)使用端口 9990。在 JBoss EAP 6 里用作原生管理端口的 9999 端口不再使用,但仍可以在需要时启用。

如果管理控制台启用了 HTTPS,默认将使用端口 9993

2.4.2.2. 默认的套接字绑定

对于每个预定义的配置集(defaulthafullfull-ha),JBoss EAP 都附带了一个套接字绑定组。

关于默认套接字绑定的详情,如默认端口和描述,请参考 Default Socket Bindings 章节。

重要

如果您修改了 JBoss EAP 使用的默认网络接口或端口,您必须也要记得更改任何使用这些修改接口或端口的脚本,这包含 JBoss EAP 服务脚本,而且记得在访问管理控制台或管理 CLI 时指定正确的接口和端口。

独立服务器

当作为独立服务器运行时,每个配置文件只定义一个套接字绑定组。每个独立配置文件(standalone.xmlstandalone-ha.xmlstandalone-full.xmlstandalone-full-ha.xml)都为对应的配置集使用的技术定义套接字绑定。

例如,默认的独立配置文件(standalone.xml)指定下面的套接字绑定。

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>
受管域

运行在受管域时,所有的套接字组都是在 domain.xml 文件里定义的。有四个预定义的套接字绑定组:

  • standard-sockets
  • ha-sockets
  • full-sockets
  • full-ha-sockets

每个套接字组都为它对应的配置集使用的技术指定套接字绑定。例如,full-ha-sockets 套接字绑定组定义了几个 jgroups 套接字绑定,而用于高可用性的 full-ha 配置集使用它们。

<socket-binding-groups>
    <socket-binding-group name="standard-sockets" default-interface="public">
        <!-- Needed for server groups using the 'default' profile  -->
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>
    <socket-binding-group name="ha-sockets" default-interface="public">
        <!-- Needed for server groups using the 'ha' profile  -->
    ...
    </socket-binding-group>
    <socket-binding-group name="full-sockets" default-interface="public">
        <!-- Needed for server groups using the 'full' profile  -->
    ...
    </socket-binding-group>
    <socket-binding-group name="full-ha-sockets" default-interface="public">
        <!-- Needed for server groups using the 'full-ha' profile  -->
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="iiop" interface="unsecure" port="3528"/>
        <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/>
        <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
        <socket-binding name="jgroups-tcp" interface="private" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
        <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
        <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
        <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>
</socket-binding-groups>
注意

域控制器的 host.xml 文件定义了管理接口的套接字配置。

2.4.2.3. 配置套接字绑定

当定义套接字绑定时,您可以配置portinterface 属性,以及多点传送设置,如 multicast-addressmulticast-port。关于所有可用的套接字绑定属性的细节,请参考 Socket Binding Attributes 章节。

套接字绑定可以用管理控制台或管理 CLI 来配置。下面的步骤会添加一个套接字绑定组、添加一个套接字绑定且用管理 CLI 配置套接字绑定设置。

  1. 添加一个新的套接字绑定组。请注意以独立服务器运行时不能执行这个步骤。

    /socket-binding-group=new-sockets:add(default-interface=public)
  2. 添加套接字绑定。

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:add(port=1234)
  3. 修改套接字绑定来使用非默认的接口,这是通过设置套接字绑定组来完成的。

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:write-attribute(name=interface,value=unsecure)

下面的例子展示了完成上述步骤后 的 XML 配置。

<socket-binding-groups>
    ...
    <socket-binding-group name="new-sockets" default-interface="public">
        <socket-binding name="new-socket-binding" interface="unsecure" port="1234"/>
    </socket-binding-group>
</socket-binding-groups>

2.4.2.4. 端口偏移

端口偏移是添加到服务器的套接字组里指定的所有端口值的数字偏移量。这允许单个服务器继承服务器组的套接字绑定,并用偏移量来确保它和相同主机上其他服务器不冲突。例如,如果套接字绑定组的 HTTP 端口是 8080,而你的服务器使用了端口偏移量为 100,那么它的 HTTP 端口是 8180

下面的例子用管理 CLI 设置受管域里的服务器的端口偏移量为 250

/host=master/server-config=server-two/:write-attribute(name=socket-binding-port-offset,value=250)

端口偏移可以用于受管域里的服务器以及相同主机上运行的多台独立服务器。

在用 jboss.socket.binding.port-offset 属性启动独立服务器时,您可以传入一个端口偏移量。

$ EAP_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100

2.4.3. IPv6 地址

在默认情况下,JBoss EAP 运行时使用 IPv4 地址。下面的步骤展示了如何配置 JBoss EAP 以 IPv6 地址运行。

配置 IPv6 地址的 JVM Stack

更新启动配置以首选 IPv6 地址。

  1. 打开启动配置文件。

    • 当以独立服务器运行时,请编辑 EAP_HOME/bin/standalone.conf 文件或 standalone.conf.bat(Windows Server)。
    • 当运行在受管域里时,请编辑 EAP_HOME/bin/domain.conf 文件或 domain.conf.bat(Windows Server)。
  2. 设置 java.net.preferIPv4Stack 属性为 false

    -Djava.net.preferIPv4Stack=false
  3. 附加 java.net.preferIPv6Addresses 属性并设置其为 true

    -Djava.net.preferIPv6Addresses=true

下面的例子展示了在进行上述修改后启动配置文件里的 JVM 选项。

# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -Djava.net.preferIPv4Stack=false"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv6Addresses=true"
else
更新 IPv6 地址的接口声明

配置里的默认接口值可以修改为 IPv6 地址。例如,下面的管理 CLI 命令将 management 接口设置为 IPv6 回路地址(::1)。

/interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:[::1]}")

下面的例子展示了执行上述命令后 的 XML 配置。

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:[::1]}"/>
    </interface>
    ....
</interfaces>