RabbitMQ kurulum ve küme ayarları
Docker olarak kullanmayacaksanız. Debian yada Centos için repolarını ayarlayarak başlayalım. ayrınci için ( https://www.rabbitmq.com/download.html) adresine bakabilirsiniz. zorunlu olarak 2 adet repo ekleliyorsunuz; RabbitMQ ve yazılım üretildiği Erlang dil paketleri…
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bashcurl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
Tüm sunucularda paket kurulumu yapılır. Ardından ilegili dosyada sunucu kısa ismi yazılabilir. “NODENAME” Ayrıca WebUI için management plugin enable yapmalıyız. bkz ( htttp://os1:15672/ )
yum install -y rabbitmq-servervim /etc/rabbitmq/rabbitmq-env.conf
# NODENAME=os1 ….systemctl start --now rabbitmq-serverrabbitmq-plugins enable rabbitmq_management
Küme kuracağımız için cerezlerin hepsinde aynı olaması gerekiyor. os1 üzerinde aşağıdaki komut çalıştırılabilir.
cat /var/lib/rabbitmq/.erlang.cookiefor i in 2 3 4; do scp /var/lib/rabbitmq/.erlang.cookie os$i:/var/lib/rabbitmq/.erlang.cookie; done
os2, os3, ve os4 üzerinde aşağıdaki ayarlar yapılır.
rabbitmqctl stop_app
rabbitmqctl join_cluster os1@os1
rabbitmqctl start_app
rabbitmqctl cluster_status
bir kullanıcı ekliyoruz. ve os1 üzerinde son kontrolleri yapıyoruz.
rabbitmqctl add_user “alp” “parola”
rabbitmqctl set_user_tags alp management administrator
rabbitmqctl set_permissions alp “.*” “.*” “.*”
rabbitmqctl delete_user guest
rabbitmqctl list_users
rabbitmq-diagnostics check_running
(Opsyonel) Eğer belirli queue yada exchange için izin vermek isterseniz önce kullanıcıyı tag vermeden ekleyin sonra regex ile yazma /okuma izinlerinde regex kullabilirsiniz; zaten hiç bir şey yazmazsanız “” hakkı olmuyor.
rabbitmqctl add_user “test” “parola”
rabbitmqctl set_permissions alp “^TEST-siparis.*” “TEST-siparsi.*” “”
Genelde HA kurulumlarında tüm nodların mirror olması gereksizdir. Ancak biz aşağıda tüm “.*” queue ve exchangelerin OTOMATIK mirror yapılmasını sağlayacağız. Varsayılan manual sync dir.
rabbitmq-diagnostics ping
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}'rabbitmqctl list_policies;
isterseniz belirli queue ve excahgen için regex ile mirror policy ayarları yapabilirsiniz. ama bu bir secenektir.
örnek1: İki node üzerine “siparisler-” ile başlayan queue ler;
rabbitmqctl set_policy ha-siparis “^siparisler-\.” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’
örnek2: “bildirim-” ile başlayan queue lere belirli sunucularada mirrorlamak için;
rabbitmqctl set_policy ha-bildirim “^bildirim-\.” ‘{“ha-mode”:”nodes”,”ha-params”:[“os2@os2”, “os4@os4”]}’