Artemis Cluster Setup

Configure and Run ze-artemis 2 Node Cluster

The Artemis .jar and Artemis dependecies are installed in the ‘{{ZEPHYR_HOME}}/artemis’ folder during the installation or upgrade of Zephyr.

Follow the steps below to set up and run the ze-artemis application in a clustered environment.

  1. By default, the artemis.properties file looks like below in the location {{ZEPHYR_HOME}}/artemis.

    #### Cluster configurations
    #artemis.cluster.enabled=true
    #artemis.cluster.nodes=node1,node2
    #artemis.primary.node=node1
    #artemis.node.node1.ip=localhost
    #artemis.node.node1.port=61616
    #artemis.node.node2.ip=localhost
    #artemis.node.node2.port=61617
    #artemis.node.node3.ip=localhost
    #artemis.node.node3.port=61618
    #### Cluster configurations end
    #
    #server properties
    spring.application.name=ze-artemis
    spring.artemis.mode=embedded
    server.port=6092
    #
    #Management endpoints
    spring.jmx.enabled=true
    management.endpoint.jmx.enabled=true
    management.endpoints.jmx.exposure.include=*
    management.endpoints.web.exposure.include=hawtio,jolokia
    hawtio.authenticationEnabled=false
    #hawtio.username=admin
    #hawtio.password=admin
    #
    # Artemis broker configurations
    artemis.queue.name=ze-artemis-queue
    artemis.tcp.ip=localhost
    artemis.tcp.port=61616
    artemis.node.name=ze-artemis
    consumer.enabled=false
    #
    ##shared folder for all nodes, this is where the journal, bindings, paging and large-messages directories are stored
    artemis.journal.directory=artemis/target/data/shared/journal
    artemis.bindings.directory=artemis/target/data/shared/bindings
    artemis.paging.directory=artemis/target/data/shared/paging
    artemis.large-messages.directory=artemis/target/data/shared/large-messages
  2. Enable the properties under the Cluster Configurations accordingly as per the required cluster nodes.

  3. Configure the IPs of Node 1 and Node 2 in artemis.node.node1.ip and artemis.node.node2.ip, respectively.

  4. Configure the Artemis broker configurations as per the cluster nodes.

  5. Create a shared folder and add the folder path in the shared folder configuration. #artemis.properties of Node 1 should look like this now:

    #### Cluster configurations
    artemis.cluster.enabled=true
    artemis.cluster.nodes=node1,node2
    artemis.primary.node=node1
    artemis.node.node1.ip=192.168.0.1
    artemis.node.node1.port=61616
    artemis.node.node2.ip=192.168.0.2
    artemis.node.node2.port=61617
    #### Cluster configurations end
    #
    #server properties
    spring.application.name=ze-artemis-node1
    spring.artemis.mode=embedded
    server.port=6092
    #
    #Management endpoints
    spring.jmx.enabled=true
    management.endpoint.jmx.enabled=true
    management.endpoints.jmx.exposure.include=*
    management.endpoints.web.exposure.include=hawtio,jolokia
    hawtio.authenticationEnabled=false
    #hawtio.username=admin
    #hawtio.password=admin
    #
    # Artemis broker configurations
    artemis.queue.name=ze-artemis-queue
    artemis.tcp.ip=192.168.0.1
    artemis.tcp.port=61616
    artemis.node.name=node1
    consumer.enabled=false
    #
    ##shared folder for all nodes, this is where the journal, bindings, paging and large-messages directories are stored
    artemis.journal.directory=/home/ubuntu/artemis-data/target/data/shared/journal
    artemis.bindings.directory=/home/ubuntu/artemis-data/target/data/shared/bindings
    artemis.paging.directory=/home/ubuntu/artemis-data/target/data/shared/paging
    artemis.large-messages.directory=/home/ubuntu/artemis-data/target/data/shared/large-messages

    Note

    • artemis-data is the shared folder created under location /home/ubuntu/.

    • target/data/shared/journal, target/data/shared/bindings, target/data/shared/paging, and target/data/shared/large-messages will be created automatically once artemis is started

  6. #artemis.properties of Node 2 should look like this now:

    #### Cluster configurations
    artemis.cluster.enabled=true
    artemis.cluster.nodes=node1,node2
    artemis.primary.node=node1
    artemis.node.node1.ip=192.168.0.1
    artemis.node.node1.port=61616
    artemis.node.node2.ip=192.168.0.2
    artemis.node.node2.port=61617
    #### Cluster configurations end
    #
    #server properties
    spring.application.name=ze-artemis-node2
    spring.artemis.mode=embedded
    server.port=6092
    #
    #Management endpoints
    spring.jmx.enabled=true
    management.endpoint.jmx.enabled=true
    management.endpoints.jmx.exposure.include=*
    management.endpoints.web.exposure.include=hawtio,jolokia
    hawtio.authenticationEnabled=false
    #hawtio.username=admin
    #hawtio.password=admin
    #
    # Artemis broker configurations
    artemis.queue.name=ze-artemis-queue
    artemis.tcp.ip=192.168.0.2
    artemis.tcp.port=61617
    artemis.node.name=node2
    consumer.enabled=false
    #
    ##shared folder for all nodes, this is where the journal, bindings, paging and large-messages directories are stored
    artemis.journal.directory=/home/ubuntu/artemis-data/target/data/shared/journal
    artemis.bindings.directory=/home/ubuntu/artemis-data/target/data/shared/bindings
    artemis.paging.directory=/home/ubuntu/artemis-data/target/data/shared/paging
    artemis.large-messages.directory=/home/ubuntu/artemis-data/target/data/shared/large-messages

    Note

    For a 3-Node cluster, follow the same steps as for Node 2. Create one more property file and add the details of Node 3.

Create Shared Directory Using NFS

Note

Do Step 2 (1 to 4) in both nodes - Node 1 and Node 2.

Caution

  • The property artemis.primary.node is mandatory for clustering. Define the node name for the default primary node.

  • The shared folder should be accessible for all the cluster nodes:

    #shared folder for all nodes, this is where the journal, bindings, paging and large-messages directories are stored
    artemis.journal.directory=target/data/shared/journal
    artemis.bindings.directory=target/data/shared/bindings
    artemis.paging.directory=target/data/shared/paging
    artemis.large-messages.directory=target/data/shared/large-messages
Publication date: