Prod ortamlarımıza erişim olmadığından ve genelde test ortamlarında da cluster yapısı kurulmadığından Rabbitmq teknolojisini localime cluster şeklinde kurma ihtiyacım oldu. Burada docker compose dosyasını ve kullandıgım komutları paylaşacağım bu şekilde localimize clusterli bir rabbitmq serverına sahip olacağız.
version: '3.8'
services:
rabbitmq-node1:
image: rabbitmq:management
container_name: rabbitmq-node1
hostname: rabbitmq-node1
networks:
rabbitmq-cluster:
ipv4_address: 172.20.0.2
ports:
- "15672:15672" # Management Dashboard (Node 1)
- "5672:5672" # AMQP bağlantısı (Node 1)
environment:
RABBITMQ_NODE_IP_ADDRESS: "0.0.0.0"
RABBITMQ_ERLANG_COOKIE: "S3CR3TCOOKIE"
rabbitmq-node2:
image: rabbitmq:management
container_name: rabbitmq-node2
hostname: rabbitmq-node2
networks:
rabbitmq-cluster:
ipv4_address: 172.20.0.3
ports:
- "15673:15672" # Management Dashboard (Node 2)
- "5673:5672" # AMQP bağlantısı (Node 2)
environment:
RABBITMQ_NODE_IP_ADDRESS: "0.0.0.0"
RABBITMQ_ERLANG_COOKIE: "S3CR3TCOOKIE"
rabbitmq-node3:
image: rabbitmq:management
container_name: rabbitmq-node3
hostname: rabbitmq-node3
networks:
rabbitmq-cluster:
ipv4_address: 172.20.0.4
ports:
- "15674:15672" # Management Dashboard (Node 3)
- "5674:5672" # AMQP bağlantısı (Node 3)
environment:
RABBITMQ_NODE_IP_ADDRESS: "0.0.0.0"
RABBITMQ_ERLANG_COOKIE: "S3CR3TCOOKIE"
networks:
rabbitmq-cluster:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16Mevcut kod blogunu yaml uzantılı dosyaya çevirin ve o path içinde aşağıdaki komutu çalıştırın.
docker compose up -d
Sonra aşağıdaki komutları tek tek çalıştırmanız gerekiyor.
docker exec rabbitmq-node2 rabbitmqctl stop_app docker exec rabbitmq-node2 rabbitmqctl join_cluster rabbit@rabbitmq-node1 docker exec rabbitmq-node2 rabbitmqctl start_app docker exec rabbitmq-node3 rabbitmqctl stop_app docker exec rabbitmq-node3 rabbitmqctl join_cluster rabbit@rabbitmq-node1 docker exec rabbitmq-node3 rabbitmqctl start_app
Yukardaki komut nodeları birbirine bağlayacaktır. Queueya veri gönderirken tipini ( x-queue-type ) quorum seçmeniz önemlidir.
Rabbitmq dashboardını açtığınız zaman şu şekilde ekran sizi karşılayacaktır.

Nodeları kapatıp açmak için ise bunları deneyebilirsiniz.
docker stop rabbitmq-node1 docker start rabbitmq-node1 docker stop rabbitmq-node2 docker start rabbitmq-node2 docker stop rabbitmq-node3 docker start rabbitmq-node3
Not defterine sürekli bakmaya sıkıldım buraya ekledim. Umarım işiniz hızlıca hallolur 🙂