Itential Automation Platform

On this page:

RabbitMQ Configuration

Itential Automation Platform (IAP) uses RabbitMQ, an open-source message broker, to handle all communication between its component processes. This mechanism is known as inter-process communication and is vital to the functionality of IAP. This guide provides a reference for configuring RabbitMQ to be used with IAP.

Prerequisites

Before proceeding, make sure compatabile versions of the following prerequisites are installed.

If using the Event Deduplication feature, compatabile versions of the following should also be installed.

⚠ The latest compatibility versions for all prerequisites are documented in Release Notes of the Itential documentation site.

Use the following list of commands to check the current versions of the prerequisite packages.

Dependency Command Description
RabbitMQ rabbitmq-diagnostics server_version Returns the current version of the RabbitMQ installation.
Erlang rabbitmq-diagnostics erlang_version Returns the current version of the Erlang installation.
RabbitMQ Message Deduplication rabbitmq-plugins list rabbitmq_message_deduplication Returns the current version of the Deduplication plugin.
Elixir elixir --version Returns the current version of the Elixir installation.

⚠ Refer to the RabbitMQ section of the IAP Installation guide for more information.

Configuring RabbitMQ Properties

RabbitMQ properties are configured in the Profiles section of the IAP Admin Essentials interface.

To access the RabbitMQ properties page from Admin Essentials:

  1. Click Profiles in the left-hand side navigation menu.
  2. The Profiles accordion menu expands, listing all IAP profiles. Click the profile to be edited.
  3. Click the Configure tab at the top of the profile view.
  4. Under the Edit Profile Properties section of the configure view, click RabbitMQ.

Figure 1: Admin Essentials UI

Admin Essentials UI

The RabbitMQ properties page lists editable variables for both the Event Deduplication feature and RabbitMQ. Descriptions for Event Deduplication variables can be found in the Profile Configuration section of the Event Deduplication guide. Descriptions for RabbitMQ variables can be found in the following section.

RabbitMQ Variable References

The following table provides brief descriptions and example values for all RabbitMQ variables that can be edited in IAP.

Variable Description Example Values
Protocol The protocol used by RabbitMQ. Valid values are AMQP or AMQPS. AMQP
Hosts The hostname or IPv4 address of the RabbitMQ server. This variable accepts a single value or an array. rabbitmq.example.com
10.0.0.1
port The port used to connect to the RabbitMQ server. The default ports for AMQP and AMQPS are 5672 and 5671, respectively. 5672
5671
adminPort The port used to connect to the RabbitMQ server management plugin. The default port is 15672. 15672
Username The username used to connect to the RabbitMQ server. pronghorn
Password The password for the account specified by the Username variable. Th1Sis@n3xamplePAss!
Locale The locale used by RabbitMQ. The default value is en_US. en_US
FrameMax The maximum frame size (in bytes) allowed over the connection. A value of 0 means no limit. 0
Heartbeat The heartbeat period in seconds. A value of 0 means the server value is used. 0
45
Vhost The virtual host used by the RabbitMQ server. Special characters in the name of a virtual host must be escaped via HTML URL encoding. %2Ffoo

RabbitMQ High Availability Considerations

When deploying Itential Automation Platform (IAP) in a High Availability topology, several additional steps must be taken to ensure the proper operation of RabbitMQ.

RabbitMQ Clustering and Message Queue Mirroring

To achieve high availability, you must configure RabbitMQ to use clustering and message queue mirroring. A RabbitMQ cluster is a logical grouping of RabbitMQ instances, or nodes. All of the nodes in a RabbitMQ cluster share operational data with each other; however, message queues are not replicated by default.

To replicate message queues between the nodes in a cluster, message queue mirroring must be configured. When using message queue mirroring, all changes to a queue are first applied to a leader replica. The leader replica is only present on one node, which is known as the leader node for the relevant queue. After changes are applied to the leader replica, the changes propagate to the mirrors of the queue. Mirrors are copies of a queue that exist on nodes that are not the leader node for the queue.

Itential recommends that at least three (3) nodes are present in a cluster used by IAP. Furthermore, RabbitMQ recommends that an odd number of nodes are present in a cluster.

⚠ Refer to the RabbitMQ documentation site for more information on configuring clustering and message queue mirroring.

RabbitMQ Hosts Variable Behavior

When configuring IAP to connect to a RabbitMQ cluster, it is important that the Hosts variable described in the RabbitMQ variable reference above is configured as an array. You should enter the hostname or IPv4 address of each RabbitMQ node in the cluster to the array. When configured in this manner, IAP will failover to another node in the RabbitMQ cluster in the event of a node outage.

To add multiple values to the Hosts variable from the IAP profile configuration view:

  1. Enter the hostname or IPv4 address of the primary RabbitMQ node in the first field.
  2. Click the + Row button. This creates a new field for text input.
  3. Enter the hostname or IPv4 address of a secondary RabbitMQ node in the newly created field.
  4. Click the Save button to confirm changes.

Figure 2: Adding Multiple Values to Hosts

Hosts Configuration

Further Reading

For further information regarding the topics discussed in this document, refer to the following list.