Skip to content

Commit fde9950

Browse files
authored
make restart-cluster (#11427)
Implement a rolling cluster restart similar to what the Kubernetes Operator does
1 parent b4efe04 commit fde9950

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

deps/rabbit_common/mk/rabbitmq-run.mk

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ ifeq ($(PLATFORM),msys2)
2525
RABBITMQ_PLUGINS ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-plugins.bat
2626
RABBITMQ_SERVER ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-server.bat
2727
RABBITMQCTL ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmqctl.bat
28+
RABBITMQ_UPGRADE ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-upgrade.bat
2829
else
2930
RABBITMQ_PLUGINS ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-plugins
3031
RABBITMQ_SERVER ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-server
3132
RABBITMQCTL ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmqctl
33+
RABBITMQ_UPGRADE ?= $(RABBITMQ_SCRIPTS_DIR)/rabbitmq-upgrade
3234
endif
3335

34-
export RABBITMQ_SCRIPTS_DIR RABBITMQCTL RABBITMQ_PLUGINS RABBITMQ_SERVER
36+
export RABBITMQ_SCRIPTS_DIR RABBITMQCTL RABBITMQ_PLUGINS RABBITMQ_SERVER RABBITMQ_UPGRADE
3537

3638
# We export MAKE to be sure scripts and tests use the proper command.
3739
export MAKE
@@ -416,6 +418,35 @@ stop-brokers stop-cluster:
416418
done; \
417419
wait
418420

421+
NODES ?= 3
422+
423+
# Rolling restart similar to what the Kubernetes Operator does
424+
restart-cluster:
425+
@for n in $$(seq $(NODES) -1 1); do \
426+
nodename="rabbit-$$n@$(HOSTNAME)"; \
427+
$(RABBITMQ_UPGRADE) -n "$$nodename" await_online_quorum_plus_one -t 604800 && \
428+
$(RABBITMQ_UPGRADE) -n "$$nodename" drain; \
429+
$(MAKE) stop-node \
430+
RABBITMQ_NODENAME="$$nodename"; \
431+
$(MAKE) start-background-broker \
432+
NOBUILD=1 \
433+
RABBITMQ_NODENAME="$$nodename" \
434+
RABBITMQ_NODE_PORT="$$((5672 + $$n - 1))" \
435+
RABBITMQ_SERVER_START_ARGS=" \
436+
-rabbit loopback_users [] \
437+
-rabbitmq_management listener [{port,$$((15672 + $$n - 1))}] \
438+
-rabbitmq_mqtt tcp_listeners [$$((1883 + $$n - 1))] \
439+
-rabbitmq_web_mqtt tcp_config [{port,$$((1893 + $$n - 1))}] \
440+
-rabbitmq_web_mqtt_examples listener [{port,$$((1903 + $$n - 1))}] \
441+
-rabbitmq_stomp tcp_listeners [$$((61613 + $$n - 1))] \
442+
-rabbitmq_web_stomp tcp_config [{port,$$((61623 + $$n - 1))}] \
443+
-rabbitmq_web_stomp_examples listener [{port,$$((61633 + $$n - 1))}] \
444+
-rabbitmq_prometheus tcp_config [{port,$$((15692 + $$n - 1))}] \
445+
-rabbitmq_stream tcp_listeners [$$((5552 + $$n - 1))] \
446+
" & \
447+
done; \
448+
wait
449+
419450
# --------------------------------------------------------------------
420451
# Code reloading.
421452
#

0 commit comments

Comments
 (0)