【问题标题】:Wildfly 10 not load balancing to other hostWildfly 10 未对其他主机进行负载平衡
【发布时间】:2016-07-05 09:56:00
【问题描述】:

我关注了来自 Stuart Douglas videothese instructions 以使 Wildfly 能够在不需要 apache + mod_cluster 的情况下平衡请求,该功能自 Wildfly 9 起提供。

效果和视频中一样。但后来,我没有将第三台后端服务器添加到同一主机,而是创建了另一台主机并将 backend3 服务器添加到其中,该服务器也添加到了 backend-servers 组。

所以我有以下布局:

服务器一(主机控制器和负载平衡器):

  • 后端1
  • 后端2

服务器二(从):

  • 后端3

我将第二台主机作为从机启动,我可以使用它的 ip 和 backend3 端口访问集群演示。此外,主机控制器能够注册从机:

[Host Controller] 10:05:52,198 INFO  [org.jboss.as.domain.controller] (Host Controller Service Threads - 56) WFLYHC0019: Registered remote slave host "srv217", JBoss WildFly Full 10.0.0.Final (WildFly 2.0.10.Final)  

但是,当我访问主服务器时,负载仍然只平衡到后端 1 和后端 2。 我试图停止两者,只让 backend3 启动,但后来我无法通过负载均衡器访问 clustering-demo。

有人知道负载平衡器是否需要额外的配置才能与从属主机一起工作?

编辑:

我正在添加我的主机控制器和从属日志。

主机控制器:http://pastebin.com/nyaDiPzS 奴隶:http://pastebin.com/kMS72E4U

这些台词引起了我的注意:

[Server:backend2] 08:56:58,956 INFO  [org.infinispan.CLUSTER] (remote-thread--p7-t1) ISPN000310: Starting cluster-wide rebalance for cache clustering-demo.war, topology CacheTopology{id=1, rebalanceId=1, currentCH=DefaultConsistentHash{ns=80, owners = (1)[master:backend2: 80+0]}, pendingCH=DefaultConsistentHash{ns=80, owners = (2)[master:backend2: 40+40, master:backend1: 40+40]}, unionCH=null, actualMembers=[master:backend2, master:backend1]}
[Server:backend2] 08:56:59,023 INFO  [org.infinispan.CLUSTER] (remote-thread--p7-t1) ISPN000310: Starting cluster-wide rebalance for cache routing, topology CacheTopology{id=1, rebalanceId=1, currentCH=DefaultConsistentHash{ns=80, owners = (1)[master:backend2: 80+0]}, pendingCH=DefaultConsistentHash{ns=80, owners = (2)[master:backend2: 40+40, master:backend1: 40+40]}, unionCH=null, actualMembers=[master:backend2, master:backend1]}
[Server:backend2] 08:56:59,376 INFO  [org.infinispan.CLUSTER] (remote-thread--p7-t2) ISPN000336: Finished cluster-wide rebalance for cache clustering-demo.war, topology id = 1

似乎确认没有检测到slave:backend3。

【问题讨论】:

    标签: load-balancing wildfly mod-cluster wildfly-10


    【解决方案1】:

    将您的从属主机默认接口地址更改为对主控可见。

    即:

    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address}"/>
        </interface>
        <interface name="private">
            <inet-address value="${jboss.bind.address}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address}"/>
        </interface>
    </interfaces>
    

    其中 jboss.bind.address 是从属主机的真实 IP。 并在主控主机上执行相同操作。

    【讨论】:

    • 我的 slave host.xml 已经有了这个配置和它的 ip 地址集。
    • 所以,在你的 domain.xml 配置中做同样的事情。它适用于我在两个 Windows 主机上。当所有接口(主控主机、从属主机和域控制器)都有公共 IP 集群时,负载平衡应该可以工作。
    • 我在master的host.xml和domain.xml以及slave的host.xml和slave.xml中设置了所有的接口,但是还是不行。我不知道问题是否与接口有关,因为从机成功连接到主机。但是,平衡器仍然不会向从属主机发送请求。顺便说一句,如果我使用 mod_cluster + apache 作为负载均衡器,它就可以工作。
    • 那么现在你的从节点在集群中注册正确,但只有负载均衡不起作用?需要明确的是,在 master 上您需要 domain.xml 和 host.xml (或其他),但在从属主机上只需要 slave.xml 。如果你给我你的电子邮件地址,我会把我的主从配置发送给你。
    • 其实slave从一开始就在注册master,如果我不清楚,请见谅。请将您的配置发送至 hfluz@uel.br。非常感谢。
    【解决方案2】:

    我遇到了同样的问题。我的主从日志输出看起来完全一样。

    我在 GitHub 上关注了视频教程和相关项目:https://github.com/stuartwdouglas/modcluster-example

    我已在主服务器和从服务器上设置了所有公共 IP 地址。主机控制器注册从属,infinispan 显示集群重新平衡的日志消息,显示 2 个从属。但是负载平衡不起作用。尽管 infinispan 将所有从属服务器显示为集群成员,但会话复制似乎也不起作用。

    如果我在一台机器上重复上述 GitHub 项目中描述的步骤,那就是所有服务器都在同一个 IP 上,但在不同的端口上 - 一切正常。

    我还发现了这个:http://wildfly9.blogspot.bg/2015/10/wildfly-9-reverse-proxy-config-with.html?m=1,他提到将公共 IP 地址添加为默认主机别名。也这样做了,但仍然无法正常工作。

    有人能指出我们正确的方向吗?我认为文档中缺少一些小但很重要的东西,并且网络上没有足够的演示/教程来演示当所有从属服务器和负载均衡器位于不同主机(不同 IP 地址)时的设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-21
      • 2018-06-11
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多