3.3. 使用域集群模式


域模式是集中管理和发布您服务器的配置的一种方式。

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

注意

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

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

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

在域模式中,域控制器在 master 节点上启动。集群的配置位于域控制器中。接下来,在集群中的每个机器上启动主机控制器。每个主机控制器部署配置指定在该机器上启动多少个 Red Hat Single Sign-On 服务器实例。当主机控制器启动时,它会启动多个 Red Hat Single Sign-On 服务器实例,因为它已配置为执行此操作。这些服务器实例从域控制器拉取其配置。

注意

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

3.3.1. 域配置

本指南中的各种其他章节将引导您配置各种方面,如数据库、HTTP 网络连接、缓存和其他基础架构相关事项。虽然单机模式使用 standalone.xml 文件来配置这些内容,但域模式使用 …​/domain/configuration/domain.xml 配置文件。这是定义了 Red Hat Single Sign-On 服务器的域配置文件和服务器组。

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

此配置被定义各种连接器的默认端口映射,它们通过每个 Red Hat Single Sign-On 服务器实例打开。包含 ${…​} 的任何值都是可在命令行中使用 -D 开关(例如)覆盖的值。

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

Red Hat Single Sign-On 的服务器组的定义位于 服务器组 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. 服务器实例工作目录

主机 文件中定义的每个 Red Hat Single Sign-On 服务器实例会在 …​/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 交换机要使用的主机控制配置文件。

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

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

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

流程

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

    第一个是 master 主机控制器,它启动域控制器、HTTP 负载均衡器和一个 Red Hat Sign-On 身份验证服务器实例。第二个是启动仅身份验证服务器实例的从属主机控制器。

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

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

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

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

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

      这个选择会生成一个 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 脚本不会将用户添加到 Red Hat Single Sign-On 服务器,而是添加到底层的 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

© 2025 Red Hat