RabbitMQ¶
RabbitMQ is the message broker for HPE Morpheus Software, handling agent communication (STOMP protocol), task orchestration, event processing, and inter-service communication (AMQP protocol). This page covers preparing an external RabbitMQ service for use with HPE Morpheus Software.
Note
For HVM deployments and all-in-one installations, RabbitMQ is embedded and requires no configuration. This page is only relevant when running RabbitMQ externally for HA or organizational requirements.
Supported Versions¶
RabbitMQ |rmqbranch| (embedded default: v3.13.7)
Erlang |erlang| (must be compatible with your RabbitMQ version)
Password changes for appliance-managed RabbitMQ¶
Changing rabbitmq['queue_user_password'] or the corresponding value in morpheus-secrets.json and running morpheus-ctl reconfigure does not rotate the password of an existing RabbitMQ user. The appliance recipe creates a missing user, but it does not change the password when that user already exists. Updating only the broker or only the application configuration creates a credential mismatch and can interrupt application and agent messaging.
There is currently no supported self-service password-rotation procedure for the appliance-managed RabbitMQ queue_user. Do not use a sequence that combines rabbitmqctl change_password, direct edits to morpheus-secrets.json, and reconfigure unless HPE Support supplies a procedure for the exact topology and release. Contact HPE Support to coordinate the broker and application credential change, validation, recovery plan, and the ordering of every application node.
For external RabbitMQ, rotate credentials using the external service owner’s process and coordinate the matching HPE Morpheus Software connection change with HPE Support. Never place a real password in documentation, command transcripts, or support artifacts.
When to Externalize¶
Consider running RabbitMQ externally when:
You need high availability with clustered queues and automatic failover
Your organization requires messaging infrastructure to be managed by a dedicated team
You are running a multi-node |morpheus| application tier (Full HA) and need a shared message bus
You need to scale messaging independently from the application tier
Cluster Architecture¶
RabbitMQ uses a quorum-based election system for failover, which requires an odd number of nodes (minimum 3) for HA configurations.
Recommended topology:
3 nodes minimum per region for HA
All nodes are peers (no designated master)
Place a load balancer between the HPE Morpheus Software application nodes and the RabbitMQ cluster to handle connection routing and failover
Forward both AMQP (5672) and STOMP (61613) ports through the load balancer
Cross-region considerations:
For multi-region HA, deploy at least 3 RabbitMQ nodes per region
Cross-region clustering is possible but adds latency — evaluate whether federation or shovel plugins are more appropriate for your use case
Agent STOMP connections are persistent; ensure connection timeouts and keepalives are configured appropriately for cross-region links
Preparing the External RabbitMQ Cluster¶
Step 1 — Install RabbitMQ
Install RabbitMQ on each cluster node following the official RabbitMQ installation guide. Ensure all nodes run the same RabbitMQ and Erlang versions.
Step 2 — Form the cluster
On nodes 2 and 3, join them to node 1:
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
Verify cluster status:
rabbitmqctl cluster_status
Step 3 — Enable required plugins
HPE Morpheus Software requires the STOMP plugin for agent communication:
rabbitmq-plugins enable rabbitmq_stomp
Enable on all cluster nodes.
Step 4 — Create the Morpheus vhost and user
rabbitmqctl add_vhost morpheus
rabbitmqctl add_user morpheus '<secure-password>'
rabbitmqctl set_permissions -p morpheus morpheus ".*" ".*" ".*"
rabbitmqctl set_user_tags morpheus administrator
Step 5 — Configure HA policy
For queue mirroring across cluster nodes:
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}' -p morpheus --apply-to queues
This ensures all queues are mirrored across all nodes for failover.
Network Requirements¶
Description |
Source |
Destination |
Port |
Protocol |
|---|---|---|---|---|
AMQP (application messaging) |
HPE Morpheus Software appliance |
RabbitMQ node(s) |
5672 |
TCP |
STOMP (agent communication) |
HPE Morpheus Software appliance / Agents |
RabbitMQ node(s) |
61613 |
TCP |
Erlang distribution (inter-node) |
RabbitMQ node |
RabbitMQ node |
25672 |
TCP |
Erlang Port Mapper (epmd) |
RabbitMQ node |
RabbitMQ node |
4369 |
TCP |
Management UI (optional) |
Admin workstation |
RabbitMQ node |
15672 |
TCP |
Load Balancer Configuration¶
When placing a load balancer in front of the RabbitMQ cluster:
Forward port 5672 (AMQP) with TCP mode (not HTTP)
Forward port 61613 (STOMP) with TCP mode
Use round-robin or least-connections balancing
Configure health checks against the RabbitMQ management API (port 15672, path
/api/health/checks/alarms) or a simple TCP check on port 5672Ensure the load balancer supports long-lived connections — STOMP agent connections are persistent
TLS Configuration¶
To secure RabbitMQ communications with TLS:
Configure RabbitMQ with TLS certificates (see RabbitMQ TLS documentation)
Use TLS-enabled ports (typically 5671 for AMQPS, 61614 for STOMP over TLS)
Update the HPE Morpheus Software
morpheus.rbconfiguration to point at the TLS ports and enable SSL for the connection
Memory and Resource Sizing¶
RabbitMQ resource requirements depend on message throughput:
Small environments (< 100 agents): 2 GB RAM per node
Medium environments (100–1000 agents): 4 GB RAM per node
Large environments (1000+ agents): 8 GB RAM per node, consider dedicated I/O-optimized storage for message persistence
Monitor queue depths and memory usage via the RabbitMQ Management UI (port 15672, enable with rabbitmq-plugins enable rabbitmq_management).
Troubleshooting¶
Cluster partition (split-brain)
If network issues cause a cluster partition, RabbitMQ nodes may disagree on cluster state. Resolution:
# On the minority-side node(s):
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@<majority-node>
rabbitmqctl start_app
Agent connection failures
If agents cannot connect to HPE Morpheus Software after externalizing RabbitMQ:
Verify port 61613 (STOMP) is open from agent hosts to the RabbitMQ cluster/load balancer
Check the appliance URL is correctly configured in Administration > Settings — agents use this to determine the STOMP connection endpoint
Verify the
morpheususer has permissions on themorpheusvhost
High memory watermark
If RabbitMQ triggers its high memory watermark and blocks publishers:
Increase the memory limit:
rabbitmqctl set_vm_memory_high_watermark 0.6Add more RAM to the nodes
Investigate consumers that may be offline or slow (check queue depths in the Management UI)