Grumbullimi i RabbitMQ në CentOS 7

RabbitMQ është një ndërmjetës mesazhesh me burim të hapur që mbështet AMQP, STOMP dhe teknologji të tjera komunikimi. Përdoret gjerësisht në aplikacionet e ndërmarrjeve dhe arkitekturat moderne të mikro-shërbimeve ku vepron si një kanal mesazhesh asinkron midis mikro-shërbimeve të ndryshme. Ky udhëzues do të përshkruajë se si mund të grumbulloni RabbitMQ në shumë serverë CentOS 7 për të formuar një ndërmjetës mesazhesh me disponueshmëri të lartë. Në këtë tutorial, një server do të veprojë si një server kryesor dhe serverët e tjerë do të veprojnë si serverë pasqyrë në rast se serveri kryesor bëhet i padisponueshëm.

Parakushtet

Konfiguro murin e zjarrit

Muri i zjarrit CentOS, ( firewalld), nuk lejon asnjë trafik në hyrje si parazgjedhje. Për ta bërë RabbitMQ të disponueshëm për sisteme të tjera brenda dhe jashtë rrjetit dhe për të na lejuar të aksesojmë konsolën e menaxhimit, fillimisht duhet të hapim disa porte.

Konsola e menaxhimit të ndërfaqes në ueb të RabbitMQ dëgjon si parazgjedhje në port 15672. Ne dëshirojmë që tastiera e menaxhimit të jetë e disponueshme për publikun, në mënyrë që të mund ta aksesojmë atë nga kompjuteri ynë. Prandaj, ne do të udhëzojmë firewalldqë porti të hapet përgjithmonë 15672në zonën publike (e cila është zona e paracaktuar dhe aktive në një shembull Vultr).

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

Nyjet RabbitMQ duhet të jenë në gjendje të komunikojnë me njëri-tjetrin. Ne dëshirojmë të hapim portat e nevojshme, por vetëm përmes rrjetit të brendshëm. Ne nuk duam që dikush në internet të jetë në gjendje të administrojë ose të kontaktojë drejtpërdrejt serverët tanë. Komandat e mëposhtme supozojnë se serverët tanë janë në 192.168.0.100/24nënrrjet.

Shërbimi i parë është shërbimi i epmdzbulimit të kolegëve i cili dëgjon si parazgjedhje në port 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'

Për komunikimin internode dhe CLI, RabbitMQ duhet të jetë në gjendje të komunikojë përmes portit 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'

Mjetet CLI komunikojnë në intervalin e porteve 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'

Nëse aplikacionet tuaja kanë nevojë për protokollin AMQP, do t'ju duhet gjithashtu të hapni portet 5671dhe 5672. Nëse keni nevojë të jeni në gjendje të komunikoni përmes një protokolli tjetër, mund të gjeni informacionin e nevojshëm në lidhje me kërkesat e rrjetit të RabbitMQ në dokumentacionin zyrtar të RabbitMQ .

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'

Tani që firewalldështë konfiguruar, ne duhet ta udhëzojmë atë të ringarkojë konfigurimin.

sudo firewall-cmd --reload

Përsëritni hapat nga ky seksion në të gjithë serverët.

Instaloni rabbitmqadmin

Shtojca e menaxhimit vjen me një mjet Python të quajtur i rabbitmqadmincili mund të instalohet lehtësisht në sistem pasi të aktivizohet shtojca e menaxhimit.

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

Konfiguro DNS

Ju duhet të përdorni emrat e hosteve të serverit për të identifikuar serverët gjatë grumbullimit. Si parazgjedhje, serverët nuk kanë asnjë rekord DNS të caktuar dhe lidhja do të dështojë. Për ta kapërcyer shpejt këtë, shtoni emrin master dhe pasqyrë të hostit në /etc/hostsskedar duke përdorur redaktorin tuaj të preferuar.

Për shembull, skedari i hosteve të masterit tuaj mund të duket si më poshtë. Vini re dy regjistrimet e fundit, të cilat lejojnë serverët të identifikojnë njëri-tjetrin me emrin e tyre të hostit. Sigurohuni që të ndryshoni adresat IP në tuajat.

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

Grumbulloni nyjet

Një parakusht importi për të lejuar nyjet të bashkohen me njëri-tjetrin është që skedari Erlang i të gjitha nyjeve të jetë identik. Si parazgjedhje, çdo nyje do t'i caktohet një skedar unik Erlang, kështu që duhet ta rikonfiguroni atë në të gjitha nyjet.

Komanda e mëposhtme do ta vendosë skedarin Erlang në " WE<3COOKIES", por mos ngurroni ta ndryshoni këtë sipas dëshirës tuaj. Bëni këtë në të gjithë serverët.

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

Rinisni RabbitMQ në të gjithë serverët për t'u siguruar që kuki Erlang është ringarkuar siç duhet.

sudo systemctl restart rabbitmq-server.service

Ekzekutoni komandat e mëposhtme në të gjithë serverët, përveç në serverin kryesor. Kjo do t'i lejojë nyjet të bashkohen me serverin kryesor dhe të formojnë një grup.

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

Verifikoni që nyjet janë bashkuar me grupin duke ekzekutuar komandën e mëposhtme.

sudo rabbitmqctl cluster_status

Të gjitha nyjet tuaja do të shfaqen në seksionin nodesdhe running_nodestë daljes. Tani e tutje, nuk keni më nevojë të përsërisni hapat në secilin server, konfigurimi do të pasqyrohet automatikisht në nyjet e tjera.

Krijo një politikë me disponueshmëri të lartë

Tani që kemi një grup nyjesh RabbitMQ, mund ta përdorim këtë për të krijuar radhë dhe shkëmbime me disponueshmëri të lartë duke vendosur një politikë të re. Kjo politikë mund të shtohet përmes panelit të menaxhimit të RabbitMQ ose duke përdorur ndërfaqen e linjës së komandës.

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

Lista e mëposhtme do të shpjegojë se çfarë do të thotë secila pjesë e komandës.

  • -p "/": Përdorni këtë politikë në "/"vhost (parazgjedhja pas instalimit)
  • --priority 1: Rendi në të cilin do të aplikohen politikat
  • --apply-to "all": Mund të jetë "queues", "exchanges"ose"all"
  • ha: Emri që i japim politikës sonë
  • ".*": Shprehja e rregullt që përdoret për të vendosur se në cilat radhë ose shkëmbime zbatohet kjo politikë. ".*"do të përputhet me çdo gjë
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': Përfaqësimi JSON i politikës. Ky dokument përshkruan se ne duam - saktësisht 2 nyje në të cilat të dhënat sinkronizohen automatikisht

Shkurtimisht, kjo politikë do të sigurojë që ne do të kemi gjithmonë 2 kopje të të dhënave në një radhë ose shkëmbim për sa kohë që kemi të paktën 2 nyje në funksionim. Nëse keni më shumë nyje, mund të rrisni vlerën e ha-params. N/2 + 1Këshillohet një kuorum, ( ), i nyjeve. Të kesh më shumë kopje të të dhënave tuaja do të rezultonte në përdorim më të lartë të diskut, i/o dhe rrjetit, gjë që mund të rezultojë në një performancë të degraduar.

Nëse dëshironi t'i pasqyroni të dhënat në të gjitha nyjet në grup, mund të përdorni dokumentin e mëposhtëm JSON.

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

Nëse dëshironi t'i pasqyroni të dhënat vetëm në nyje specifike, (për shembull: node-1dhe node-2), mund të përdorni sa vijon.

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

Ju mund të ndryshoni shprehjen e rregullt për të caktuar politika të ndryshme në radhë të ndryshme. Le të themi se kemi tre nyjet e mëposhtme:

  • lepuri@mjeshtër
  • lepuri@klient-ha
  • lepuri@produkt-ha

Më pas mund të krijojmë dy politika të cilat do të rezultojnë që radhët të kenë një emër që fillon me "klient" për t'u pasqyruar në rabbit@client-hanyje dhe të gjitha radhët që kanë një emër që fillon me "produkt" të pasqyrohen në rabbit@product-hanyje.

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"}

Një vërejtje e vogël këtu: radhët ekskluzive nuk pasqyrohen kurrë ose qëndrojnë në RabbitMQ, edhe nëse kjo politikë do të përputhej me radhë të tilla. Radhët ekskluzive shkatërrohen automatikisht pasi një klient shkëputet dhe, si i tillë, nuk do të ishte e dobishme ta riprodhonte atë në një server tjetër. Nëse serveri do të dështonte, klienti do të shkëputej prej tij dhe radha do të shkatërrohej automatikisht. Rastet e pasqyruara do të shkatërroheshin gjithashtu.

Testimi i konfigurimit

Për të testuar konfigurimin e grupuar, ne mund të krijojmë një radhë të re duke përdorur ndërfaqen e linjës së komandës përmes konsolës së menaxhimit.

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

Kjo do të krijojë një radhë të qëndrueshme në /vhost-in e paracaktuar me emrin my-ha-queue.

Ekzekutoni komandën e mëposhtme dhe verifikoni në dalje që radha ka politikën tonë 'ha' të caktuar dhe ka pid' në master dhe në një nyje pasqyre.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Tani mund të publikojmë një mesazh në radhë nga nyja kryesore dhe të ndalojmë RabbitMQ në nyjen kryesore.

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

Tani kthejeni atë duke u lidhur me nyjen e pasqyrës.

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

Më në fund, ne mund të rifillojmë nyjen tonë kryesore.

sudo systemctl start rabbitmq-server.service

Fshi përdoruesin e ftuar

Siç u përmend më parë, RabbitMQ krijon automatikisht një përdorues të ftuar me një fjalëkalim të paracaktuar të vizitorit. Do të ishte praktikë e keqe ta lini këtë përdorues të paracaktuar në një sistem të ekspozuar publikisht.

sudo rabbitmqctl delete_user guest

Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Si të instaloni Squid Proxy në CentOS

Si të instaloni Squid Proxy në CentOS

Squid është një program i popullarizuar, falas Linux që ju lejon të krijoni një përfaqësues në ueb përcjellës. Në këtë udhëzues, do të shihni se si të instaloni Squid në CentOS për t'ju kthyer

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Si të instaloni Apache Cassandra 3.11.x në CentOS 7

Si të instaloni Apache Cassandra 3.11.x në CentOS 7

Përdorimi i një sistemi të ndryshëm? Apache Cassandra është një sistem i menaxhimit të bazës së të dhënave NoSQL falas dhe me burim të hapur që është krijuar për të ofruar shkallëzim, të lartë

Si të instaloni Microweber në CentOS 7

Si të instaloni Microweber në CentOS 7

Përdorimi i një sistemi të ndryshëm? Microweber është një CMS me burim të hapur drag and drop dhe dyqan online. Kodi burimor Microweber është pritur në GitHub. Ky udhëzues do t'ju tregojë

Si të instaloni Mattermost 4.1 në CentOS 7

Si të instaloni Mattermost 4.1 në CentOS 7

Përdorimi i një sistemi të ndryshëm? Mattermost është një alternativë me burim të hapur, të vetë-strehuar për shërbimin e mesazheve Slack SAAS. Me fjalë të tjera, me Mattermost, ju rreth

Le të enkriptojmë në Plesk

Le të enkriptojmë në Plesk

Paneli i kontrollit Plesk përmban një integrim shumë të bukur për Lets Encrypt. Lets Encrypt është një nga ofruesit e vetëm SSL që jep plotësisht certifikata

Lejon enkriptimin në cPanel

Lejon enkriptimin në cPanel

Lets Encrypt është një autoritet certifikimi i dedikuar për të ofruar certifikata SSL pa pagesë. cPanel ka ndërtuar një integrim të pastër në mënyrë që ju dhe klienti juaj

Si të instaloni Concrete5 në CentOS 7

Si të instaloni Concrete5 në CentOS 7

Përdorimi i një sistemi të ndryshëm? Concrete5 është një CMS me burim të hapur që ofron shumë veçori dalluese dhe të dobishme për të ndihmuar redaktorët në prodhimin e përmbajtjes me lehtësi dhe

How to Install Review Board on CentOS 7

How to Install Review Board on CentOS 7

Using a Different System? Review Board is a free and open source tool for reviewing source code, documentation, images and many more. It is web-based softwar

Konfiguro vërtetimin HTTP me Nginx në CentOS 7

Konfiguro vërtetimin HTTP me Nginx në CentOS 7

Në këtë udhëzues, do të mësoni se si të konfiguroni vërtetimin HTTP për një server ueb Nginx që funksionon në CentOS 7. Kërkesat Për të filluar, do t'ju duhet

Si të instaloni YOURLS në CentOS 7

Si të instaloni YOURLS në CentOS 7

YOURLS (Shkurtësi juaj i URL-së) është një aplikacion për shkurtimin e URL-ve me burim të hapur dhe analitikë të të dhënave. Në këtë artikull, ne do të mbulojmë procesin e instalimit

Si të instaloni dhe konfiguroni ArangoDB në CentOS 7

Si të instaloni dhe konfiguroni ArangoDB në CentOS 7

Përdorimi i një sistemi të ndryshëm? Hyrje ArangoDB është një bazë të dhënash NoSQL me burim të hapur me një model fleksibël të dhënash për dokumente, grafikë dhe vlera-kyçe. Eshte

Përdorimi i Etckeeper për kontrollin e versionit të /etc

Përdorimi i Etckeeper për kontrollin e versionit të /etc

Hyrje Drejtoria /etc/ luan një rol kritik në mënyrën se si funksionon një sistem Linux. Arsyeja për këtë është sepse pothuajse çdo konfigurim i sistemit

Pse duhet të përdorni SSHFS? Si të montoni një sistem skedari në distancë me SSHFS në CentOS 6

Pse duhet të përdorni SSHFS? Si të montoni një sistem skedari në distancë me SSHFS në CentOS 6

Shumë administratorë të sistemit menaxhojnë sasi të mëdha serverash. Kur skedarët duhet të aksesohen nëpër serverë të ndryshëm, hyni në secilin individualisht rreth

Vendosja e një serveri Half Life 2 në CentOS 6

Vendosja e një serveri Half Life 2 në CentOS 6

Ky tutorial do të mbulojë procesin e instalimit të një serveri lojërash Half Life 2 në Sistemin CentOS 6. Hapi 1: Instalimi i parakushteve Për të vendosur ou

Si të instaloni Laravel GitScrum në CentOS 7

Si të instaloni Laravel GitScrum në CentOS 7

Laravel GitScrum, ose GitScrum është një mjet produktiviteti me burim të hapur i krijuar për të ndihmuar ekipet e zhvillimit të zbatojnë metodologjinë Scrum në një mënyrë të ngjashme.

Si të instaloni PowerDNS në CentOS

Si të instaloni PowerDNS në CentOS

Hyrje Në këtë tutorial të Vultr, do të mësoni se si të instaloni PowerDNS. PowerDNS është një program për ekzekutimin e serverëve tuaj të emrave. Është shumë e dobishme kur

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë