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 🙂

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir