第 13 章 Web、HTTP 连接器和 HTTP 群集


13.1. 配置 mod_cluster 工作节点

总结

mod_cluster 工作节点(Worker Node)由一个 JBoss EAP 服务器组成。这个服务器可以是受管域服务器组的一部分,或者是一个独立服务器。在 JBoss EAP 里会有一个单独的进程运行,它管理群集里的所有节点。它被称为主节点。关于工作节点的更多概念,请参考《红帽 JBoss EAP 6.1 管理和配置指南》里的『工作节点』章节。关于 HTTPD 负载平衡的概述,请参考 《JBoss EAP 6.1 管理和配置指南》里的『HTTP 连接器概述』章节。

主节点只需要通过 mod_cluster 子系统配置一次。要配置 mod_cluster 子系统,请参考《管理和配置指南》里的『配置 mod_cluster 子系统』。每个工作节点都是独立配置的,所以你可以为每个要加入群集的节点重复这个步骤。
如果你使用了受管域,服务器组里的每个服务器都是一个工作节点,它们共享相同的配置。因此,配置是对于整个服务器组完成的。而在独立服务器里,配置是对于单个 JBoss EAP 6 实例完成的。其余的配置步骤是相同的。

工作节点配置

  • 如果你使用了独立服务器,它必须以 standalone-ha 配置集启动。
  • 如果你使用受管域,你的服务器组必须使用 hafull-ha 配置集,以及 ha-socketsfull-ha-sockets 套接字绑定组。JBoss EAP 6 附带满足这些要求的启用了群集的服务器组 other-server-group

注意

如果使用管理 CLI 命令,它会假设你使用受管域。如果你使用的是独立服务器,请从命令行删除 /profile=full-ha

过程 13.1. 配置工作节点

  1. 配置网络接口。

    在默认情况下,网络接口都是 127.0.0.1。每个容纳独立服务器或服务器组里的一个或多个服务器的物理主机的接口都需要进行配置以使用其他服务器可以看到的公共 IP 地址。
    要修改 JBoss EAP 6 主机的 IP 地址,你需要关闭它并直接修改配置文件。这是因为驱动管理控制台和管理 CLI 的 Management API 依赖于稳定的管理地址。
    遵循下列步骤将群集里的每个服务器的 IP 地址修改为主节点的公共 IP 地址。
    1. 完全地关闭服务器。
    2. 对于受管域,编辑位于 EAP_HOME/domain/configuration/ 里的 host.xml,而对于独立服务器,编辑位于 EAP_HOME/standalone/configuration/ 里的 standalone-ha.xml
    3. 找到 <interfaces> 元素。有三个接口需要配置,managementpublicunsecured。你都要修改 127.0.0.1 为主机的外部 IP 地址。
    4. 对于参与受管域但不是主节点的主机,找到 <host 元素。请注意,它没有结尾的 > 符号,这是因为它包含了属性。将其 name 属性从 master 修改为其他的唯一名称,每个从节点都应不同。这个名称也将被从节点用来标识群集,请注意这一点。
    5. 对于需要加入受管域的刚配置好的主机,找到 <domain-controller> 元素。注释或删除 <local /> 元素,并添加下列一行,修改 IP 地址(X.X.X.X)为域控制台的地址。这个步骤不适用于独立服务器。
      <remote host="X.X.X.X" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
      
      Copy to Clipboard Toggle word wrap
    6. 保存文件并退出。
  2. 为每个从服务器配置验证。

    每个从服务器都需要在域控制器或独立主服务器的 ManagementRealm 里创建一个用户名和密码。在域控制器或独立主服务器上,运行 EAP_HOME/bin/add-user.sh 命令。请用和从服务器相同的用户名添加一个用户到 ManagementRealm。当提示这个用户是否需要到外部的 JBoss AS 实例验证,请选择 yes。下面是这个命令的输入和输出的例子,从服务器名为 slave1,其密码为 changeme
    user:bin user$ ./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.
    Realm (ManagementRealm) : 
    Username : slave1
    Password : changeme
    Re-enter Password : changeme
    About to add user 'slave1' for realm 'ManagementRealm'
    Is this correct yes/no? yes
    Added user 'slave1' to file '/home/user/jboss-eap-6.0/standalone/configuration/mgmt-users.properties'
    Added user 'slave1' to file '/home/user/jboss-eap-6.0/domain/configuration/mgmt-users.properties'
    Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller?
    yes/no? yes
    To represent the user add the following to the server-identities definition <secret value="Y2hhbmdlbWU=" />
    
    Copy to Clipboard Toggle word wrap
  3. add-user.sh 的输出里复制 Base64 编码的 <secret> 元素。

    如果你计划验证时指定 Base64 编码的密码,请复制 add-user.sh 的输出里的 <secret> 元素值,你在下面的步骤里需要用到它。
  4. 修改从主机的安全区以使用新的验证。

    1. 重新打开从主机的 host.xmlstandalone-ha.xml 文件。
    2. 找到 <security-realms> 元素。这是你配置安全区(Security Realm)的地方。
    3. 你可以用下列方法之一指定 secret 值:
      • 在配置文件里指定 Base64 编码的密码值。

        1. <security-realm name="ManagementRealm"> 行下添加下列 XML 片段:
          <server-identities>
              <secret value="Y2hhbmdlbWU="/>
          </server-identities>
                          
          
          
          Copy to Clipboard Toggle word wrap
        2. 用前一步骤的 add-user.sh 输出里返回的 secret 值来替换 "Y2hhbmdlbWU=" 。
      • 配置主机通过 vault.sh 获取密码。

        1. 使用 vault.sh 脚本生成一个加密的密码。它将生成一个这样的字符串: VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0
          你可以在本指南的『敏感字符串的密码阀』里找到更多信息:第 10.11.1 节 “关于保护明码文件里的敏感字符”
        2. <security-realm name="ManagementRealm"> 行下添加下列 XML 片段:
          <server-identities>
              <secret value="${VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0}"/>
          </server-identities>
                          
          
          
          Copy to Clipboard Toggle word wrap
          请用前一步骤生成的加密密码替换 secret 值。

          注意

          当在阀里创建一个密码时,它必须以明文而不是 Base64 编码来指定。
      • 指定密码为系统属性。

        1. <security-realm name="ManagementRealm"> 行下直接添加下列 XML 代码块。
          <server-identities>
              <secret value="${server.identity.password}"/>
          </server-identities>
                          
          
          
          Copy to Clipboard Toggle word wrap
        2. 当你将密码指定为系统属性时,你可以用下列方法之一配置主机:
          • 在命令行里以明文输入密码来启动服务器,例如:
            -Dserver.identity.password=changeme
            Copy to Clipboard Toggle word wrap

            注意

            密码必须以明文输入并对于任何执行 ps -ef 命令的用户可见。
          • 将密码放在属性文件里并将文件的 URL 作为命令行参数传入。
            1. 在属性文件里添加键/值对。例如:
              server.identity.password=changeme
              
              Copy to Clipboard Toggle word wrap
            2. 用命令行参数启动服务器:
              --properties=URL_TO_PROPERTIES_FILE
              Copy to Clipboard Toggle word wrap
              .
    4. 保存文件并退出。
  5. 重启服务器。

    从主机现在将以主机名为用户名以及加密的字符串为密码来向主服务器进行验证。
结果

你的独立服务器,或者位于受管域的服务器组里的服务器,现在已被配置为 mod_cluster 工作节点。如果你部署一个群集应用程序,它的会话会被复制到所有的群集节点以用于失效切换,且它可以从外部的 HTTPD 服务器或负载平衡器接受请求。在默认情况下,群集的每个节点都可以用自动发现来发现其他节点。要配置自动发现和 mod_cluster 子系统的其他专有设置,请参考《管理和配置指南》里的『配置 mod_cluster 子系统』章节。要配置 Apache HTTPD 服务器,请参考《管理和配置指南》里的『将外部 HTTPD 用作 JBoss EAP 应用程序的 Web 前端』章节。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat