CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Farklı mikro hizmetler arasında zaman uyumsuz bir mesaj kanalı olarak hareket ettiği kurumsal uygulamalarda ve modern mikro hizmet mimarilerinde yaygın olarak kullanılmaktadır. Bu kılavuzda, yüksek kullanılabilirlikli bir ileti aracısı oluşturmak için RabbitMQ'yu birden çok CentOS 7 sunucusunda nasıl kümeleyebileceğiniz açıklanacaktır. Bu öğreticide, bir sunucu ana sunucu olarak görev yapacak ve diğer sunucular ana sunucunun kullanılamaması durumunda ayna sunucu olarak işlev görecektir.

Ön şartlar

Güvenlik duvarını yapılandırın

CentOS güvenlik duvarı ( firewalld) varsayılan olarak gelen trafiğe izin vermez. RabbitMQ'yu ağ içindeki ve dışındaki diğer sistemler için kullanılabilir hale getirmek ve yönetim konsoluna erişmemize izin vermek için, önce bazı bağlantı noktalarını açmamız gerekir.

RabbitMQ'nun web arayüzü yönetim konsolu, bağlantı noktasında varsayılan olarak dinler 15672. Yönetim konsolunu bilgisayarımızdan erişebilmemiz için herkese açık hale getirmek istiyoruz. Bu nedenle , ortak bölgede (bir Vultr örneğinde varsayılan ve etkin bölge olan) firewalldbağlantı noktasını kalıcı olarak açmayı 15672söyleyeceğiz.

sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent

RabbitMQ düğümlerinin birbirleriyle iletişim kurabilmesi gerekir. Gerekli portları açmak istiyoruz, ancak sadece dahili ağ üzerinden. İnternet'teki hiç kimsenin sunucularımızı yönetmesini veya doğrudan sunucularımızla iletişim kurmasını istemiyoruz. Aşağıdaki komutlar, sunucularımızın 192.168.0.100/24alt ağda olduğunu varsayar .

İlk hizmet, epmdbağlantı noktasında varsayılan olarak dinleyen eş bulma hizmetidir 4369.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="4369" accept'

Internode ve CLI iletişimi için RabbitMQ'nun port üzerinden iletişim kurabilmesi gerekir 25672.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="25672" accept'

CLI araçları, port aralığı üzerinden iletişim kurar 35672-35682.

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="35672-35682" accept'

Uygulamalarınızın AMQP protokolüne ihtiyacı varsa, bağlantı noktalarını 5671ve 5672. Başka bir protokol üzerinden iletişim kurabilmeniz gerekirse, RabbitMQ'nun ağ gereksinimleri hakkında gerekli bilgileri resmi RabbitMQ belgelerinde bulabilirsiniz .

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="5672" accept'

sudo firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="192.168.0.100/24"
  port protocol="tcp" port="5671" accept'

Şimdi firewalldyapılandırıldı, yapılandırmayı yeniden yüklemesi talimatını vermeliyiz.

sudo firewall-cmd --reload

Bu bölümdeki adımları tüm sunucularda tekrarlayın.

Yüklemek rabbitmqadmin

Yönetim eklentisi rabbitmqadmin, yönetim eklentisi etkinleştirildikten sonra sisteme kolayca kurulabilen bir Python aracı ile birlikte gelir .

sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin

DNS'yi yapılandırın

Kümeleme sırasında sunucuları tanımlamak için sunucunun ana bilgisayar adlarını kullanmanız gerekir. Varsayılan olarak, sunuculara atanmış DNS kaydı yoktur ve bağlantı başarısız olur. Bunu hızlı bir şekilde aşmak için, /etc/hostsfavori düzenleyicinizi kullanarak ana ve ayna ana bilgisayar adını dosyaya ekleyin.

Örneğin, master'ınızın hosts dosyası aşağıdaki gibi görünebilir. Sunucuların birbirlerini ana bilgisayar adlarına göre tanımlamalarına izin veren son iki kayda dikkat edin. IP adreslerini kendiniz değiştirdiğinizden emin olun.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1 guest
::1       guest

127.0.0.1 YOUR_MASTER_SERVER_HOST_NAME
::1       YOUR_MASTER_SERVER_HOST_NAME


192.168.0.101 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.102 YOUR_MIRROR_SERVER_HOST_NAME

Düğümleri kümeleyin

Düğümlerin birbirine katılmasına izin vermek için bir önkoşul, tüm düğümlerin Erlang çerezinin aynı olmasıdır. Varsayılan olarak, her düğüme benzersiz bir Erlang çerezi atanır, bu nedenle tüm düğümlerde yeniden yapılandırmanız gerekir.

Aşağıdaki komut Erlang çerezini " WE<3COOKIES" olarak ayarlayacaktır , ancak bunu istediğiniz gibi değiştirmekten çekinmeyin. Bunu tüm sunucularda yapın.

sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"

Erlang çerezinin düzgün bir şekilde yeniden yüklendiğinden emin olmak için RabbitMQ'yu tüm sunucularda yeniden başlatın.

sudo systemctl restart rabbitmq-server.service

Ana sunucu dışındaki tüm sunucularda aşağıdaki komutları yürütün. Bu, düğümlerin ana sunucuya katılmasını ve bir küme oluşturmasını sağlar.

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app

Aşağıdaki komutu çalıştırarak düğümlerin kümeye katıldığını doğrulayın.

sudo rabbitmqctl cluster_status

Tüm düğümleriniz çıktının nodesve running_nodesbölümünde görünecektir . Artık her sunucudaki adımları tekrarlamanıza gerek yok, yapılandırma otomatik olarak diğer düğümlere yansıtılacak.

Yüksek kullanılabilirlik politikası oluşturma

Artık bir RabbitMQ düğüm kümesine sahip olduğumuza göre, bunu yeni bir politika oluşturarak yüksek kullanılabilirlik kuyrukları ve değişimleri yapmak için kullanabiliriz. Bu ilke RabbitMQ Yönetim Konsolu aracılığıyla veya komut satırı arabirimi kullanılarak eklenebilir.

sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'

Aşağıdaki liste, komutun her bölümünün ne anlama geldiğini açıklayacaktır.

  • -p "/": Bu politikayı "/"hayalette kullanın (kurulumdan sonra varsayılan)
  • --priority 1: Politikaların uygulanma sırası
  • --apply-to "all": Olabilir "queues", "exchanges"ya da"all"
  • ha: Politikamıza verdiğimiz ad
  • ".*": Bu ilkenin hangi kuyruklara veya borsalara uygulanacağına karar vermek için kullanılan normal ifade. ".*"her şeyle eşleşecek
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': Politikanın JSON temsili. Bu belgede istediğimiz açıklanmaktadır - verilerin otomatik olarak senkronize edildiği tam olarak 2 düğüm

Kısacası, bu politika en az 2 düğümümüzün olduğu ve çalıştığı sürece bir kuyruk veya değişimdeki verilerin her zaman 2 kopyasına sahip olmamızı sağlayacaktır. Daha fazla düğümünüz varsa değerini artırabilirsiniz ha-params. N/2 + 1Düğümlerden oluşan bir çekirdek ( ) önerilir. Verilerinizin daha fazla kopyasına sahip olmak daha yüksek disk, i / o ve net kullanım ile sonuçlanabilir ve bu durum performansın düşmesine neden olabilir.

Verileri kümedeki tüm düğümlere yansıtmak isterseniz, aşağıdaki JSON belgesini kullanabilirsiniz.

'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'

Verileri yalnızca belirli düğümlere yansıtmak isterseniz (örneğin: node-1ve node-2), aşağıdakileri kullanabilirsiniz.

'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'

Farklı sıralara farklı ilkeler atamak için normal ifadeyi değiştirebilirsiniz. Diyelim ki şu üç düğüme sahibiz:

  • Tavşan @ ana
  • tavşan @ istemci-ha
  • Tavşan @ ürün-ha

Daha sonra "istemci" ile başlayan bir ada sahip olan kuyrukların rabbit@client-hadüğüme yansıtılmasına ve "ürün" ile başlayan bir ada sahip tüm kuyrukların düğüme yansıtılmasına neden olacak iki ilke oluşturabiliriz rabbit@product-ha.

sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-client "client.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@client-ha"], "ha-sync-mode": "automatic"}
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-product "product.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@product-ha"], "ha-sync-mode": "automatic"}

Burada küçük bir açıklama: Bu politika bu tür sıralarla eşleşse bile, özel sıralar RabbitMQ'da asla yansıtılmaz veya kalıcı olmaz. Özel kuyruklar, bir istemci bağlantıyı kestikten sonra otomatik olarak yok edilir ve bu nedenle başka bir sunucuya çoğaltmak yararlı olmaz. Sunucu başarısız olursa, istemci bağlantıyı keser ve sıra otomatik olarak yok edilir. Yansıtılmış örnekler de yok edilecekti.

Kurulumu test etme

Kümelenmiş kurulumu test etmek için, yönetim konsolu üzerinden komut satırı arabirimini kullanarak yeni bir kuyruk oluşturabiliriz.

sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true

Bu, varsayılan /vhost üzerinde kalıcı bir kuyruk oluşturur my-ha-queue.

Aşağıdaki komutu çalıştırın ve çıktıda kuyruğun 'ha' politikamızın atandığını ve master ve bir ayna düğümünde pid'ler olduğunu doğrulayın.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Artık ana düğümden kuyruğa bir mesaj yayınlayabilir ve ana düğümde RabbitMQ'yu durdurabiliriz.

sudo rabbitmqadmin -u user_name -p password  publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown

Şimdi ayna düğümüne bağlanarak geri alın.

 sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue

Son olarak, ana düğümümüzü yeniden başlatabiliriz.

sudo systemctl start rabbitmq-server.service

Konuk kullanıcıyı sil

Daha önce de belirtildiği gibi, RabbitMQ otomatik olarak varsayılan konuk şifresi ile konuk kullanıcı oluşturur. Bu varsayılan kullanıcıyı herkese açık bir sistemde bırakmak kötü bir uygulamadır.

sudo rabbitmqctl delete_user guest


Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

CentOS 6da ModSecurity ile NGINX kurulumu

CentOS 6da ModSecurity ile NGINX kurulumu

Bu makalede, ModSecurity tarafından korunan bir LEMP yığını oluşturmayı açıklayacağım. ModSecurity faydalı bir açık kaynaklı web uygulaması güvenlik duvarıdır.

CentOS 6 Üzerinde Apache, MySQL ve PHP Kurulumu

CentOS 6 Üzerinde Apache, MySQL ve PHP Kurulumu

Giriş LAMP, Linux, Apache, MySQL ve PHPnin kısaltmasıdır. Bu yazılım yığını, kurulum için en popüler açık kaynaklı çözümdür.

CentOS 7 Üzerinde Chamilo 1.11.8 Kurulumu

CentOS 7 Üzerinde Chamilo 1.11.8 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Chamilo, çevrimiçi eğitim ve takım işbirliği için yaygın olarak kullanılan ücretsiz ve açık kaynaklı bir öğrenme yönetim sistemidir (LMS).

CentOS 7ye Odoo 9 Topluluğunu Yükleme

CentOS 7ye Odoo 9 Topluluğunu Yükleme

Eskiden OpenERP olarak bilinen Odoo, iyi bilinen bir açık kaynaklı ERP iş platformudur. Her büyüklükteki işletme, bol miktarda lis sayesinde Odoodan yararlanabilir

Icinga2yi CentOS 6 veya CentOS 7de Ana / İstemci Modelini Kullanacak Şekilde Değiştirme

Icinga2yi CentOS 6 veya CentOS 7de Ana / İstemci Modelini Kullanacak Şekilde Değiştirme

Icinga2 güçlü bir izleme sistemidir ve bir ana istemci modelinde kullanıldığında, NRPE tabanlı izleme kontrollerine olan ihtiyacın yerini alabilir. Master-Clien

CentOS 7 LAMP VPSye Couch CMS 2.0 Kurulumu

CentOS 7 LAMP VPSye Couch CMS 2.0 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Couch CMS, web tasarımcılarının tasarlamalarını sağlayan basit ve esnek, ücretsiz ve açık kaynaklı bir İçerik Yönetim Sistemidir (CMS)

NetOSu CentOS 7ye Yükleme

NetOSu CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Netdata, gerçek zamanlı sistem ölçümleri izleme alanında yükselen bir yıldızdır. Aynı türdeki diğer araçlarla karşılaştırıldığında, Netdata:

CentPN 7 Üzerinde ERPNext Açık Kaynak ERP Kurulumu

CentPN 7 Üzerinde ERPNext Açık Kaynak ERP Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? ERP veya Kurumsal Kaynak Planlaması, temel iş süreçlerini yönetmek için kullanılan bir kurumsal uygulama paketidir. ERPNext ücretsizdir

CentOS 6da SA-MP San Andreas Çok Oyunculu Sunucu Kurma

CentOS 6da SA-MP San Andreas Çok Oyunculu Sunucu Kurma

Başka bir Vultr eğitimine hoş geldiniz. Burada, bir SAMP sunucusunun nasıl kurulacağını ve çalıştırılacağını öğreneceksiniz. Bu kılavuz CentOS 6 için yazılmıştır. Önkoşullar

KubOSM ile Kubernetesi CentOS 7de dağıtın

KubOSM ile Kubernetesi CentOS 7de dağıtın

Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu

CentOS 7de Geliştirme için Sails.jsyi kurun

CentOS 7de Geliştirme için Sails.jsyi kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Sails.js, Ruby on Railse benzer şekilde Node.js için bir MVC çerçevesidir. Modern uygulamalar geliştirmek için yapar

CentOS 6da Half Life 2 Sunucusu Kurma

CentOS 6da Half Life 2 Sunucusu Kurma

Bu eğitimde, CentOS 6 Sistemine Half Life 2 oyun sunucusu kurma süreci ele alınacaktır. 1. Adım: Önkoşulları kurma

PrestaShopu CentOS 7ye Yükleme

PrestaShopu CentOS 7ye Yükleme

PrestaShop popüler bir açık kaynaklı e-ticaret çözümüdür. Kendi çevrimiçi mağazanızı ücretsiz oluşturmak için kullanabilirsiniz. Bu eğitimde, size

CentOS 7 LAMBA VPSye MODX Devrimi Nasıl Yüklenir

CentOS 7 LAMBA VPSye MODX Devrimi Nasıl Yüklenir

Farklı Bir Sistem mi Kullanıyorsunuz? MODX Revolution hızlı, esnek, ölçeklenebilir, ücretsiz ve açık kaynaklı, kurumsal düzeyde bir İçerik Yönetim Sistemi (CMS)

Ubuntu ve CentOS İçin Daha İyi İzleme Araçları

Ubuntu ve CentOS İçin Daha İyi İzleme Araçları

Giriş Linux sistemleri, süreçleri ve disk alanını izlemeye yardımcı olan varsayılan olarak top, df ve du gibi izleme araçlarıyla birlikte gelir. Çoğu zaman, onlar ar

CentOS 7de Kolab Groupware Kurulumu

CentOS 7de Kolab Groupware Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Kolab Groupware, ücretsiz ve açık kaynaklı bir web tabanlı grup yazılımı uygulamasıdır. Özellikleri e-posta iletişiminden, olaylardan oluşur

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun