3.3. 使用域集群模式


域模式是集中管理并发布服务器配置的方法。

以标准模式运行集群可能会很快就会成为随着集群大小增长的聚合。每次您需要进行配置更改时,您都会在集群的每个节点上执行它。域模式通过提供用于存储和发布配置的核心位置来解决这个问题。设置起来可能非常复杂,但最后很值得设置。该功能内置于红帽单点登录的 JBoss EAP 应用服务器中。

注意

本指南将介绍域模式的基本知识。应该在 JBoss EAP 配置指南 中获得如何在群集中设置域模式的详细步骤。

以下是在域模式下运行的一些基本概念:

域控制器
域控制器是一个负责存储、管理和发布集群中每个节点的常规配置的过程。这个过程是集群中的节点获取其配置的中央点。
主机控制器
主机控制器负责管理特定计算机上的服务器实例。您要将它配置为运行一个或多个服务器实例。域控制器也可与每台计算机上的主机控制器交互来管理集群。为减少正在运行的进程数量,域控制器也充当其所运行计算机上的主机控制器。
域配置集
域配置文件是一组指定的配置,供服务器用来引导。域控制器可以定义由不同服务器使用的多个域配置文件。
服务器组
服务器组是服务器的集合。它们作为.您可以将域配置文件分配到服务器组,并且该组中的每个服务都将使用该域配置文件作为其配置。

在域模式中,在主节点上启动域控制器。集群的配置驻留在域控制器中。接下来,在集群的每个计算机上启动主机控制器。每个主机控制器部署配置都指定在该计算机上启动多少个红帽单点登录服务器实例。当主机控制器启动时,它会启动任意数量的 Red Hat Single Sign-On 服务器实例,就像被配置为这样做。这些服务器实例从域控制器拉取其配置。

注意

在一些环境中,如 Microsoft Azure,域模式不适用。请参考 JBoss EAP 文档。

3.3.1. 域配置

本指南中的各个章节将指导您配置数据库、HTTP 网络连接、缓存和其他基础架构相关的内容。虽然 standalone 模式使用 standalone.xml 文件来配置这些内容,而域模式使用 …​/domain/configuration/domain.xml 配置文件。这是定义红帽单点登录服务器的域配置文件和服务器组的位置。

domain.xml

domain file

警告

您在域控制器运行期间您对此文件所做的任何更改都不会生效,甚至可由服务器覆盖。应使用命令行脚本或 JBoss EAP Web 控制台。如需更多信息,请参阅 JBoss EAP 配置指南

我们来看看这个 domain.xml 文件的一些方面。auth-server-standaloneauth-server-clustered 配置集 XML 块是您将要进行大量配置决策的位置。您可以在此处配置内容,如网络连接、缓存和数据库连接。

auth-server 配置集

    <profiles>
        <profile name="auth-server-standalone">
            ...
        </profile>
        <profile name="auth-server-clustered">
            ...
        </profile>
Copy to Clipboard Toggle word wrap

auth-server-standalone 配置集是一个非集群设置。auth-server-clustered 配置集是集群的设置。

如果进一步向下滚动,您会看到定义了各种 socket-binding-groups

socket-binding-groups

    <socket-binding-groups>
        <socket-binding-group name="standard-sockets" default-interface="public">
           ...
        </socket-binding-group>
        <socket-binding-group name="ha-sockets" default-interface="public">
           ...
        </socket-binding-group>
        <!-- load-balancer-sockets should be removed in production systems and replaced with a better software or hardware based one -->
        <socket-binding-group name="load-balancer-sockets" default-interface="public">
           ...
        </socket-binding-group>
    </socket-binding-groups>
Copy to Clipboard Toggle word wrap

此配置定义每个红帽单点登录服务器实例打开的各种连接器的默认端口映射。包含 ${…​} 的任何值都是一个值,可通过 -D 开关(例如 )在命令行中覆盖该值。

$ domain.sh -Djboss.http.port=80
Copy to Clipboard Toggle word wrap

红帽单点登录的服务器组定义位于 服务器组 XML 块中。它指定使用的域配置文件(默认),以及在主机控制器引导实例时,以及 Java 虚拟机的一些默认引导参数。它还将 socket-binding-group 绑定到服务器组。

服务器组

    <server-groups>
        <!-- load-balancer-group should be removed in production systems and replaced with a better software or hardware based one -->
        <server-group name="load-balancer-group" profile="load-balancer">
            <jvm name="default">
                <heap size="64m" max-size="512m"/>
            </jvm>
            <socket-binding-group ref="load-balancer-sockets"/>
        </server-group>
        <server-group name="auth-server-group" profile="auth-server-clustered">
            <jvm name="default">
                <heap size="64m" max-size="512m"/>
            </jvm>
            <socket-binding-group ref="ha-sockets"/>
        </server-group>
    </server-groups>
Copy to Clipboard Toggle word wrap

3.3.2. 主机控制器配置

Red Hat Single Sign-On 附带两个主机控制器配置文件,它们位于 …​/domain/configuration/ 目录中: host-master.xmlhost-slave.xmlhost-master.xml 配置为引导域控制器、负载平衡器和一个红帽单点登录服务器实例。host-slave.xml 配置为与域控制器对话并引导一个红帽单点登录服务器实例。

注意

负载均衡器不是必需的服务。它存在,以便您可以在开发机器中轻松测试驱动器集群。虽然可用于生产环境,但如果您有不同的硬件或基于软件的负载均衡器,则可以选择替换它。

主机操作系统配置

host files

要禁用负载均衡器服务器实例,请编辑 host-master.xml 并注释掉或移除 "load-balancer" 条目。

    <servers>
        <!-- remove or comment out next line -->
        <server name="load-balancer" group="loadbalancer-group"/>
        ...
    </servers>
Copy to Clipboard Toggle word wrap

有关此文件的另一个好处在于身份验证服务器实例的声明。它具有 port-offset 设置。domain.xml socket-binding-group 或 server group 中定义的任何网络端口都将添加 port-offset 值。在本示例域设置中,我们执行此操作,以便负载均衡器服务器打开的端口与启动的身份验证服务器实例没有冲突。

    <servers>
        ...
        <server name="server-one" group="auth-server-group" auto-start="true">
             <socket-bindings port-offset="150"/>
        </server>
    </servers>
Copy to Clipboard Toggle word wrap

3.3.3. 服务器实例工作目录

主机文件中定义的每个红帽单点登录服务器实例会在 …​/domain/servers/{SERVER NAME} 下创建一个工作目录。可以放置额外的配置,以及服务器实例需要的任何临时、日志或数据文件,也可以创建这些配置。每个服务器目录的结构与任何其他 JBoss EAP 启动服务器类似。

工作目录

domain server dir

3.3.4. 以域集群模式引导

以域模式运行服务器时,您需要运行 特定的脚本来引导服务器,具体取决于您的操作系统。这些脚本位于服务器分发的 bin/ 目录中。

域启动脚本

domain boot files

引导服务器:

Linux/Unix

$ .../bin/domain.sh --host-config=host-master.xml
Copy to Clipboard Toggle word wrap

Windows

> ...\bin\domain.bat --host-config=host-master.xml
Copy to Clipboard Toggle word wrap

在运行启动脚本时,您将需要传递要通过 --host-config 参数使用的主机控制配置文件。

警告

要使用 Java SE 17 在域模式下运行 Red Hat Single Sign-On,应修改配置执行捆绑的脚本 enable-keycloak-se17-domain.cli

Linux/Unix

$ ./bin/jboss-cli.sh --file=docs/examples/enable-keycloak-se17-domain.cli
Copy to Clipboard Toggle word wrap

Windows

> .\bin\jboss-cli.bat --file=docs\examples\enable-keycloak-se17-domain.cli
Copy to Clipboard Toggle word wrap

3.3.5. 使用示例集群域进行测试

您可以使用示例 domain.xml 配置测试驱动器集群。这个示例域是在一台机器中运行并引导:

  • 一个域控制器
  • HTTP 负载均衡器
  • 两个红帽单点登录服务器实例

流程

  1. 运行 domain.sh 脚本两次,以启动两个独立的主机控制器。

    第一个是启动域控制器、HTTP 负载均衡器和一个红帽单点登录身份验证服务器实例的主主机控制器。第二个是从属主机控制器,仅启动身份验证服务器实例。

  2. 配置从属主机控制器,以使其安全地与域控制器通信。执行以下步骤:

    如果省略这些步骤,则从属主机无法从域控制器获取集中配置。

    1. 通过创建一个服务器 admin 用户和一个在主服务器和从卷之间共享的 secret 来设置安全连接。

      运行 …​/bin/add-user.sh 脚本。

    2. 当脚本询问要添加的用户类型时,选择 Management User

      这个选择会生成一个 secret,供您剪切并粘贴到 …​/domain/configuration/host-slave.xml 文件中。

      添加 App Server Admin

      $ add-user.sh
       What type of user do you wish to add?
        a) Management User (mgmt-users.properties)
        b) Application User (application-users.properties)
       (a): a
       Enter the details of the new user to add.
       Using realm 'ManagementRealm' as discovered from the existing property files.
       Username : admin
       Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
        - The password should not be one of the following restricted values {root, admin, administrator}
        - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
        - The password should be different from the username
       Password :
       Re-enter Password :
       What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
       About to add user 'admin' for realm 'ManagementRealm'
       Is this correct yes/no? yes
       Added user 'admin' to file '/.../standalone/configuration/mgmt-users.properties'
       Added user 'admin' to file '/.../domain/configuration/mgmt-users.properties'
       Added user 'admin' with groups to file '/.../standalone/configuration/mgmt-groups.properties'
       Added user 'admin' with groups to file '/.../domain/configuration/mgmt-groups.properties'
       Is this new user going to be used for one AS process to connect to another AS process?
       e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
       yes/no? yes
       To represent the user add the following to the server-identities definition <secret value="bWdtdDEyMyE=" />
      Copy to Clipboard Toggle word wrap

      注意

      add-user.sh 脚本不会将用户添加到红帽单点登录服务器,而是添加到底层 JBoss 企业应用平台中。这个脚本中使用的和生成的凭证仅用于演示目的。请使用在您的系统中生成的它们。

  3. 将 secret 值剪切并粘贴到 …​/domain/configuration/host-slave.xml 文件中,如下所示:

         <management>
             <security-realms>
                 <security-realm name="ManagementRealm">
                     <server-identities>
                         <secret value="bWdtdDEyMyE="/>
                     </server-identities>
    Copy to Clipboard Toggle word wrap
  4. …​/domain/configuration/host-slave.xml 文件中添加创建用户的用户名:

         <remote security-realm="ManagementRealm" username="admin">
    Copy to Clipboard Toggle word wrap
  5. 运行引导脚本两次,以在一个开发机器中模拟两个节点集群。

    引导 master

    $ domain.sh --host-config=host-master.xml
    Copy to Clipboard Toggle word wrap

    启动从卷

    $ domain.sh --host-config=host-slave.xml
    Copy to Clipboard Toggle word wrap

  6. 打开浏览器,再转到 http://localhost:8080/auth 以试用。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat