Set default number of rabbitmq queues to CEIL(N/2)

The default used to be -1 which translated to 'ha-mode: all'.
That means that every queue is mirrored on all controllers.

By setting this to zero we are moving to 'ha-mode: exactly' with
the number of queues to be set to CEIL(N/2):
$nr_ha_queues = CEIL(nr_of_rabbit_nodes/2)
set_policy='ha-all ^(?!amq\\.).* {\"ha-mode\":\"exactly\",\"ha-params\":${nr_ha_queues}}'

This way the queues will not be copied around all servers,
but just to a subset of them. This still provides the necessary
resilience in case of a controller crash, but is less demanding
in terms of performance (and likely triggers fewer bugs in rabbit)

Co-Authored-By: John Eckersberg <jeckersb@redhat.com>

Change-Id: If04a7bf24a5c94ec15726843a8a4d2504b656cb7
This commit is contained in:
Michele Baldessari 2018-07-24 14:50:44 +02:00
parent d75fca71ed
commit ab7c43a34b
2 changed files with 11 additions and 1 deletions

View File

@ -55,7 +55,7 @@ parameters:
The number of HA queues to be configured in rabbit. The default is -1 which
translates to "ha-mode all". The special value 0 will be automatically
overridden to CEIL(N/2) where N is the number of nodes running rabbitmq.
default: -1
default: 0
type: number
RabbitNetTickTime:
description:

View File

@ -0,0 +1,10 @@
---
other:
- |
We now set the default number of rabbitmq queues to CEIL(N/2). (Where N is
the number of rabbitmq nodes). Previously this was set to N by default
which translated to having all queues mirrored to all controllers. By
changing the default to CEIL(N/2) the queues will not be copied around all
servers, but just to a subset of them. This still provides the necessary
resilience in case of a controller crash, but is less demanding in terms of
performance (and likely triggers fewer bugs in rabbit)