22.4. 将 JBoss EAP 配置为前端负载均衡器


您可以配置 JBoss EAP 和 undertow 子系统,以充当前端负载平衡器,将请求代理到后端 JBoss EAP 服务器。由于 Undertow 使用异步 IO,因此负责连接的 IO 线程是请求中涉及的唯一线程。相同的线程也用于连接到后端服务器。

您可以使用以下协议:

  • HTTP 通过纯文本(http),支持 HTTP/1 和 HTTP/2 (h2c)
  • HTTP 通过安全连接(https),支持 HTTP/1 和 HTTP/2 (h2)
  • ajp (ajp)

您可以定义 静态负载均衡器 并指定配置中的后端主机,或者使用 mod_cluster 前端 动态更新主机。

您可以使用内置的 mod_cluster 前端负载平衡器来负载平衡其他 JBoss EAP 实例。

此流程假设您在受管域中运行,并已配置了以下内容:

  • 用作负载平衡器的 JBoss EAP 服务器。

    • 此服务器使用 load-balancer 配置文件,它绑定到 load-balancer-sockets 套接字绑定组。

      注意

      load-balancer 配置集已预先配置了套接字绑定 mod-cluster Undertow 过滤器,并在默认主机中引用到过滤器,以便将此服务器用作前端负载平衡器。* 两个 JBoss EAP 服务器,它们充当后端服务器。** 这些服务器在集群中运行,并使用 ha 配置集,该配置文件绑定到 ha-sockets 套接字绑定组。:要部署到后端服务器的 distributable 应用程序。

配置 mod_cluster 前端负载均衡器

以下步骤对受管域中的服务器进行负载平衡,但可以对其进行调整以应用到一组单机服务器。确保更新 management CLI 命令值以适合您的环境。

流程

  1. 设置 mod_cluster 公告安全密钥。

    添加 advertise 安全密钥可让负载均衡器和服务器在发现过程中进行身份验证。

    使用以下管理 CLI 命令设置 mod_cluster 公告安全密钥。

    /profile=ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise-security-key, value=mypassword)
    Copy to Clipboard Toggle word wrap
  2. 更新 mod_cluster 负载平衡器的安全密钥。

    使用以下管理 CLI 命令,为 mod_cluster 过滤器设置安全密钥:

    /profile=load-balancer/subsystem=undertow/configuration=filter/mod-cluster=load-balancer:write-attribute(name=security-key,value=mypassword)
    Copy to Clipboard Toggle word wrap
重要

建议仅向内部网络公开 mod_cluster 使用的管理和公告套接字绑定,而不是公共 IP 地址。

负载平衡器 JBoss EAP 服务器现在可以对两个后端 JBoss EAP 服务器进行负载平衡。

多个 mod_cluster 配置

mod_cluster 子系统支持多个命名代理配置,允许向反向代理注册非默认 undertow 服务器。此外,这允许单个应用服务器节点注册到不同的代理服务器组。

以下示例将 ajp-listener、服务器和主机添加到 undertow 服务器。它还添加了一个新的 mod_cluster 配置,它使用广播机制注册主机。

/socket-binding-group=standard-sockets/socket-binding=ajp-other:add(port=8010)
/subsystem=undertow/server=other-server:add
/subsystem=undertow/server=other-server/ajp-listener=ajp-other:add(socket-binding=ajp-other)
/subsystem=undertow/server=other-server/host=other-host:add(default-web-module=root-other.war)
/subsystem=undertow/server=other-server/host=other-host
/location=other:add(handler=welcome-content)
/subsystem=undertow/server=other-server/host=other-host:write-attribute(name=alias,value=[localhost]))

/socket-binding-group=standard-sockets/socket-binding=modcluster-other:add(multicast-address=224.0.1.106,multicast-port=23364)
/subsystem=modcluster/proxy=other:add(advertise-socket=modcluster-other,balancer=other-balancer,connector=ajp-other)

reload
Copy to Clipboard Toggle word wrap

22.4.2. 在负载均衡器中启用等级的会话关联性

您必须在负载均衡器中启用等级的会话关联性,才能具有多个会话关联性,在 distributable-web 子系统中排序路由。有关 distributable-web 子系统和不同的关联性选项的更多信息,请参阅 JBoss EAP 开发指南中的 distributable-web 子系统配置

分隔节点路由的默认分隔符为 如果要不同的值,您可以配置 关联性 资源的 delimiter 属性。

流程

  1. 为负载均衡器启用等级的会话关联性:

    /subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:add
    Copy to Clipboard Toggle word wrap
  2. 可选:配置 关联性 资源的 delimiter 属性:

    /subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:write-attribute(name=delimiter,value=':')
    Copy to Clipboard Toggle word wrap

22.4.3. 将 undertow 配置为静态负载均衡器

要使用 Undertow 配置静态负载平衡器,您需要在 undertow 子系统中配置代理处理程序。要在 Undertow 中配置代理处理程序,您需要在将充当您的静态负载均衡器的 JBoss EAP 实例上执行以下操作:

  1. 添加反向代理处理程序
  2. 为每个远程主机定义出站套接字绑定
  3. 将每个远程主机添加到反向代理处理程序
  4. 添加反向代理位置

以下示例演示了如何将 JBoss EAP 实例配置为静态负载均衡器。JBoss EAP 实例位于 lb.example.com,并将在两个额外服务器之间负载平衡: server1.example.comserver2.example.com。负载平衡器将反向代理到位置 /app,并且使用 AJP 协议。

流程

  1. 添加反向代理处理程序:

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
    Copy to Clipboard Toggle word wrap
  2. 为每个远程主机定义出站套接字绑定:

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host1/:add(host=server1.example.com, port=8009)
    
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host2/:add(host=server2.example.com, port=8009)
    Copy to Clipboard Toggle word wrap
  3. 将每个远程主机添加到反向代理处理器中:

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute1, path=/test)
    
    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute2, path=/test)
    Copy to Clipboard Toggle word wrap
  4. 添加反向代理位置:

    /subsystem=undertow/server=default-server/host=default-host/location=\/test:add(handler=my-handler)
    Copy to Clipboard Toggle word wrap

当访问 lb.example.com:8080/app 时,您现在会看到从 server1.example.comserver2.example.com 代理的内容。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat