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/16
Mevcut 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 🙂