【问题标题】:Active MQ - Network of BrokersActive MQ - 代理网络
【发布时间】:2011-10-25 18:33:02
【问题描述】:

我已经配置了具有如下拓扑的代理网络。

  • Producer(P1) 连接到 Broker(B1) 和 Producer(P2) 连接到 Broker(B2)
  • Broker(B1) 和 Broker(B2) 连接为 Brokers 网络并进行负载均衡
  • Consumer(C1) 连接到 Broker(B1),Consumer(C2) 连接到 Broker(B2)

客户端配置为使用故障转移:

  • Consumer-1 = 故障转移:tcp://localhost:61616,tcp://localhost:61615?randomize=false
  • Consumer-2 = 故障转移:tcp://localhost:61615,tcp://localhost:61616?randomize=false

一旦 Channel-2 出现故障,P2 和 C2 切换到 Channel-1,这是故障转移的理想行为。

我想了解 Chaneel-2 回来时的行为? 我注意到只有 Channel-1 继续为所有人服务 即使在 Channel-2 已恢复并因此失去 Channel 之间的负载平衡之后,连接仍然存在。

我想知道是否有可能一旦 Channel-2 恢复,负载平衡将在 Channels 和各自的 Producer-2 之间自动启动,Consumer-2 转移到 Channel-2 从而实现完全负载平衡和完全故障转移?

我看到一篇文章“将容错与负载平衡相结合” http://fusesource.com/docs/broker/5.4/clustering/index.html 是否建议将容错和负载平衡结合使用?

问候,

-琥珀色

【问题讨论】:

    标签: activemq


    【解决方案1】:

    在您的两个代理上,您需要设置您的 transportConnector 以启用 updateClusterClients 和 rebalanceClusterClients。

     <transportConnectors>
       <transportConnector name="tcp-connector" uri="tcp://192.168.0.23:61616" updateClusterClients="true" rebalanceClusterClients="true" /> 
     </<transportConnectors>
    

    具体来说,您应该需要 rebalanceClusterClients。从http://activemq.apache.org/failover-transport-reference.html 的文档中可以看出:

    如果为真,将要求连接的客户端在集群中重新平衡 新经纪人加入经纪人网络时的经纪人数

    您必须使用 ActiveMQ 5.4 或更高版本才能使用这些选项。

    【讨论】:

    • 您好,感谢您的发帖,我确实设法配置了上面提到的代理。我配置为 (A)P1 连接到 B1,C1 连接到 B1 (B)C2 连接到 B2。 (C)B1-B2 作为 Broker 的网络。
    • 您好,感谢您的发帖,我确实设法配置了上面提到的代理。我配置了 (1)P1 连接到 B1 和 C1 连接到 B1 (2)C2 连接到 B2。 (3)B1-B2作为Broker的网络。在 B2 启动时,我可以看到 B1/B2 之间开始平衡。一旦 B2 出现故障,所有连接都会转移到 B1。我想了解如果 B2 回来并且 C2 将使用来自 B2 的消息,平衡是否仍然有效。我如何证明 B2 回来时是否正在发生平衡。如文章中所述,是否有记录代理 URI 的方法? activemq.apache.org/mdc-logging.html
    • 您可以从 JMX 监控或查看您的代理的咨询消息。
    【解决方案2】:

    作为对您后续问题的回答: “有没有一种方法可以记录文章中讨论的代理 URI?”

    为了显示哪个客户端连接到哪个代理, 修改客户端的Log4j配置如下:

    <log4j:configuration debug="true"
                         xmlns:log4j="http://jakarta.apache.org/log4j/">
    
        ...
    
        <logger name="org.apache.activemq.transport.failover.FailoverTransport">
            <level value="debug"/>
        </logger>
    
        ...
    
    </log4j:configuration>
    

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 2014-10-23
      • 2012-01-04
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多