RabbitMQ grupēšana operētājsistēmā CentOS 7

RabbitMQ ir atvērtā pirmkoda ziņojumu brokeris, kas atbalsta AMQP, STOMP un citas komunikācijas tehnoloģijas. To plaši izmanto uzņēmumu lietojumprogrammās un modernās mikropakalpojumu arhitektūrās, kur tas darbojas kā asinhrons ziņojumu kanāls starp dažādiem mikropakalpojumiem. Šajā rokasgrāmatā ir aprakstīts, kā RabbitMQ var grupēt vairākos CentOS 7 serveros, lai izveidotu augstas pieejamības ziņojumu starpnieku. Šajā apmācībā viens serveris darbosies kā galvenais serveris, bet pārējie serveri darbosies kā spoguļserveri, ja galvenais serveris kļūs nepieejams.

Priekšnoteikumi

Konfigurējiet ugunsmūri

CentOS ugunsmūris ( firewalld) pēc noklusējuma neatļauj ienākošo trafiku. Lai RabbitMQ būtu pieejams citām sistēmām tīklā un ārpus tā un ļautu mums piekļūt pārvaldības konsolei, vispirms ir jāatver daži porti.

RabbitMQ tīmekļa saskarnes pārvaldības konsole pēc noklusējuma klausās portā 15672. Mēs vēlamies padarīt pārvaldības konsoli publiski pieejamu, lai mēs varētu tai piekļūt no sava datora. Tāpēc mēs norādīsim firewalldpastāvīgi atvērt portu 15672publiskajā zonā (kas ir noklusējuma un aktīvā zona Vultr instancē).

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

RabbitMQ mezgliem jāspēj sazināties vienam ar otru. Mēs vēlētos atvērt nepieciešamos portus, bet tikai caur iekšējo tīklu. Mēs nevēlamies, lai kāds interneta lietotājs varētu administrēt vai tieši sazināties ar mūsu serveriem. Šīs komandas pieņem, ka mūsu serveri atrodas 192.168.0.100/24apakštīklā.

Pirmais pakalpojums ir epmdvienādranga atklāšanas pakalpojums, kas pēc noklusējuma klausās 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'

Lai nodrošinātu starpmezglu un CLI saziņu, RabbitMQ ir jāspēj sazināties, izmantojot portu 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 rīki sazinās portu diapazonā 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'

Ja jūsu lietojumprogrammām ir nepieciešams AMQP protokols, jums būs jāatver arī porti 5671un 5672. Ja jums ir jāspēj sazināties, izmantojot citu protokolu, nepieciešamo informāciju par RabbitMQ tīkla prasībām varat atrast oficiālajā RabbitMQ dokumentācijā .

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'

Tagad, kad tas firewalldir konfigurēts, mums ir jānorāda, lai tā atkārtoti ielādētu konfigurāciju.

sudo firewall-cmd --reload

Atkārtojiet šīs sadaļas darbības visos serveros.

Uzstādīt rabbitmqadmin

Pārvaldības spraudnis ir aprīkots ar Python rīku, rabbitmqadminko var viegli instalēt sistēmā, tiklīdz pārvaldības spraudnis ir iespējots.

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

Konfigurēt DNS

Klasterizācijas laikā ir jāizmanto servera resursdatora nosaukumi, lai identificētu serverus. Pēc noklusējuma serveriem nav piešķirts DNS ieraksts, un savienojums neizdosies. Lai to ātri pārvarētu, pievienojiet /etc/hostsfailam galveno un spoguļresursa nosaukumu, izmantojot savu iecienītāko redaktoru.

Piemēram, jūsu galvenā saimniekdatora fails var izskatīties šādi. Ievērojiet pēdējos divus ierakstus, kas ļauj serveriem identificēt viens otru pēc resursdatora nosaukuma. Noteikti nomainiet IP adreses uz savām.

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

Sagrupējiet mezglus

Importēšanas priekšnoteikums, lai mezgli varētu pievienoties viens otram, ir tas, ka visu mezglu Erlang sīkfails ir identisks. Pēc noklusējuma katram mezglam tiks piešķirts unikāls Erlang sīkfails, tāpēc tas ir jāpārkonfigurē visos mezglos.

Šī komanda iestatīs Erlang sīkfailu uz " WE<3COOKIES", taču varat to mainīt pēc saviem ieskatiem. Dariet to visos serveros.

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

Restartējiet RabbitMQ visos serveros, lai pārliecinātos, ka Erlang sīkfails ir pareizi ielādēts.

sudo systemctl restart rabbitmq-server.service

Izpildiet šādas komandas visos serveros, izņemot galvenajā serverī. Tas ļaus mezgliem pievienoties galvenajam serverim un izveidot kopu.

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

Pārbaudiet, vai mezgli ir pievienojušies klasterim, izpildot šo komandu.

sudo rabbitmqctl cluster_status

Visas jūsu mezgliem parādīsies nodesun running_nodessadaļā produkciju. No šī brīža jums vairs nav jāatkārto darbības katrā serverī, konfigurācija tiks automātiski atspoguļota citos mezglos.

Izveidojiet augstas pieejamības politiku

Tagad, kad mums ir RabbitMQ mezglu kopa, mēs varam to izmantot, lai izveidotu augstas pieejamības rindas un apmaiņu, iestatot jaunu politiku. Šo politiku var pievienot, izmantojot RabbitMQ pārvaldības konsoli vai komandrindas saskarni.

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

Nākamajā sarakstā ir paskaidrots, ko nozīmē katra komandas daļa.

  • -p "/": izmantojiet šo politiku "/"vhost (pēc instalēšanas noklusējuma)
  • --priority 1: secība, kādā piemērojamas politikas
  • --apply-to "all": Var būt "queues", "exchanges"vai"all"
  • ha: nosaukums, ko piešķiram savai politikai
  • ".*": regulārā izteiksme, kas tiek izmantota, lai izlemtu, kurām rindām vai apmaiņām šī politika tiek piemērota. ".*"piestāvēs jebkam
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': politikas JSON attēlojums. Šajā dokumentā ir aprakstīts, ka mēs vēlamies - tieši 2 mezglus, uz kuriem dati tiek automātiski sinhronizēti

Īsāk sakot, šī politika nodrošinās, ka mums vienmēr būs 2 datu kopijas rindā vai apmaiņā, ja vien mums ir izveidoti un darbojas vismaz 2 mezgli. Ja jums ir vairāk mezglu, varat palielināt vērtību ha-params. Ieteicams N/2 + 1mezglu kvorums ( ). Ja jums ir vairāk datu kopiju, palielināsies diska, i/o un tīkla lietojums, kā rezultātā var pasliktināties veiktspēja.

Ja vēlaties atspoguļot datus visos klastera mezglos, varat izmantot šo JSON dokumentu.

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

Ja vēlaties atspoguļot datus tikai noteiktos mezglos (piemēram: node-1un node-2), varat izmantot tālāk norādīto.

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

Varat mainīt regulāro izteiksmi, lai dažādām rindām piešķirtu dažādas politikas. Pieņemsim, ka mums ir šādi trīs mezgli:

  • trusis@meistars
  • zaķis@klients-ha
  • trusis@produkts-ha

Pēc tam mēs varam izveidot divas politikas, kuru rezultātā rindas ar nosaukumu, kas sākas ar "klients", tiks atspoguļotas rabbit@client-hamezglā, un visas rindas, kuru nosaukums sākas ar "produkts", tiks atspoguļotas rabbit@product-hamezglā.

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

Šeit ir neliela piezīme: ekskluzīvas rindas nekad netiek atspoguļotas vai noturīgas pakalpojumā RabbitMQ, pat ja šī politika atbilstu šādām rindām. Ekskluzīvas rindas tiek automātiski iznīcinātas, tiklīdz klients atvienojas, un tādēļ nebūtu lietderīgi to replicēt citā serverī. Ja serveris neizdosies, klients atvienotos no tā un rinda tiktu automātiski iznīcināta. Tiks iznīcināti arī spoguļattēli.

Iestatījuma pārbaude

Lai pārbaudītu grupēto iestatīšanu, mēs varam izveidot jaunu rindu, izmantojot komandrindas interfeisu, izmantojot pārvaldības konsoli.

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

Tas izveidos ilgstošu rindu noklusējuma /vhost ar nosaukumu my-ha-queue.

Palaidiet šo komandu un izvadā pārbaudiet, vai rindai ir piešķirta mūsu “ha” politika un vai galvenajā un spoguļmezglā ir pid.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Tagad mēs varam publicēt ziņojumu rindā no galvenā mezgla un apturēt RabbitMQ galvenajā mezglā.

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

Tagad iegūstiet to atpakaļ, izveidojot savienojumu ar spoguļa mezglu.

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

Visbeidzot, mēs varam restartēt mūsu galveno mezglu.

sudo systemctl start rabbitmq-server.service

Dzēst viesa lietotāju

Kā minēts iepriekš, RabbitMQ automātiski izveido viesa lietotāju ar noklusējuma viesa paroli. Būtu slikta prakse atstāt šo noklusējuma lietotāju publiski atklātā sistēmā.

sudo rabbitmqctl delete_user guest

Instalējiet Plesk operētājsistēmā CentOS 7

Instalējiet Plesk operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Plesk ir patentēts tīmekļa mitinātāja vadības panelis, kas ļauj lietotājiem administrēt savas personīgās un/vai klientu vietnes, datu bāzes

Kā instalēt Squid starpniekserveri CentOS

Kā instalēt Squid starpniekserveri CentOS

Squid ir populāra bezmaksas Linux programma, kas ļauj izveidot pāradresācijas tīmekļa starpniekserveri. Šajā rokasgrāmatā jūs redzēsit, kā instalēt Squid uz CentOS, lai jūs pārvērstu

Kā instalēt Lighttpd (LLMP Stack) operētājsistēmā CentOS 6

Kā instalēt Lighttpd (LLMP Stack) operētājsistēmā CentOS 6

Ievads Lighttpd ir Apache dakša, kuras mērķis ir daudz mazāk resursietilpīgs. Tas ir viegls, tāpēc arī tā nosaukums ir diezgan vienkārši lietojams. Instalēšana

Statiskā tīkla un IPv6 konfigurēšana operētājsistēmā CentOS 7

Statiskā tīkla un IPv6 konfigurēšana operētājsistēmā CentOS 7

VULTR nesen veica izmaiņas, un tagad visam vajadzētu darboties labi, ja ir iespējots NetworkManager. Ja vēlaties atspējot

Icinga2 modificēšana, lai izmantotu galveno/klienta modeli operētājsistēmā CentOS 6 vai CentOS 7

Icinga2 modificēšana, lai izmantotu galveno/klienta modeli operētājsistēmā CentOS 6 vai CentOS 7

Icinga2 ir spēcīga uzraudzības sistēma, un, ja to izmanto galvenā klienta modelī, tā var aizstāt vajadzību pēc NRPE balstītām uzraudzības pārbaudēm. Meistars-klients

Kā instalēt Apache Cassandra 3.11.x operētājsistēmā CentOS 7

Kā instalēt Apache Cassandra 3.11.x operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Apache Cassandra ir bezmaksas un atvērtā koda NoSQL datu bāzes pārvaldības sistēma, kas ir izstrādāta, lai nodrošinātu mērogojamību, hig.

Kā instalēt Microweber operētājsistēmā CentOS 7

Kā instalēt Microweber operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Microweber ir atvērtā koda vilkšanas un nomešanas CMS un tiešsaistes veikals. Microweber pirmkods tiek mitināts vietnē GitHub. Šī rokasgrāmata jums parādīs

Kā instalēt Mattermost 4.1 operētājsistēmā CentOS 7

Kā instalēt Mattermost 4.1 operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Mattermost ir atvērtā pirmkoda, pašmitināta alternatīva Slack SAAS ziņojumapmaiņas pakalpojumam. Citiem vārdiem sakot, izmantojot Mattermost, jūs apm

Minecraft serveru tīkla izveide ar BungeeCord operētājsistēmā Debian 8, Debian 9 vai CentOS 7

Minecraft serveru tīkla izveide ar BungeeCord operētājsistēmā Debian 8, Debian 9 vai CentOS 7

Kas jums būs nepieciešams Vultr VPS ar vismaz 1 GB RAM. SSH piekļuve (ar root/administratora tiesībām). 1. darbība: BungeeCord instalēšana Vispirms vispirms

Ļauj šifrēt vietnē Plesk

Ļauj šifrēt vietnē Plesk

Plesk vadības panelī ir ļoti jauka Lets Encrypt integrācija. Lets Encrypt ir viens no vienīgajiem SSL nodrošinātājiem, kas pilnībā izsniedz sertifikātus

Ļauj šifrēt cPanel

Ļauj šifrēt cPanel

Lets Encrypt ir sertifikātu iestāde, kas nodrošina SSL sertifikātus bez maksas. cPanel ir izveidojis glītu integrāciju, lai jūs un jūsu klients

Kā instalēt Concrete5 operētājsistēmā CentOS 7

Kā instalēt Concrete5 operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Concrete5 ir atvērtā pirmkoda CMS, kas piedāvā daudzas atšķirīgas un noderīgas funkcijas, lai palīdzētu redaktoriem viegli izveidot saturu.

Kā instalēt pārskata paneli sistēmā CentOS 7

Kā instalēt pārskata paneli sistēmā CentOS 7

Vai izmantojat citu sistēmu? Pārskatīšanas padome ir bezmaksas atvērtā pirmkoda rīks pirmkoda, dokumentācijas, attēlu un daudz ko citu pārskatīšanai. Tā ir tīmekļa programmatūra

Iestatiet HTTP autentifikāciju, izmantojot Nginx operētājsistēmā CentOS 7

Iestatiet HTTP autentifikāciju, izmantojot Nginx operētājsistēmā CentOS 7

Šajā rokasgrāmatā jūs uzzināsit, kā iestatīt HTTP autentifikāciju Nginx tīmekļa serverim, kas darbojas operētājsistēmā CentOS 7. Prasības Lai sāktu darbu, jums būs nepieciešams

Kā instalēt YOURLS operētājsistēmā CentOS 7

Kā instalēt YOURLS operētājsistēmā CentOS 7

YOURLS (Your Own URL Shortener) ir atvērtā koda URL saīsināšanas un datu analīzes lietojumprogramma. Šajā rakstā mēs apskatīsim instalēšanas procesu

Kā instalēt un konfigurēt ArangoDB operētājsistēmā CentOS 7

Kā instalēt un konfigurēt ArangoDB operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Ievads ArangoDB ir atvērtā koda NoSQL datu bāze ar elastīgu datu modeli dokumentiem, grafikiem un atslēgu vērtībām. Tas ir

Etckeeper izmantošana /etc versiju kontrolei

Etckeeper izmantošana /etc versiju kontrolei

Ievads /etc/ direktorijam ir izšķiroša nozīme Linux sistēmas darbībā. Iemesls tam ir gandrīz visas sistēmas konfigurācijas

Kāpēc jums vajadzētu izmantot SSHFS? Kā uzstādīt attālo failu sistēmu ar SSHFS operētājsistēmā CentOS 6

Kāpēc jums vajadzētu izmantot SSHFS? Kā uzstādīt attālo failu sistēmu ar SSHFS operētājsistēmā CentOS 6

Daudzi sistēmu administratori pārvalda lielu daudzumu serveru. Ja failiem ir jāpiekļūst dažādos serveros, piesakieties katrā atsevišķi apm

Half Life 2 servera iestatīšana operētājsistēmā CentOS 6

Half Life 2 servera iestatīšana operētājsistēmā CentOS 6

Šajā apmācībā tiks apskatīts Half Life 2 spēļu servera instalēšanas process sistēmā CentOS 6. 1. darbība: priekšnosacījumu instalēšana Lai iestatītu ou

Kā instalēt Laravel GitScrum operētājsistēmā CentOS 7

Kā instalēt Laravel GitScrum operētājsistēmā CentOS 7

Laravel GitScrum jeb GitScrum ir atvērtā pirmkoda produktivitātes rīks, kas izstrādāts, lai palīdzētu izstrādātāju komandām ieviest Scrum metodoloģiju līdzīgā veidā.

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk