8.5. 受管域设置
8.5.1. 在单一机器上设置受管域
您可以使用 jboss.domain.base.dir
属性在一台机器上运行多个主机控制器。
不支持将多个 JBoss EAP 主机控制器配置为单一计算机上的系统服务。
复制域控制器的
EAP_HOME/domain
目录。$ cp -r EAP_HOME/domain /path/to/domain1
复制主机控制器的
EAP_HOME/domain
目录。$ cp -r EAP_HOME/domain /path/to/host1
使用
/path/to/domain1
启动域控制器。$ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.domain.base.dir=/path/to/domain1
使用
/path/to/host1
启动主机控制器。$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.base.dir=/path/to/host1 -Djboss.domain.master.address=IP_ADDRESS -Djboss.management.native.port=PORT
注意启动主机控制器时,您必须使用
jboss.domain.master.address
属性指定域控制器的地址。此外,由于此主机控制器在与域控制器相同的计算机上运行,您必须更改管理接口,使其不与域控制器的管理界面冲突。此命令设置
jboss.management.native.port
属性。
以这种方式启动的每个实例都将共享基本安装目录中资源的其余部分(如 EAP_HOME/modules/
),但使用 jboss.domain.base.dir
指定的目录中的域配置。
8.5.2. 在两台机器上设置受管域
您可能需要配置防火墙以运行本例。
您可以在两台机器上创建受管域,其中一台机器是域控制器,另一台机器是一个主机。如需更多信息 ,请参阅关于域控制器。
-
ip1
= 域控制器的 IP 地址(Machine 1) -
ip2
= 主机的 IP 地址(Machine 2)
在两台机器上创建受管域
在 Machine 1 中
添加管理用户,使主机可由域控制器进行身份验证。
使用
add-user.sh
脚本为主机控制器添加管理用户(HOST_NAME
)。确保在最后一个提示中回答yes
并记录所提供的 secret 值(<secret value="SECRET_VALUE"
/>)。此 secret 值将在主机控制器配置中使用。启动域控制器。
指定
host-master.xml
配置文件,该文件预配置了专用的域控制器。另外,设置jboss.bind.address.management
属性,使域控制器对其他计算机可见。$ EAP_HOME/bin/domain.sh --host-config=host-master.xml -Djboss.bind.address.management=IP1
在 Machine 2 中
使用用户凭据更新主机配置。
编辑
EAP_HOME/domain/configuration/host-slave.xml
,并设置主机名(HOST_NAME
)和 secret 值(SECRET_VALUE
)。<host xmlns="urn:jboss:domain:1.6" name="HOST_NAME"> <management> <security-realms> <security-realm name="ManagementRealm"> <server-identities> <secret value="SECRET_VALUE" /> </server-identities> ...
启动主机控制器。
指定
host-slave.xml
配置文件,该文件预配置了 slave 主机控制器。另外,设置jboss.domain.master.address
属性以连接到域控制器,使用jboss.bind.address
属性来设置主机控制器绑定地址。$ EAP_HOME/bin/domain.sh --host-config=host-slave.xml -Djboss.domain.master.address=IP1 -Djboss.bind.address=IP2
现在,您可以在启动时使用 --controller
参数指定域控制器地址,通过管理 CLI 管理域。
$ EAP_HOME/bin/jboss-cli.sh --connect --controller=IP1
或者,您可以从管理控制台 http://IP1:9990
管理域。
8.5.3. 配置 JBoss EAP 7 域控制器以管理 JBoss EAP 6 实例
JBoss EAP 7 域控制器可以管理运行较旧版本的 JBoss EAP 的主机和服务器,只要满足以下条件:
- JBoss EAP 实例必须是 JBoss EAP 6.2 或更高版本。
- 域控制器的 JBoss EAP 版本必须大于或等于它管理的主机控制器上的版本。
完成以下任务,以成功管理 JBoss EAP 7 受管域中的 JBoss EAP 6 实例。
完成这些任务后,您可以使用管理 CLI 从 JBoss EAP 7 域控制器管理 JBoss EAP 6 服务器和配置。请注意,JBoss EAP 6 主机将无法利用新的 JBoss EAP 7 功能,如批处理。
由于管理控制台针对最新版本的 JBoss EAP 进行了优化,因此不应使用它来更新您的 JBoss EAP 6 主机、服务器和配置文件。从 JBoss EAP 7 受管域管理 JBoss EAP 6 配置时,请使用管理 CLI。
8.5.3.1. 将 JBoss EAP 6 配置添加到 JBoss EAP 7 域控制器
要允许域控制器管理您的 JBoss EAP 6 服务器,您必须在 JBoss EAP 7 域配置中提供 JBoss EAP 6 配置详情。您可以将 JBoss EAP 6 配置文件、套接字绑定组和服务器组复制到 JBoss EAP 7 domain.xml
配置文件来实现此目的。
如果 JBoss EAP 7 配置中现有名称有冲突,则需要重命名资源。另外还有一些额外的 调整,可以确保正确的行为。
以下流程使用 JBoss EAP 6 默认配置文件
、standard-sockets
套接字绑定组和 main-server-group
服务器组。
-
编辑 JBoss EAP 7
domain.xml
配置文件。 将适用的 JBoss EAP 6 配置文件复制到 JBoss EAP 7
domain.xml
文件中。此流程假设 JBoss EAP 6 默认配置文件已复制并重命名为
eap6-
。default
JBoss EAP 7
domain.xml
<profiles> ... <profile name="eap6-default"> ... </profile> </profiles>
添加此配置集使用的必要扩展。
如果您的 JBoss EAP 6 配置文件使用 JBoss EAP 7 中不再存在的子系统,您必须将适当的扩展添加到 JBoss EAP 域配置中。
JBoss EAP 7
domain.xml
<extensions> ... <extension module="org.jboss.as.configadmin"/> <extension module="org.jboss.as.threads"/> <extension module="org.jboss.as.web"/> <extensions>
将适用的 JBoss EAP 6 套接字绑定组复制到 JBoss EAP 7
domain.xml
文件。此流程假设 JBoss EAP 6
standard-sockets
套接字绑定组已复制并重命名为eap6-standard-sockets
。JBoss EAP 7
domain.xml
<socket-binding-groups> ... <socket-binding-group name="eap6-standard-sockets" default-interface="public"> ... </socket-binding-group> </socket-binding-groups>
将适用的 JBoss EAP 6 服务器组复制到 JBoss EAP 7
domain.xml
文件。此流程假设 JBoss EAP 6
main-server-group
服务器组已复制并重命名为eap6-main-server-group
。您还必须更新此服务器组,以使用 JBoss EAP 6 配置文件eap6-default
,以及 JBoss EAP 6 套接字绑定组eap6-standard-sockets
。JBoss EAP 7
domain.xml
<server-groups> ... <server-group name="eap6-main-server-group" profile="eap6-default"> ... <socket-binding-group ref="eap6-standard-sockets"/> </server-group> </server-groups>
8.5.3.2. 更新 JBoss EAP 6 配置文件的行为
您的 JBoss EAP 6 实例使用的配置文件的其他更新取决于 JBoss EAP 版本和所需行为。根据现有 JBoss EAP 6 实例使用的子系统和配置,您可能需要进行其他更改。
启动 JBoss EAP 7 域控制器并启动其管理 CLI,以执行以下更新:这些示例假定 JBoss EAP 6 配置文件为 eap6-default
。
删除
bean-validation
子系统。JBoss EAP 7 将 bean 验证功能从
ee
子系统移到自己的子系统bean-validation
。如果 JBoss EAP 7 域控制器看到传统的ee
子系统,它会添加新的bean-validation
子系统。但是,JBoss EAP 6 主机无法识别此子系统,因此必须删除它。JBoss EAP 7 域控制器 CLI
/profile=eap6-default/subsystem=bean-validation:remove
设置 CDI 1.0 行为。
只有在 JBoss EAP 6 服务器需要 CDI 1.0 行为,而不是在 JBoss EAP 7 中使用后续 CDI 版本的行为时,才需要这样做。如果您希望 CDI 1.0 行为,请对
weld
子系统进行以下更新。JBoss EAP 7 域控制器 CLI
/profile=eap6-default/subsystem=weld:write-attribute(name=require-bean-descriptor,value=true) /profile=eap6-default/subsystem=weld:write-attribute(name=non-portable-mode,value=true)
为 JBoss EAP 6.2 启用数据源统计信息。
只有在您的配置文件被 JBoss EAP 6.2 服务器使用时才需要。JBoss EAP 6.3 引入了
启用统计
的属性,默认为false
以不收集统计信息;但是,JBoss EAP 6.2 行为是收集统计信息。如果 JBoss EAP 6.2 主机和运行较新的 JBoss EAP 版本的主机使用此配置文件,则行为在主机之间会不一致,而这在没有被允许的。因此,供 JBoss EAP 6.2 主机使用的配置集应该为其数据源进行以下更改。JBoss EAP 7 域控制器 CLI
/profile=eap6-default/subsystem=datasources/data-source=ExampleDS:write-attribute(name=statistics-enabled,value=true)
8.5.3.3. 为 JBoss EAP 6 服务器设置服务器组
如果您重命名了服务器组,您需要更新 JBoss EAP 6 主机配置,以使用 JBoss EAP 7 配置中指定的新服务器组。本例使用 JBoss EAP 7 domain.xml
中指定的 eap6-main-server-group
服务器组。
JBoss EAP 6 host-slave.xml
<servers> <server name="server-one" group="eap6-main-server-group"/> <server name="server-two" group="eap6-main-server-group"> <socket-bindings port-offset="150"/> </server> </servers>
主机无法使用比主机运行的较新版本的 JBoss EAP 中引入的功能或配置设置。
8.5.3.4. 防止 JBoss EAP 6 实例接收 JBoss EAP 7 更新
受管域中的域控制器将配置更新转发到其主机控制器。您必须使用 host-exclude
配置来指定应从特定版本隐藏的资源。为您的 JBoss EAP 6 版本选择适当的预配置的 host-exclude
选项: EAP62
、EAP63
、EAP64
或 EAP64z
。
host-exclude
配置的 active-server-groups
属性指定特定版本使用的服务器组列表。这些服务器组及其关联的配置文件、套接字绑定组和部署资源可供此版本的主机使用,但所有其他服务器组在这些主机上都隐藏。
本例假定版本是 JBoss EAP 6.4.z,并添加 JBoss EAP 6 服务器组 eap6-main-server-group
作为活动服务器组。
JBoss EAP 7 域控制器 CLI
/host-exclude=EAP64z:write-attribute(name=active-server-groups,value=[eap6-main-server-group])
如果需要,您可以使用 active-socket-binding-groups
属性指定服务器使用的额外套接字绑定组。这只适用于与 active-server-groups
中指定的服务器组关联的套接字绑定组。