Search code examples
activemq-artemis

Integration ActiveMQ Artemis with ZooKeeper does not work on colocation?


I'm trying to configure ActiveMQ Artemis HA with ZooKeeper lock manager using 2 machines. ZooKeeper runs on 3 machines. Here is the parts of broker.xml file:

<connectors>
    <connector name="invm-connector">vm://0</connector>
    <connector name="mq1">tcp://host-1:61616</connector>
    <connector name="mq2">tcp://host-2:61616</connector>
</connectors>

<acceptors>
    <acceptor name="mq1">tcp://host-1:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,OPENWIRE;supportAdvisory=false;useEpoll=true</acceptor>
    <acceptor name="invm-acceptor">vm://0</acceptor>
</acceptors>

<cluster-connections>
    <cluster-connection name="mycluster">
        <connector-ref>mq1</connector-ref>
        <message-load-balancing>ON_DEMAND</message-load-balancing>
        <max-hops>1</max-hops>
        <static-connectors>
            <connector-ref>mq2</connector-ref>
        </static-connectors>
   </cluster-connection>
</cluster-connections>

<ha-policy>
    <replication>
        <colocated>
            <max-backups>1</max-backups>
            <request-backup>true</request-backup>
            <backup-request-retries>-1</backup-request-retries>
            <backup-request-retry-interval>5000</backup-request-retry-interval>
            <excludes>
              <connector-ref>mq1</connector-ref>
              <connector-ref>mq2</connector-ref>
            </excludes>
            <primary>
              <manager>
                <properties>
                  <property key="connect-string" value="zoo-1:2181,zoo-2:2181,zoo-3:2181"/>
                </properties>
              </manager>
            </primary>
            <backup>
              <manager>
                <properties>
                  <property key="connect-string" value="zoo-1:2181,zoo-2:2181,zoo-3:2181"/>
                </properties>
              </manager>
            </backup>
        </colocated>
    </replication>
</ha-policy>

The second broker.xml is the same (acceptors and cluster-connections just symmetric).

It's doubtful that in the broker's logs I don't see anything about connection to ZooKeeper or something related to it. There aren't even debug entries.

What could be a problem and why the broker does not connect to the ZooKeeper?

Here are the logs about one of the running broker:

2024-05-17 14:11:49,902 WARN  [org.apache.activemq.artemis.core.server] AMQ224110: Configuration 'whitelist' is deprecated, please use the 'allowlist' configuration
     _        _               _
    / \  ____| |_  ___ __  __(_) _____
   / _ \|  _ \ __|/ _ \  \/  | |/  __/
  / ___ \ | \/ |_/  __/ |\/| | |\___ \
 /_/   \_\|   \__\____|_|  |_|_|/___ /
 Apache ActiveMQ Artemis 2.33.0


2024-05-17 14:11:50,952 INFO  [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server version 2.33.0
2024-05-17 14:11:51,004 INFO  [org.apache.activemq.artemis.core.server] AMQ221000: Primary message broker is starting with configuration Broker Configuration (clustered=true,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)
2024-05-17 14:11:51,070 INFO  [org.apache.activemq.artemis.core.server] AMQ221012: Using AIO Journal
2024-05-17 14:11:51,296 INFO  [org.apache.activemq.artemis.core.server] AMQ221057: Global Max Size is being adjusted to 1/2 of the JVM max size (-Xmx). being defined as 1073741824
2024-05-17 14:11:51,378 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE
2024-05-17 14:11:51,379 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-amqp-protocol]. Adding protocol support for: AMQP
2024-05-17 14:11:51,380 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-hornetq-protocol]. Adding protocol support for: HORNETQ
2024-05-17 14:11:51,380 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-mqtt-protocol]. Adding protocol support for: MQTT
2024-05-17 14:11:51,381 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-openwire-protocol]. Adding protocol support for: OPENWIRE
2024-05-17 14:11:51,381 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-stomp-protocol]. Adding protocol support for: STOMP
2024-05-17 14:11:52,752 INFO  [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address DLQ supporting [ANYCAST]
2024-05-17 14:11:52,754 INFO  [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue DLQ on address DLQ
2024-05-17 14:11:52,759 INFO  [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address ExpiryQueue supporting [ANYCAST]
2024-05-17 14:11:52,759 INFO  [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue ExpiryQueue on address ExpiryQueue
2024-05-17 14:11:52,760 INFO  [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address TEST supporting [ANYCAST]
2024-05-17 14:11:52,760 INFO  [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue TEST on address TEST
2024-05-17 14:11:53,225 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:11:53,225 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:11:53,284 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 10.103.41.254:61616 for protocols [CORE,OPENWIRE]
2024-05-17 14:11:53,284 INFO  [org.apache.activemq.artemis.core.server] AMQ221007: Server is now active
2024-05-17 14:11:53,284 INFO  [org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis Message Broker version 2.33.0 [mq1, nodeID=833a7f68-f0e8-11eb-beec-fa163e1c565e] 
2024-05-17 14:11:53,293 INFO  [org.apache.activemq.artemis] AMQ241003: Starting embedded web server
2024-05-17 14:11:53,953 INFO  [org.apache.activemq.hawtio.branding.PluginContextListener] Initialized activemq-branding plugin
2024-05-17 14:11:54,049 INFO  [org.apache.activemq.hawtio.plugin.PluginContextListener] Initialized artemis-plugin plugin
2024-05-17 14:11:54,598 INFO  [io.hawt.HawtioContextListener] Initialising hawtio services
2024-05-17 14:11:54,626 INFO  [io.hawt.system.ConfigManager] Configuration will be discovered via system properties
2024-05-17 14:11:54,627 INFO  [io.hawt.jmx.JmxTreeWatcher] Welcome to Hawtio 2.17.7
2024-05-17 14:11:54,645 INFO  [io.hawt.web.auth.AuthenticationConfiguration] Starting hawtio authentication filter, JAAS realm: "activemq" authorized role(s): "amq" role principal classes: "org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal"
2024-05-17 14:11:54,679 INFO  [io.hawt.web.auth.LoginRedirectFilter] Hawtio loginRedirectFilter is using 1800 sec. HttpSession timeout
2024-05-17 14:11:54,709 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://0.0.0.0:8161
2024-05-17 14:11:54,711 INFO  [org.apache.activemq.artemis] AMQ241002: Artemis Jolokia REST API available at http://0.0.0.0:8161/console/jolokia
2024-05-17 14:11:54,711 INFO  [org.apache.activemq.artemis] AMQ241004: Artemis Console available at http://0.0.0.0:8161/console
2024-05-17 14:11:58,226 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:11:58,227 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:03,228 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:03,228 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:08,229 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:08,229 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:13,229 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:13,230 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:18,230 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:18,231 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:23,232 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:23,232 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:28,233 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:28,233 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:33,233 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:33,234 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:38,234 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:38,235 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:43,235 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:43,235 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:48,236 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:48,236 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:53,236 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:53,237 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:12:58,237 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:12:58,237 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:13:03,238 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:13:03,238 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:13:08,239 INFO  [org.apache.activemq.artemis.core.server] AMQ221066: Initiating quorum vote: RequestBackupQuorumVote
2024-05-17 14:13:08,239 INFO  [org.apache.activemq.artemis.core.server] AMQ221084: Requested 0 quorum votes
2024-05-17 14:13:08,992 INFO  [org.apache.activemq.artemis.core.server] AMQ221062: Received quorum vote request: RequestBackupVote [backupsSize=-1, nodeID=null, backupAvailable=false]
2024-05-17 14:13:08,992 INFO  [org.apache.activemq.artemis.core.server] AMQ221063: Sending quorum vote response: RequestBackupVote [backupsSize=0, nodeID=833a7f68-f0e8-11eb-beec-fa163e1c565e, backupAvailable=true]
2024-05-17 14:13:09,272 INFO  [org.apache.activemq.artemis.core.server] AMQ221000: Backup message broker is starting with configuration Broker Configuration (clustered=true,journalDirectory=data/journalcolocated_backup_01,bindingsDirectory=data/bindingscolocated_backup_01,largeMessagesDirectory=data/large-messagescolocated_backup_01,pagingDirectory=data/pagingcolocated_backup_01)
2024-05-17 14:13:09,282 INFO  [org.apache.activemq.artemis.core.server] AMQ221049: Activating Replica for node: fee8a057-f0e4-11eb-8d04-fa163e943492
2024-05-17 14:13:09,286 INFO  [org.apache.activemq.artemis.core.server] AMQ221055: There were too many old replicated folders upon startup, removing /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/bindingscolocated_backup_01/oldreplica.7
2024-05-17 14:13:09,288 INFO  [org.apache.activemq.artemis.core.server] AMQ222162: Moving data directory /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/bindingscolocated_backup_01 to /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/bindingscolocated_backup_01/oldreplica.9
2024-05-17 14:13:09,288 INFO  [org.apache.activemq.artemis.core.server] AMQ221055: There were too many old replicated folders upon startup, removing /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/journalcolocated_backup_01/oldreplica.25
2024-05-17 14:13:09,289 INFO  [org.apache.activemq.artemis.core.server] AMQ222162: Moving data directory /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/journalcolocated_backup_01 to /opt/activemq/apache-artemis-2.17.0/bin/mybroker/data/journalcolocated_backup_01/oldreplica.27
2024-05-17 14:13:09,290 INFO  [org.apache.activemq.artemis.core.server] AMQ221012: Using AIO Journal
2024-05-17 14:13:09,304 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE
2024-05-17 14:13:09,306 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-amqp-protocol]. Adding protocol support for: AMQP
2024-05-17 14:13:09,307 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-hornetq-protocol]. Adding protocol support for: HORNETQ
2024-05-17 14:13:09,308 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-mqtt-protocol]. Adding protocol support for: MQTT
2024-05-17 14:13:09,312 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-openwire-protocol]. Adding protocol support for: OPENWIRE
2024-05-17 14:13:09,314 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-stomp-protocol]. Adding protocol support for: STOMP
2024-05-17 14:13:09,329 INFO  [org.apache.activemq.artemis.core.server] AMQ221109: Apache ActiveMQ Artemis Backup Server version 2.33.0 [null] started; waiting for primary to fail before activating

Also, I would be very thankful if you'll give any advice about ways to debug voting process with ZooKeeper to understand it clearly.

I did try to start up an ActiveMQ Artemis server and expected to see any logs about connecting to ZooKeeper and didn't see anything about it.


Solution

  • As it was recommended by Justin I've reconfigured cluster for primary:

      <ha-policy>
        <replication>
          <primary>
            <group-name>group1</group-name>
            <manager>
              <properties>
                <property key="connect-string" value="zoo1:2181,zoo2:2181,zoo3:2181"/>
              </properties>
            </manager>
          </primary>
        </replication>
      </ha-policy>
    

    and for backup:

      <ha-policy>
        <replication>
          <backup>
            <group-name>group1</group-name>
            <manager>
              <properties>
                <property key="connect-string" value="zoo1:2181,zoo2:2181,zoo3:2181"/>
              </properties>
            </manager>
            <allow-failback>true</allow-failback>
          </backup>
        </replication>
      </ha-policy>
    

    And it works fine now. Thank you!