子兮子兮 子兮子兮

No can, but will.

目录
Wildfly/JBoss EAP 高可用负载均衡配置
/        

Wildfly/JBoss EAP 高可用负载均衡配置

基于 Wildfly 托管域运行模式,在已配置好集群的前提下,使用 Undertow 子系统配置负载均衡。

集群拓扑:

Topology

如上图所示,已组成一个由 2 个主机(masterslave)共 4 个节点(server-oneserver-twoserver-one-slaveserver-two-slave)组成的服务器集群(main-server-group),将通过 Undertow 子系统配置负载均衡。

主机概况

Hosts

在当前集群中,master 主机控制器同时充当域控制器,来统一配置管理服务器组的配置和部署。

集群概况

Server Groups

高可用集群必须使用 ha 或 full-ha 配置文件启动,当前服务器组使用 ha 配置。

hafull-ha 区别是不包含 jsr77activemqiiop-openjdk 子系统,根据是否需要相关子系统来选择使用 ha 还是 full-ha 配置文件,一般使用 ha 即可。

负载均衡

Wildfly 支持多种方式的负载均衡实现,此处仅对使用 Undertow 实现负载均衡进行说明。
从 Wildfly 10 开始支持使用 Undertow 子系统作为前端负载均衡器使用,从 Wildfly 11 开始提供了负载平衡器的配置文件,独立模式为 standalone-load-balancer.xml,域模式在 domain.xml<profile name="load-balancer"> 节点中。
当前最新 Wildfly 版本为 17.0.1.Final,最新 JBoss EAP 7.2 基于 Wildfly 14,都支持使用 Undertow 作为负载均衡器。
load-balancer

使用 Undertow 作为负载均衡器概述

Undertow 代理使用异步 IO,请求中涉及的唯一线程是负责连接的 IO 线程。 与后端服务器的连接是由同一个线程完成的,这样就不需要任何线程安全结构。
如果前端和后端服务器都支持服务器推送,并且正在使用 HTTP2,则代理也支持向客户端推送响应。如果代理和后端能够推送服务器,但客户端不支持,服务器将发送一个“X-Disable-Push”头,让后端知道它不应该尝试推送该请求。

将 Undertow 配置为静态负载均衡器

要使用 Undertow 配置静态负载均衡器,需要在 Undertow 子系统中配置代理处理程序(Proxy Handler)。 要在 Undertow 中配置代理处理程序,需要在将用作静态负载均衡器的 Wildfly 实例上执行以下操作:

  1. 添加反向代理处理程序(Reverse Proxy Handler):

    /profile=load-balancer/subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
    

    Reverse Proxy Handler

  2. 为每个远程主机定义出站套接字绑定(Outbound Socket Binding):

    /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)
    

    image.png

  3. 将每个远程主机添加到反向代理处理程序中:

    /profile=load-balancer/subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute, path=/test)
    
    /profile=load-balancer/subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute, path=/test)
    
  4. 添加反向代理位置:

.

参考资料:

  1. https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.2/html/configuration_guide/configuring_high_availability
  2. https://docs.wildfly.org/17/Admin_Guide.html