All queues are mirrored based on a HA-policy (ha-mode:all, ha-sync-mode:automatic) and have auto-delete option set to true.
[root@sensu01 ~]# docker exec -it sensu-int-rabbit-1 rabbitmqctl --timeout 120 list_queues -p sensu name policy pid slave_pids
Timeout: 120.0 seconds ...
Listing queues for vhost sensu ...
vehweb04.f-1.5.0-1538545665 hapolicy <rab...@sensu-int-rabbit-1.1.4032.0> [<rab...@sensu-int-rabbit-2.1.1249.0>, <rab...@sensu-int-rabbit-3.2.428.0>]
db01-1.3.3-1535137885 hapolicy <rab...@sensu-int-rabbit-1.1.3859.0> [<rab...@sensu-int-rabbit-2.1.1253.0>, <rab...@sensu-int-rabbit-3.2.432.0>]
docker02-1.5.0-1538460109 hapolicy <rab...@sensu-int-rabbit-1.1.3792.0> [<rab...@sensu-int-rabbit-2.1.1257.0>, <rab...@sensu-int-rabbit-3.2.436.0>]
keepalives hapolicy <rab...@sensu-int-rabbit-1.1.3095.0> [<rab...@sensu-int-rabbit-2.1.1265.0>, <rab...@sensu-int-rabbit-3.2.444.0>]
gw01-1.5.0-1538551206 hapolicy <rab...@sensu-int-rabbit-1.1.3602.0> [<rab...@sensu-int-rabbit-2.1.1269.0>, <rab...@sensu-int-rabbit-3.2.448.0>]
gw02-1.5.0-1537971972 hapolicy <rab...@sensu-int-rabbit-1.1.3474.0> [<rab...@sensu-int-rabbit-2.1.1273.0>, <rab...@sensu-int-rabbit-3.2.452.0>]
The problem is that while rebooting the node that is master for most of the queues, no other master nodes is elected for those queue. After the original queues master comes back online, it cannot redeclare the queues because they already exist on the other 2 nodes (each queue got replicated at some point, but the remaining nodes probably have an unsynchronised version).
So back to my original question: is there a way to safely reboot the nodes in my RabbitMQ cluster?
Should I use the policy "ha-promote-on-shutdown".
Note: my Rabbitmq cluster nodes run inside docker containers, RabbitMQ version 3.7.8