我跟踪了来自Stuart Douglas these instructions的video以启用Wildfly来平衡请求,而不需要apache + mod_cluster,这是自Wildfly 9以来可用的功能。
它在视频中起作用。但是,我没有将第三个后端服务器添加到同一主机,而是创建了另一个主机,并将后端3服务器添加到后端,后者也被添加到后端服务器组。
所以我有以下布局:
服务器1(主机控制器和负载均衡器):
服务器2(从属):
我启动了第二台主机作为奴隶,我可以使用它的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启动,但后来我再也无法通过负载均衡器访问集群演示了。
任何人都知道负载均衡器是否需要上瘾配置才能与从属主机配合使用?
修改
我正在添加我的主机控制器和从属日志。
主机控制器: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。
答案 0 :(得分: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。 并在主控主机上做同样的事情。
答案 1 :(得分:0)
我正在解决同样的问题。我的master和slave日志输出看起来完全一样。
我在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地址)时的设置。