diff --git a/ansible/roles/rabbitmq/tasks/restart_services.yml b/ansible/roles/rabbitmq/tasks/restart_services.yml
index d9e2a1a6ab..e7b5297ee7 100644
--- a/ansible/roles/rabbitmq/tasks/restart_services.yml
+++ b/ansible/roles/rabbitmq/tasks/restart_services.yml
@@ -1,4 +1,21 @@
 ---
+- name: Get info on RabbitMQ container
+  become: True
+  kolla_container_facts:
+    container_engine: "{{ kolla_container_engine }}"
+    name: "rabbitmq"
+  register: container_info
+
+- name: Put RabbitMQ node into maintenance mode
+  kolla_toolbox:
+    container_engine: "{{ kolla_container_engine }}"
+    module_name: "community.rabbitmq.rabbitmq_upgrade"
+    module_args:
+      action: "drain"
+    user: root
+  become: true
+  when: container_info._containers | length > 0
+
 - name: Restart rabbitmq container
   vars:
     service_name: "rabbitmq"
diff --git a/releasenotes/notes/rabbitmq-use-maintenance-mode-on-restart-a25659b9269c82b5.yaml b/releasenotes/notes/rabbitmq-use-maintenance-mode-on-restart-a25659b9269c82b5.yaml
new file mode 100644
index 0000000000..d6abda3817
--- /dev/null
+++ b/releasenotes/notes/rabbitmq-use-maintenance-mode-on-restart-a25659b9269c82b5.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    When restarting a RabbitMQ container, the node is now first put into
+    maintenance mode. This will make the node shutdown less disruptive. For
+    details on what maintenance mode does, see:
+    https://www.rabbitmq.com/upgrade.html#maintenance-mode