当前位置: 首页 > 知识库问答 >
问题:

Mcollective-activemq负载平衡

杜炫明
2023-03-14

我们面临着 ActiveMQ - M 集合负载平衡的几个问题。有人可以帮忙吗?以下是我们的设置

MCO在故障转移池-Broker1中配置了两个ActiveMQ代理

经纪人1

问题1:MCO客户端在broker1和broker2之间的负载平衡和连接不相等。700 MCO连接到broker1,而只有100 MCO连接至broker2。我们是否缺少此负载平衡的任何属性?

问题 2: 当我们添加新的代理(例如,将 broker3)添加到 activemq 集群时,MCO 客户端不会重新平衡或连接到新代理。根据 activemq 文档,如果我们启用更新客户端群集并重新平衡客户端群集属性,它应该会自动通知 MCO 进行重新平衡。您能告诉我们任何属性吗?

连接主动.xml服务器.cfg客户机.cfg

activemq.xml

    <transportConnectors>
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?jms.prefetchPolicy.all=1000&amp;useQueueForAccept=false&amp;transport.closeAsync=false&amp;maximumConnections=2500&amp;wireFormat.maxFrameSize=104857600&amp;jms.watchTopicAdvisories=false" />

    <transportConnector name="stomp+ssl" uri="stomp+nio+ssl://0.0.0.0:61614?useQueueForAccept=false&amp;transport.closeAsync=false&amp;needClientAuth=true&amp;trace=true&amp;maximumConnections=2500&amp;wireFormat.maxFrameSize=104857600&amp;updateClusterClients=true&amp;rebalanceClusterClients=true&amp;updateClusterClientsOnRemove=true" />
    </transportConnectors>

服务器.cfg

    loglevel = info
    daemonize = 1

    # Plugins
    securityprovider = psk
    plugin.psk = unset

    connector = activemq
    plugin.activemq.heartbeat_interval = 60
    plugin.activemq.pool.size = 2
    plugin.activemq.pool.1.host = broker 1
    plugin.activemq.pool.1.port = port no.
    plugin.activemq.pool.1.user = user
    plugin.activemq.pool.1.password = password
    plugin.activemq.pool.1.ssl = 1
    plugin.activemq.pool.1.ssl.fallback = 0


    #classesfile = /var/lib/puppet/state/classes.txt

    # Registration:
    # We don't configure a listener, and only send these messages to keep the
    # Stomp connection alive. This will use the default "agentlist" registration
    # plugin.
    registerinterval = 600


    plugin.activemq.pool.2.host = broker 1
    plugin.activemq.pool.2.port = port no.
    plugin.activemq.pool.2.user = user
    plugin.activemq.pool.2.password = password
    plugin.activemq.pool.2.ssl = 1
    plugin.activemq.pool.1.ssl.fallback = 0

    securityprovider = ssl

     rpcauthorization = 1
    rpcauthprovider = action_policy
    plugin.actionpolicy.allow_unconfigured = 0
    plugin.actionpolicy.enable_default = 1
    plugin.actionpolicy.default_name = default
    \n




    plugin.activemq.initial_reconnect_delay = 0.01
    plugin.activemq.max_reconnect_delay = 30.0
    plugin.activemq.use_exponential_back_off = true
    plugin.activemq.back_off_multiplier = 2
    plugin.activemq.max_reconnect_attempts = 0
    plugin.activemq.randomize = true
    plugin.activemq.timeout = -1

client.cfg

    main_collective = mcollective
    libdir = /etc/mcollective
    logger_type = console
    loglevel = warn

    # Plugins
    securityprovider = psk
    plugin.psk = unset

    connector = activemq
    plugin.activemq.heartbeat_interval = 60
    plugin.activemq.pool.size = 2
    plugin.activemq.pool.1.host = borker 1
    plugin.activemq.pool.1.port = port no.
    plugin.activemq.pool.1.user = user
    plugin.activemq.pool.1.password = password
    plugin.activemq.pool.1.ssl = 1
    plugin.activemq.pool.1.ssl.fallback = 0

    plugin.activemq.pool.1.host = borker 2
    plugin.activemq.pool.1.port = port no.
    plugin.activemq.pool.1.user = user
    plugin.activemq.pool.1.password = password
    plugin.activemq.pool.2.ssl = 1
    plugin.activemq.pool.2.ssl.fallback = 0


    factsource = yaml

    securityprovider = ssl 

共有1个答案

孔砚
2023-03-14

问题 1.平衡将是接近的,但并不完美。据我所知,它只是迫使客户端在最初连接后使用随机化函数,或者被告知要重新平衡。

问题2:您将自动重新平衡设置为URI的一部分,而不是transportConnector的属性。

所以你需要这样的东西:

    <transportConnector name="stomp+ssl" uri="stomp+nio+ssl://0.0.0.0:61614?useQueueForAccept=false&amp;transport.closeAsync=false&amp;needClientAuth=true&amp;trace=true&amp;maximumConnections=2500&amp;wireFormat.maxFrameSize=104857600" 
        updateClusterClients="true"
        rebalanceClusterClients="true"
        updateClusterClientsOnRemove="true" />
</transportConnectors>

还要知道,这只适用于通过一个传输连接器连接的客户端,而不适用于另一个,因为您只指定了URI。连接到61616上tcp传输的任何客户端都不知道Stomp传输上的任何设置。

其他一切看起来都很好,尽管我还没有设置任何具有那么多属性的Stomp客户端,所以你可能想仔细检查它们是否都有效。

 类似资料:
  • 假设我在一个集群中有3个ActiveMQ Artemis代理: 经纪人_01 在给定的时间点,我有每个经纪人的消费者数量: 经纪人有50名消费者 让我们假设在这个给定的时间点,有70条消息要发送到集群中的一个队列。 我们期望集群完成负载平衡,以便Broker_01将接收50条消息,Broker_0210条消息,Broker_0310条消息,但目前我们正在经历70条消息通过所有3个代理随机分发。 是

  • 我有两条溪流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息丰富事件流。 事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。DB流不那么喋喋不休,并且使用两个字段进行分区。我目前正在使用两个公共字段连接这两个流,并使用flapMap来丰富第一个流。flatMap运算符使用ValueState维护状态,状态由两个公共字段自动键入。 除了实现自定义逻辑来手动提取键并更新维护状

  • 我是微服务的新手。(学习阶段)。我有一个问题。我们在云中部署微服务。(例如 AWS)。云已经提供了负载平衡和日志。我们还在Spring Boot中实现了负载平衡(功能区)和日志(Rabbit MQ和Zipkin)。这两种实现有什么区别?我们两者都需要吗?有些人可以回答这些问题吗? 提前感谢。

  • web-service预期会有很多调用,而我希望在出现故障时使该服务成为冗余,因此我希望有两个实例同时运行以处理所有请求。 1)让两个级别的Web服务同时处理请求的最佳方法是什么?使用外部负载均衡器还是使用AKKA/AKKA-HTTP中的某种魔法(我不知道)? 2)我必须调整哪些主要参数来提高性能?

  • 我用JMeter创建了测试来测试幽灵博客平台的性能。Ghost是用Node.js编写的,安装在云服务器上,有1GB的内存和1个CPU。 我注意到在400个并发用户之后JMeter得到错误。到400个并发用户的负载是正常的。我决定增加CPU,增加了1个CPU。 但是错误重现并添加了2个CPU,总共4个CPU。问题发生在400个并发用户之后。 我想知道是否有可能平衡CPU之间的负载?

  • 刚刚浏览了这些文档: < Li > http://ActiveMQ . Apache . org/failover-transport-reference . html 那么,是否有可能配置消费者和生产者应用程序来连接和平衡多个代理实例之间的负载(以循环或类似的方式)?