RabbitMQ Cluster (Master-Slave) ve HaProxy Kurulumu

Deniz TÜRKMEN
4 min readNov 21, 2022

--

Ubuntu 20.04 & HaProxy

Merhabalar,

Bu yazımda Ubuntu 20.04 ile Master-Slave RabbitMQ kurulumunu inceliycez. ilk olarak nedir, hangi amaçla kullanıyoruz.

RabbitMQ: Açık kaynak kodlu bir ‘message broker’ yapılarından bir tanesidir. Bir uygulamdan mesajı alıp (producer) başka bir kaynağa ileten (consumer) yapıdır. Erlang diliyle geliştirilmiştir. ‘Exchange’ ve ‘Queue’ olmak üzere iki yapı üzerinde bulunmaktadır.

HaProxy: Open sourcedır. İş yükünü uygunluğuna göre birden çok sunucu üzerine dağıtarak sunucu ortamının performansını ve güvenliğini artırmak için kullanılan bir “Tcp/Http” yük dengeleyici ve proxy çözümüdür.

Kurulum yapılacak bilgisayar bilgilerine bakalım.

RabbitMQ-Master     192.168.1.25         master-server-1RabbitMQ-Slave      192.168.1.23         worker-server-1HaProxy             192.168.1.28         turkmen

ilk olarak kurulum yapılacak makinelere host ve ip ekleyelim.

sudo suecho "192.168.1.23 rabbitmq-node1 master-server-1" >> /etc/hostsecho "192.168.1.25 rabbitmq-node2 worker-server-1" >> /etc/hostscat /etc/hosts

Sonra Rabbitmq master-slave olacak bilgisayara erlang kurlumu yapalım. Bunun için,

sudo apt updatesudo apt install software-properties-common apt-transport-httpswget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -echo "deb https://packages.erlang-solutions.com/ubuntu focal contrib" | sudo tee /etc/apt/sources.list.d/rabbitmq.listsudo apt updatesudo apt install erlang

İki makine içinde erlang kurlumunu doğrulamak için,

erl

Şimdide iki makineye rabbitmq kurulumu yapalım.

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bashsudo apt updatesudo apt install rabbitmq-server

Rabbitmq service durumuna bakmak için,

sudo systemctl enable rabbitmq-server.servicesudo systemctl start rabbitmq-server.servicesudo systemctl status rabbitmq-server.service

RabbitMQ master-slave ayarlamak için erlang cookie iki makinede aynı olması gerekiyor. Bunun için,

sudo sucd /var/lib/rabbitmqscp .erlang.cookie root@192.168.1.25:/var/lib/rabbitmq/.erlang.cookie

Slave olarak kuracağımız makinede,

  • Rabbitmq server restart edelim.
sudo systemctl restart rabbitmq-server
  • Rabbitmq durduralım
sudo rabbitmqctl stop_app
  • Rabbitmq reset edelim.
sudo rabbitmqctl reset
  • Rabbitmq master a slave dahil edelim.
sudo rabbitmqctl join_cluster rabbit@master-hostname
  • Rabbitmq başlatalım
sudo rabbitmqctl start_app

Note: Failed rabbitmq stop olduğu için start ettiğimizde sorun olmayacaktır.

  • Masterdan slave eklenmiş mi kontrol edelim.
sudo rabbitmqctl cluster_status

Yukarıdaki çıktıda görüldüğü üzere slave başarılı şekilde eklenmiştir.

  • Rabbitmq dashboard aktif etmek için,
sudo rabbitmq-plugins enable rabbitmq_management
  • Rabbitmq-Ui için user oluşturalım.
sudo rabbitmqctl add_user admin admin123*sudo rabbitmqctl set_user_tags admin administrator
Username: adminPassword: admin123*

High avability (yüksek erişebilirlik) için policy aktif ediyoruz.

rabbitmqctl set_policy ha-all "." '{"ha-mode":"all"}'

Kullanıcımız oluşturuldu. Tarayıcıdan “192.168.1.23:15672” gittiğimizde,

Görüldüğü gibi slave bilgileri gelmemektedir. Bunun nedeniz ise dashboard pluginin aktif edilmediği içindir. Aktif etmek için slave kurduğumuz makineden aşağıdaki kodu çalıştıralım,

sudo rabbitmq-plugins enable rabbitmq_management

ve tekrar tarayıcından baktığımızda,

Slave başaralı şekilde gelmektedir. Şimdide HaProxy kurulumuna geçelim.

sudo apt updatesudo apt install -y haproxy

HaProxy versiyonu bakmak için,

haproxy -v

HaProxy config ayarlarını yapalım rabbitmq için,ilgili cfg dosyasını vim ile açalım ve config ayarlarımızı girelim.

cd /etc/haproxy/vim haproxy.cfg

ve ardından aşağıdaki configleri ekleyelim.

sudo susystemctl restart haproxysystemctl status haproxy

Şimdide haproxy kurduğumuz bilgisayarın ip adresi ile rabbitmq ui gittiğimizde,

Görüldüğü gibi HaProxy kurulumuz başarılı şekilde gerçekleştirdik.

HaProxy istatistik durumlarına bakmak için tarayıcdan “192.168.1.28:8080/stats” gittiğimizde,

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet