【问题标题】:AMQ load balancing cluster setupAMQ 负载均衡集群设置
【发布时间】:2014-08-03 18:18:17
【问题描述】:

我知道有很多关于 AMQ 集群的信息,但我不知道如何设置它.. 我需要一个负载平衡集群,有两台机器,每台机器上有两个实例,如 192.168.0.1 (instance1,instance2) 192.168.0.2(instance3,instance4)。 我的 openwire 端口是 0.0.0.0:61617 - 0.0.0.0:61620。 在互联网上找到了一些解决方案,例如:

实例1

<networkConnectors>
 <networkConnector name="instance1-instance3-instance4" uri="masterslave:(tcp://192.168.0.2:61619,tcp://192.168.0.2:61620)" />
</networkConnectors>
<persistenceAdapter>
 <kahaDB directory="${activemq.data}/kahadb1" />
</persistenceAdapter>

实例2:

<networkConnectors>
 <networkConnector name="instance2-instance3-instance4" uri="masterslave:(tcp://192.168.0.2:61619,tcp://192.168.0.2:61620)" />
</networkConnectors>
<persistenceAdapter>
 <kahaDB directory="${activemq.data}/kahadb1" />
</persistenceAdapter>

实例3:

<networkConnectors>
 <networkConnector name="instance3-instance1-instance2" uri="masterslave:(tcp://192.168.0.1:61617,tcp://192.168.0.1:61618)" />
</networkConnectors>
<persistenceAdapter>
 <kahaDB directory="${activemq.data}/kahadb2" />
</persistenceAdapter>

实例4:

<networkConnectors>
 <networkConnector name="instance4-instance1-instance2" uri="masterslave:(tcp://192.168.0.1:61617,tcp://192.168.0.1:61618)" />
 <networkConnector name="FAILOVER" 
        uri="static:(failover:(tcp://192.168.0.1:61617,tcp://192.168.0.2:61619,tcp://192.168.0.1:61618,tcp://192.168.0.2:61620))?randomize=false" 
        dynamicOnly="true" 
        networkTTL="4" 
        duplex="true"/>
</networkConnectors>
<persistenceAdapter>
 <kahaDB directory="${activemq.data}/kahadb2" />
</persistenceAdapter>

它可以工作,相互连接,当一个节点出现故障时,instance4 会使用此故障转移字符串重新连接到另一个节点。但我不知道它工作正常还是不起作用,请告诉我? 也许有人制作了LB集群并可以提供xml文件?拜托。对不起,如果我的英语不太好。我来自其他国家)

【问题讨论】:

  • 有点不清楚你在问什么
  • 我无法理解我的第一条消息中的代理网络是如何工作的。它是否平衡消息,我该如何测试它:) 对不起我的英语
  • 这完全取决于消费者。如果 broker1 和 broker2 在代理网络中连接 - 如果 broker2 有连接的消费者并且 broker1 有消息(在特定目标上),消息将从 broker1 流向 broker2。特定队列上的多个消费者之间的负载平衡将发生在代理网络中,就像在具有多个消费者的单个代理上一样。
  • 好的,我明白了,非常感谢。
  • 为什么当我连接客户端时,只有第一个代理收到消息?消费者-Durl=failover:(tcp://192.168.0.1:61617,tcp://192.168.0.2:61619,tcp://192.168.0.1:61618,tcp://192.168.0.2:61620)?randomize=两个代理上的虚假消费者数量均为 1。如果consumer -Durl=failover:(tcp://192.168.0.2:61619,tcp://192.168.0.1:61618,tcp://192.168.0.2:61620)?randomize=false (没有第一个地址,然后负载均衡工作正常)。

标签: activemq cluster-computing load-balancing


【解决方案1】:

扩展 ActiveMQ 部署的解决方案(从代理的角度来看负载平衡)称为代理网络。该网络由多个逻辑节点组成,您似乎正在设置这些节点。这些节点可以是主从类型,以覆盖机器故障等。

您可以查看 ActiveMQ 发行版中的示例配置。

【讨论】:

  • 有人可以发布文档链接以设置代理网络以分配负载吗?