Wildfly 10 将负载均衡器添加到现有域

Posted

技术标签:

【中文标题】Wildfly 10 将负载均衡器添加到现有域【英文标题】:Wildfly 10 Add Load Balancer to existing domain 【发布时间】:2017-12-25 21:42:11 【问题描述】:

在实施此方案之前,我没有使用 Wildfly 或 JBOSS 的经验。 我有 Wildfly 10 在域模式下运行。 2 台主机,每台运行 1 台 Wildfly 服务器,连接到单个数据源。 Server1 -Master- 域控制器 服务器 2 - 从站 数据源在“默认”配置文件下配置 部署位于“FULL”配置文件下。

我现在需要在等式中添加负载平衡,但我只想使用 Wildfly。我已阅读以下文章将静态负载平衡器设置为反向代理https://docs.jboss.org/author/display/WFLY10/Using+Wildfly+as+a+Load+Balancer

我有第三台服务器,我想将其配置为负载均衡器。 我是否将其配置为域中的“SLAVE”,但将其添加到域控制器上的 LOAD-BALANCER 配置文件中?当我这样做时,它无法找到并连接到主服务器(Server1)!

请有人告诉我我需要在此服务器上进行的基本设置,以便我能够按照上述文章中的步骤将其配置为反向代理/静态负载平衡器吗?

非常感谢

【问题讨论】:

【参考方案1】:

如果您希望通过 modcluster/static 负载平衡配置将 wildfly 用作负载平衡器,则无需在集群/域中包含服务器(它将充当负载平衡器)。您可以单独调用负载平衡器服务器。 Wildfly10 发行版已经有一个示例文件——standalone-load-balancer.xml(在里面——\docs\examples\configs),可以直接使用。

此文件具有使用 wildfly 10.1 作为负载平衡器所需的最低配置。

一旦服务器使用该文件启动,它将自动发现参与集群的工作节点(前提是多播地址和端口在网络中工作且可访问)。

另外请注意,所有工作节点都应该有不同的节点名,否则如果某些节点位于同一台机器上,并且如果它们没有使用不同的节点名调用,那么它们可能会被负载平衡器服务器拒绝。

以下是调用具有特定节点名称的wildfly服务器的命令---

standalone.bat -Djboss.node.name=<specify the node name here>

基本设置如下--

[1] 使用配置调用两个单独的节点(wildfly 实例)-standalone-ha.xml/standalone-full-ha.xml 和一些 web 应用程序(例如 cluster-demo.war)。请注意,Web 应用的部署描述符中必须有标签,否则调用两个工作节点后集群将无法建立。

[2] 第一步成功后,用户可以看到消息 - 在工作节点的控制台日志中收到新的集群视图。

[3] 负载均衡器配置 --

[3.1] 动态负载均衡器(使用 modcluser 配置)--------

使用配置调用 wildfly 的第三个实例 -standalone-load-balancer.xml

如果负载均衡器检测到所有工作节点,那么用户将在负载均衡器服务器的控制台日志中看到日志消息 - 注册节点 - 节点名称。

[3.2]静态负载均衡器配置-----

cli---

/subsystem=undertow/configuration=handler/reverse-proxy=my-handler1:add()

/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host111/:add(host=localhost, port=9080) /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host222/:add(host=localhost, port=10080)

/subsystem=undertow/configuration=handler/reverse-proxy=my-handler1/host=host11:add(outbound-socket-binding=remote-host111, scheme=http, instance-id=cluster-demoroute, path= /集群演示) /subsystem=undertow/configuration=handler/reverse-proxy=my-handler1/host=host22:add(outbound-socket-binding=remote-host222, scheme=http, instance-id=cluster-demoroute, path=/cluster-演示)

/subsystem=undertow/server=default-server/host=default-host/location=/cluster-demo:add(handler=my-handler1)

配置替换----------

[A] 在subsystem-undertow/handlers 标签内添加下面的反向代理标签--

<reverse-proxy name="my-handler1">
                    <host name="host11" outbound-socket-binding="remote-host111" path="/cluster-demo" instance-id="cluster-demoroute"/>
                    <host name="host22" outbound-socket-binding="remote-host222" path="/cluster-demo" instance-id="cluster-demoroute"/>
                </reverse-proxy>

[B] 在子系统内添加位置标签 - undertow/server=default-server/default-host

<location name="/cluster-demo" handler="my-handler1"/>

[C] 在socket-binding-group标签下面添加

<outbound-socket-binding name="remote-host111">
            <remote-destination host="localhost" port="9080"/>
        </outbound-socket-binding>
        <outbound-socket-binding name="remote-host222">
            <remote-destination host="localhost" port="10080"/>
        </outbound-socket-binding>

【讨论】:

以上是关于Wildfly 10 将负载均衡器添加到现有域的主要内容,如果未能解决你的问题,请参考以下文章

wildfly 10负载均衡器UT005041

wildfly 16 - UT 010053:没有机密端口可用于重定向当前请求

undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS

如何将 Route 53 域映射到负载均衡器?

在 Elastic Beanstalk 中,如何使用 .ebextensions 将现有安全组设置为负载均衡器?

如何将负载均衡器从 HTTP 切换到 HTTPS?