- 19 Nov 2024
-
DarkLight
-
PDF
RabbitMQ Configuration (Early IAP Versions)
- Updated on 19 Nov 2024
-
DarkLight
-
PDF
Earlier release versions of IAP use RabbitMQ, an open-source message broker, to handle all inter-communication between its component processes. This article provides a reference for configuring RabbitMQ with:
- IAP/2023.1
- IAP/2022.1
Prerequisites
Before proceeding, make sure compatible versions of the following prerequisites are installed:
- RabbitMQ
- Erlang
If using the Event Deduplication feature, compatabile versions of the following should also be installed:
- RabbitMQ Message Deduplication
- Elixir
The latest compatibility versions for all prerequisites are documented in the product dependencies.
Package Commands
Use the following list of commands to check the current versions of the prerequisite packages.
Package | 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. |
More information is available in the RabbitMQ section of the install guide.
Configuring RabbitMQ Properties
RabbitMQ properties are configured in the Profiles of the Admin Essentials application:
- Click Profiles in the left-hand side navigation menu. The Profiles accordion menu expands, listing all IAP profiles.
- Select the profile to be edited.
- Click the Configure tab at the top of the profile view.
- Under the Edit Profile Properties section of the configuration view, select
rabbitmq
to edit its properties.
RabbitMQ Profile Properties (IAP/23.1 and IAP/22.1)
RabbitMQ Variable References
Referenced below are 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 official RabbitMQ 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:
- Enter the
hostname
or IPv4 address of the primary RabbitMQ node in the first field. - Click + Row. This creates a new field for text input.
- Enter the
hostname
or IPv4 address of a secondary RabbitMQ node in the newly created field. - Click Save to confirm all changes.
Adding Multiple Values to Hosts (IAP/23.1 and IAP/22.1)