1

我按照Stuart Douglas视频中的这些说明,使 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)  

但是,当我访问主服务器时,负载仍然只平衡到 backend1 和 backend2。我试图停止两者,只让 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 。

4

2 回答 2

1

更改您的从属主机默认接口地址,使其对主控可见。

IE:

<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。并在主控主机上做同样的事情。

于 2016-03-22T11:20:59.510 回答
0

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

我关注了 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 地址)时的设置。

于 2016-04-09T11:07:28.010 回答