Geleneksel dağıtılmış uygulamalarda, iletişim genellikle senkron bir şekilde yapılırdı. Senkron iletişim, basit olmasına rağmen kendi zorluklarına sahiptir. İşte asenkron iletişim ve mesaj kuyrukları/aracıları burada devreye girer. Dağıtılmış bileşenler arasında yer alırlar. Öncelikle mesaj kuyruğunun ne olduğunu ve neden kullanıldığını anlamamız gerekir. Yazılım sistemlerinde, servisler arasında iletişim kurmamız gerekir. Mesaj kuyrukları, dağıtılmış mimariler arasında iletişim kurmak ve işlemleri eşzamansız olarak gerçekleştirmek için bize bir yapı sağlar. Her mesaj yalnızca bir kez, tek bir tüketici tarafından işlenir. Mesaj kuyruklarının avantajları, servisler arasındaki bağımlılığı azaltır ve ölçeklenebilirliği artırır.

RabbitMQ, açık kaynak olarak yaygın olarak kullanılan en popüler mesaj aracısı teknolojilerinden biridir. Birden fazla mesajlaşma protokolünü ve akışı destekler. RabbitMQ birçok işletim sisteminde çalışır ve bulut hizmetine sahiptir. RabbitMQ bir mesaj aracısı olduğundan, mesajları yayınlayan yayıncı ve mesajı kuyruktan alıp işleyen consumer tarafından kullanılır. Mesajın hangi kuyruğa gideceği değişim yoluyla öğrenilir. Yayıncının veya geliştirilen tüketici hizmetlerinin programlama dilinin bir önemi yoktur. Hepsi ayrı ve bağımsızdır.

  • Çoklu platform desteği: RabbitMQ, farklı dillerde yazılmış uygulamalar arasında mesajlarınızı iletmek için kullanılabilir. Bu sayede uygulamalar arasında dil uyumsuzluğu sorunu ortadan kaldırır.
  • Yüksek Performans: RabbitMQ, yüksek performanslı bir mesaj aracısıdır. İletişim işlemleri hızlı ve verimli bir şekilde gerçekleştirilir.
  • Esneklik: RabbitMQ, farklı senaryolara uygun olarak yapılandırabilir. Örneğin, farklı yönlendirme stratejileri seçebilirsiniz.
  • Güvenirlik: RabbitMQ, mesajların güvenli ve sağlam bir şekilde teslim edilmesini sağlar. Mesajların kaybolması veya tekrarlanması gibi sorunlar yaşanmaz.
  • Ölçenebilirlik: RabbitMQ, yüksek trafikli uygulamalar için idealdir. Çok sayıda mesaj işlenebilir ve çoklu sunucular kullanılabilir.
  • Producer: Mesajı queue’ya gönderen hizmet/uygulama.
  • Exchange: Publisher tarafından gönderilen mesajların nasıl yönetileceğini ve hangi rotalara yönlendirileceğini belirlemek için kullanılan yapıdır.
  • Routes: Hangi mesajın hangi queue’ya gönderileceğini belirlememizi sağlar.
  • Bindings: Değişim ve queue arasında bir bağlantı oluşturma.
  • Consumer: Mesajı queue’dan alan ve tüketen hizmet/uygulama.
  • Queue: Mesajları depolayan ve en az bir exchange bağlı olan büyük bir buffer’dır. Consumer’lar ve producer’lar bir queue ile çoktan bire ilişkiye sahiptir.
  • Message: İşlem tetikleyicileri, görev durumu, basit metin mesajları vb. dahil olmak üzere tüketen uygulama için değerli olabilecek ikili bir veri BLOB’udur.
  • Virtual Host: Bir RabbitMQ sunucusundaki farklı producer’ları, consumer’ları, exchange’leri, queue’ları ve diğer nesneleri izole eden sanal bir ortamdır.

Bu yazıda RabbitMQ cluster olarak Linux bir makineye nasıl kurulur ondan bahsedilecektir. Linux olarak Ubuntu 20.04.6 LTS tercih edilmiştir.

Cluster alınacak bütün sunucularda öncelikle hosts dosyasına cluster olacak sunucuların IP ve hostname ekliyoruz.

Öncelikle ihtiyaç olan isterleri kuruyoruz.

Artık RabbitMQ ana, ErLang ve RabbitMQ PackageCloud depoları için depo imzalama anahtarlarını sırasıyla ekleyebiliriz.

Team RabbitMQ tarafından yönetilen uygun repository’leri eklenir.

Paket dizinlerini güncelleriz.

Erlang paketlerini yükleriz.

RabbitMQ-server’ı ve bağımlılıklarını kurarız.

Aşağıdaki komutla durumunu kontrol edebiliriz.

‘RABBITMQ1’ sunucusunda, ‘.erlang.cookie’ dosyasını doğrulamak ve dosyanın kullanılabilir olduğundan emin olmak için aşağıdaki komutu çalıştırırız.

Sonra, ‘.erlang.cookie’ dosyasını hem ‘RABBITMQ2′ hem de RABBITMQ3’ sunucularına kopyalayıp/aktarırız.

‘RABBITMQ2’ ve ‘RABBITMQ3’ de aşağıdaki komutlar ile sunucuyu cluster join ederiz.

Aşağıdaki komutla cluster durumunu görebiliriz.

Aşağıdaki komutlarla administrator kullanıcı oluşturabiliriz.

‘user’ kullanıcısı için RabbitMQ cluster’da tüm varlıklara yönelik izinleri ayarlarız.

RabbitMQ, mirror queue’larını ayarlamak için iki yol sunar; RabbitMQ politikası aracılığıyla klasik queue mirror kullanabilir veya quorumkuyruklarını kullanarak ayarlayabilirsiniz.Yeni bir ‘ha-all’ politikası oluşturmak için aşağıdaki komutu çalıştırın. Bu politika, tüm kuyrukların RabbitMQ cluster’daki node’lar arasında mirror’lamaya izin verir.

Yönetim arayüzünü aşağıdaki komutla aktif edebilirsiniz.

RabbitMQ Arayüz Login Ekranı
RabbitMQ Arayüz Dashboard

Aşağıdaki komutla versiyonu kontrol edebilirsiniz.

Aşağıdaki komutla ldap plugin yükleyip aktif edebilirsiniz.

Cluster ve management ssl çevirmek için aşağıdaki şekilde server ve client için sertifika oluşturabilirsiniz. Öncelikle sertifikanın olacağı path oluşturulur.

Sonra aşağıdaki ‘openssl.cnf’ ssl config eklenir.

Daha sonra test Sertifika Yetkilimizin kullanacağı anahtarı ve sertifikaları üretmemiz gerekiyor.

Server ve Client sertifikaları oluşturma süreci oldukça benzerdir. İlk olarak Server:

Şimdi Client:

Ekte örnek rabbitmq.conf bulunmaktadır. İstediğiniz parametleri seçip aşağıdaki path’de config dosyasını oluşturup default config değiştirebilirsiniz.

RabbitMQ örnek konfigürasyon dosyasını buradan indirebilirsiniz.

LDAP entegrasonu ve yetki kısıtlama için aynı path’te ‘advanced.config’ dosyasını oluşturabilirsiniz.


0 yorum

Bir yanıt yazın

Avatar yer tutucu

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