Configure a self-managed external RabbitMQ¶
This page describes how to point DataRobot at a self-managed (non-cloud-managed) external RabbitMQ, and also documents the supported settings. Use this guide when you run your own RabbitMQ (VM, bare metal, or a broker you administer) rather than a cloud-managed broker such as Amazon MQ.
To use an external RabbitMQ, disable the bundled broker and provide the connection settings under global.rabbitmq in your values override.
Prerequisites¶
- A reachable RabbitMQ broker (version 3.13 recommended; quorum-queue defaults require 3.12+; Any version between 3.11+ to 4.0).
- RabbitMQ user credentials (username/password).
- If TLS is used, the trusted root CA certificate(s) mounted into the DataRobot pods.
- If the connecting user is not an administrator, the required virtual hosts must be created in advance (see Virtual hosts and queue types).
Connection configuration¶
Set the following under global.rabbitmq in your values override. Only internal, hostname, and auth are required; you can use the default values for all other parameters.
| Key | Default | Description |
|---|---|---|
internal |
true |
Set to false to disable the bundled RabbitMQ and use an external broker. |
hostname |
pcs-rabbitmq |
External RabbitMQ hostname or DNS name. |
port |
5672 |
AMQP port. Use 5671 when TLS is enabled. |
amqp_protocol |
amqp |
AMQP protocol scheme. Use amqps when TLS is enabled. |
http_port |
15672 |
RabbitMQ HTTP management/API port. Use 15671 when TLS is enabled. |
http_protocol |
http |
HTTP management protocol scheme. Use https when TLS is enabled. |
tls |
false |
Set to true to connect over TLS (see TLS and certificates). |
ca_cert_path |
"" |
Path to a trusted root CA file (mounted into the pods) used to verify the broker's certificate. |
auth.username |
pcs-rabbitmq |
RabbitMQ username DataRobot connects as. |
auth.password |
— | Password for auth.username. |
auth.erlangCookie |
— | Erlang cookie. Only relevant for the bundled/clustered broker; not required for a typical external connection. |
Protocols and ports¶
DataRobot connects to RabbitMQ over two channels:
- AMQP: The message protocol (
amqp_protocol+port).amqpon5672(plaintext) oramqpson5671(TLS). - HTTP management API: Used for management/health operations (
http_protocol+http_port).httpon15672(plaintext) orhttpson15671(TLS).
Set each protocol scheme and its port to match your broker's TLS configuration — for example, only use amqps with 5671 if the broker's AMQP listener is TLS-enabled. Ensure both the AMQP and management ports are reachable (firewall/security group) from the DataRobot pods.
TLS and certificates¶
To connect over TLS:
- Set
tls: true. - Set the protocol schemes to the TLS variants:
amqp_protocol: amqpsandhttp_protocol: https. - Set the TLS ports:
port: 5671andhttp_port: 15671. - Provide the trusted root CA that signed the broker's certificate and reference it with
ca_cert_path. The file must be mounted into the DataRobot pods (e.g., via your custom CA bundle) andca_cert_pathmust point to the in-pod path so that DataRobot can verify the broker certificate.
global:
rabbitmq:
internal: false
hostname: "rabbitmq.internal.example.com"
tls: true
amqp_protocol: amqps
port: 5671
http_protocol: https
http_port: 15671
ca_cert_path: /etc/ssl/certs/rabbitmq-ca.crt
auth:
username: pcs-rabbitmq
password: YOUR_RABBITMQ_PASSWORD
Authentication¶
DataRobot authenticates with auth.username / auth.password. The username defaults to pcs-rabbitmq; you may instead create your own user and set it in global.rabbitmq.auth.username. The user must have full permissions on every virtual host DataRobot uses (see Virtual hosts and queue types).
If the user has administrator privileges, DataRobot can create the virtual hosts on demand at install time. If it does not, a RabbitMQ administrator must create all required virtual hosts and grant this user permissions in advance (see the following example).
Non-TLS example¶
global:
rabbitmq:
internal: false
hostname: "rabbitmq.internal.example.com"
port: 5672
amqp_protocol: amqp
http_port: 15672
http_protocol: http
auth:
username: pcs-rabbitmq
password: YOUR_RABBITMQ_PASSWORD
Virtual hosts and queue types¶
Limited (non-administrator) user
If the RabbitMQ user DataRobot connects as does not have administrator privileges, it cannot create virtual hosts at install time. A RabbitMQ administrator must create all of the virtual hosts below and grant this user full permissions before installing DataRobot, each with the correct default queue type.
DataRobot uses the following virtual hosts. All default to classic, except nbxv2 and buzok, which must default to quorum:
| Virtual host | Default queue type |
|---|---|
analytics |
classic |
auto_apps |
classic |
mmqueue |
classic |
notifications |
classic |
orm |
classic |
queue |
classic |
nbx |
classic |
nbxv2 |
quorum (Notebooks quorum-queue migration) |
csp-spark |
classic |
buzok |
quorum |
network_policies |
classic |
entitlement-service-civ2 |
classic |
covalent |
classic |
apigateway |
classic |
workload-api |
quorum |
Create every virtual host with its default queue type and grant the DataRobot user full permissions (configure, write, read = .*). Set USER to pcs-rabbitmq or to the username you configured in global.rabbitmq.auth.username:
USER=pcs-rabbitmq
CLASSIC_VHOSTS="analytics auto_apps mmqueue notifications orm queue nbx csp-spark network_policies entitlement-service-civ2 covalent apigateway"
QUORUM_VHOSTS="nbxv2 buzok workload-api"
for v in $CLASSIC_VHOSTS; do
rabbitmqctl add_vhost "$v"
rabbitmqctl set_permissions -p "$v" "$USER" ".*" ".*" ".*"
done
for v in $QUORUM_VHOSTS; do
rabbitmqctl add_vhost "$v" --default-queue-type quorum
rabbitmqctl set_permissions -p "$v" "$USER" ".*" ".*" ".*"
done
Note
If the --default-queue-type argument is not available in your RabbitMQ version, set the default queue type via the HTTP management API instead:
curl -u <admin-user>:<admin-password> -XPUT \
https://<host>:15671/api/vhosts/nbxv2 \
-H 'content-type: application/json' \
-d '{"default_queue_type":"quorum"}'
Notes on default queue type behavior:
- The default queue type applies only to newly declared queues that do not specify an explicit
x-queue-typeand are not overridden by a policy. Existing queues are not converted. - Quorum queues must be durable, non-exclusive, and non-auto-delete; declarations that request transient/exclusive/auto-delete queues fall back to classic even when the vhost default is
quorum.
Verify¶
# list vhosts and their default queue type
rabbitmqctl list_vhosts name default_queue_type
# confirm the DataRobot user's permissions on a vhost
rabbitmqctl list_permissions -p nbxv2
Troubleshooting¶
- Verify the broker is running and both the AMQP and HTTP management ports are reachable from the DataRobot pods.
- Confirm the protocol schemes and ports match the broker's TLS configuration (
amqps/https+5671/15671whentls: true). - For TLS verification failures, confirm
ca_cert_pathpoints to the correct in-pod path and the CA matches the broker certificate. - Confirm the username/password are correct and the user has permissions on every virtual host DataRobot uses.
- For a limited user, confirm all required virtual hosts exist with the correct default queue type before installing.
- Review the DataRobot logs for connection or authorization errors.