„RabbitMQ“ grupavimas „CentOS 7“.

RabbitMQ yra atvirojo kodo pranešimų brokeris, palaikantis AMQP, STOMP ir kitas komunikacijos technologijas. Jis plačiai naudojamas įmonės programose ir šiuolaikinėse mikro paslaugų architektūrose, kur veikia kaip asinchroninis pranešimų kanalas tarp skirtingų mikro paslaugų. Šiame vadove aprašoma, kaip galite sugrupuoti RabbitMQ keliuose CentOS 7 serveriuose, kad sudarytumėte didelio pasiekiamumo pranešimų tarpininką. Šioje pamokoje vienas serveris veiks kaip pagrindinis serveris, o kiti serveriai veiks kaip veidrodiniai serveriai, jei pagrindinis serveris taptų nepasiekiamas.

Būtinos sąlygos

Sukonfigūruokite ugniasienę

„CentOS“ ugniasienė ( firewalld) pagal numatytuosius nustatymus neleidžia jokio įeinančio srauto. Kad RabbitMQ būtų prieinama kitoms sistemoms tinkle ir už jo ribų, ir kad galėtume pasiekti valdymo konsolę, pirmiausia turime atidaryti kai kuriuos prievadus.

RabbitMQ žiniatinklio sąsajos valdymo konsolė pagal numatytuosius nustatymus klausosi prievado 15672. Norėtume padaryti valdymo pultą viešai prieinamą, kad galėtume ją pasiekti iš savo kompiuterio. Todėl nurodysime firewalldvisam laikui atidaryti prievadą 15672viešoje zonoje (kuri yra numatytoji ir aktyvi zona Vultr egzemplioriuje).

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

RabbitMQ mazgai turi turėti galimybę bendrauti vienas su kitu. Norėtume atidaryti reikiamus prievadus, bet tik per vidinį tinklą. Nenorime, kad kas nors internete galėtų administruoti arba tiesiogiai susisiekti su mūsų serveriais. Šios komandos daro prielaidą, kad mūsų serveriai yra 192.168.0.100/24potinklyje.

Pirmoji paslauga yra epmdlygiavertės paieškos paslauga, kuri pagal numatytuosius nustatymus klausosi prievado 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'

Norint palaikyti ryšį tarp mazgų ir CLI, RabbitMQ turi turėti galimybę bendrauti per prievadą 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 įrankiai bendrauja per prievadų 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'

Jei jūsų programoms reikalingas AMQP protokolas, taip pat turėsite atidaryti prievadus 5671ir 5672. Jei jums reikia turėti galimybę bendrauti per kitą protokolą, reikiamos informacijos apie RabbitMQ tinklo reikalavimus galite rasti oficialioje RabbitMQ dokumentacijoje .

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'

Dabar, kai firewalldsukonfigūruota, turime nurodyti jai iš naujo įkelti konfigūraciją.

sudo firewall-cmd --reload

Pakartokite šio skyriaus veiksmus visuose serveriuose.

Diegti rabbitmqadmin

Valdymo papildinys pateikiamas su Python įrankiu, rabbitmqadminkurį galima lengvai įdiegti sistemoje, kai valdymo papildinys įjungtas.

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

Konfigūruoti DNS

Norėdami identifikuoti serverius klasterizuodami, turite naudoti serverio prieglobos pavadinimus. Pagal numatytuosius nustatymus serveriams nepriskirtas DNS įrašas ir nepavyks prisijungti. Norėdami greitai tai įveikti, pridėkite pagrindinį ir veidrodinį pagrindinio kompiuterio pavadinimą prie /etc/hostsfailo naudodami mėgstamą redaktorių.

Pavyzdžiui, jūsų pagrindinio kompiuterio failas gali atrodyti taip. Atkreipkite dėmesį į du paskutinius įrašus, kurie leidžia serveriams identifikuoti vienas kitą pagal pagrindinio kompiuterio pavadinimą. Būtinai pakeiskite IP adresus į savo.

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

Sugrupuokite mazgus

Būtina importavimo sąlyga, kad mazgai galėtų prisijungti vienas prie kito, yra ta, kad visų mazgų Erlang slapukas yra identiškas. Pagal numatytuosius nustatymus kiekvienam mazgui bus priskirtas unikalus Erlang slapukas, todėl turite jį iš naujo sukonfigūruoti visuose mazguose.

Ši komanda nustatys „Erlang“ slapuką į „ WE<3COOKIES“, tačiau galite tai pakeisti pagal savo skonį. Atlikite tai visuose serveriuose.

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

Iš naujo paleiskite RabbitMQ visuose serveriuose, kad įsitikintumėte, jog Erlang slapukas tinkamai įkeltas iš naujo.

sudo systemctl restart rabbitmq-server.service

Vykdykite šias komandas visuose serveriuose, išskyrus pagrindinį serverį. Tai leis mazgams prisijungti prie pagrindinio serverio ir sudaryti klasterį.

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

Patikrinkite, ar mazgai prisijungė prie klasterio, vykdydami šią komandą.

sudo rabbitmqctl cluster_status

Visi jūsų mazgai bus rodomi išvesties nodesir running_nodesskiltyje. Nuo šiol jums nebereikia kartoti veiksmų kiekviename serveryje, konfigūracija bus automatiškai atspindėta kituose mazguose.

Sukurkite didelio prieinamumo politiką

Dabar, kai turime RabbitMQ mazgų grupę, galime ją naudoti kurdami didelio pasiekiamumo eiles ir mainus, nustatydami naują politiką. Šią politiką galima pridėti naudojant RabbitMQ valdymo pultą arba komandų eilutės sąsają.

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

Toliau pateiktame sąraše bus paaiškinta, ką reiškia kiekviena komandos dalis.

  • -p "/": naudokite šią strategiją "/"vhost (numatytasis po įdiegimo)
  • --priority 1: Politikos taikymo tvarka
  • --apply-to "all": Gali būti "queues", "exchanges"arba"all"
  • ha: pavadinimas, kurį suteikiame savo politikai
  • ".*": reguliarioji išraiška, naudojama sprendžiant, kurioms eilėms ar mainams taikoma ši politika. ".*"atitiks bet ką
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': politikos JSON atvaizdas. Šiame dokumente aprašoma, ko mes norime – tiksliai 2 mazgų, kuriuose duomenys automatiškai sinchronizuojami

Trumpai tariant, ši politika užtikrins, kad eilėje arba biržoje visada turėsime 2 duomenų kopijas tol, kol turėsime ir veiks bent 2 mazgai. Jei turite daugiau mazgų, galite padidinti reikšmę ha-params. Rekomenduojamas N/2 + 1mazgų kvorumas ( ). Turėdami daugiau duomenų kopijų, padidėtų disko, i/o ir tinklo naudojimas, todėl gali sumažėti našumas.

Jei norite atspindėti duomenis visuose klasterio mazguose, galite naudoti šį JSON dokumentą.

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

Jei norite atspindėti duomenis tik konkrečiuose mazguose (pavyzdžiui: node-1ir node-2), galite naudoti šiuos veiksmus.

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

Galite pakeisti reguliarųjį posakį, kad skirtingoms eilėms priskirtumėte skirtingas strategijas. Tarkime, kad turime šiuos tris mazgus:

  • triušis@meisteris
  • triušis@klientas-ha
  • triušis@produktas-ha

Tada galime sukurti dvi strategijas, dėl kurių eilių pavadinimas prasideda „klientas“, kurios bus atspindimos rabbit@client-hamazge, o visos eilės, kurių pavadinimas prasideda „produktas“, bus atspindimos rabbit@product-hamazge.

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

Maža pastaba: išskirtinės eilės niekada nėra atspindimos arba ilgalaikės RabbitMQ, net jei ši politika atitiktų tokias eiles. Išskirtinės eilės automatiškai sunaikinamos klientui atsijungus, todėl nebūtų jokios naudos jas kopijuoti į kitą serverį. Jei serveris sugestų, klientas nuo jo atsijungtų ir eilė būtų sunaikinta automatiškai. Veidrodiniai egzemplioriai taip pat būtų sunaikinti.

Sąrankos testavimas

Norėdami išbandyti sugrupuotą sąranką, galime sukurti naują eilę naudodami komandų eilutės sąsają per valdymo konsolę.

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

Taip bus sukurta ilgalaikė eilė numatytame /vhost pavadinimu my-ha-queue.

Vykdykite šią komandą ir išvestyje patikrinkite, ar eilei priskirta mūsų „ha“ politika, o pagrindiniame ir veidrodiniame mazge yra pid.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Dabar galime paskelbti pranešimą į eilę iš pagrindinio mazgo ir sustabdyti RabbitMQ pagrindiniame mazge.

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

Dabar susigrąžinkite jį prijungę prie veidrodinio mazgo.

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

Galiausiai galime iš naujo paleisti pagrindinį mazgą.

sudo systemctl start rabbitmq-server.service

Ištrinkite svečią vartotoją

Kaip minėta anksčiau, RabbitMQ automatiškai sukuria svečio vartotoją su numatytuoju svečio slaptažodžiu. Būtų bloga praktika palikti šį numatytąjį vartotoją viešai atskleistoje sistemoje.

sudo rabbitmqctl delete_user guest

Įdiekite „Plesk“ „CentOS 7“.

Įdiekite „Plesk“ „CentOS 7“.

Naudojate kitą sistemą? Plesk yra patentuotas žiniatinklio prieglobos valdymo skydelis, leidžiantis vartotojams administruoti savo asmenines ir (arba) klientų svetaines, duomenų bazes

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Squid yra populiari nemokama „Linux“ programa, leidžianti sukurti persiuntimo žiniatinklio tarpinį serverį. Šiame vadove pamatysite, kaip įdiegti „Squid“ „CentOS“, kad paverstumėte jus

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Įvadas Lighttpd yra „Apache“ šakutė, skirta daug mažiau išteklių imti. Jis yra lengvas, todėl jo pavadinimas ir yra gana paprastas naudoti. Įdiegti

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

VULTR neseniai atliko pakeitimus, ir dabar viskas turėtų veikti gerai, kai įjungta „NetworkManager“. Jei norite išjungti

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

Icinga2 yra galinga stebėjimo sistema, o kai naudojama pagrindinio kliento modelyje, ji gali pakeisti NRPE pagrįstų stebėjimo patikrų poreikį. Meistras-klientas

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Naudojate kitą sistemą? Mattermost yra atvirojo kodo, savarankiškai priglobta alternatyva Slack SAAS pranešimų paslaugai. Kitaip tariant, naudodami Mattermost, jūs apytiksliai

Leidžia šifruoti Plesk

Leidžia šifruoti Plesk

„Plesk“ valdymo skydelyje yra labai graži „Lets Encrypt“ integracija. „Lets Encrypt“ yra vienas iš vienintelių SSL teikėjų, išduodančių visus sertifikatus

Leidžia šifruoti „cPanel“.

Leidžia šifruoti „cPanel“.

„Lets Encrypt“ yra sertifikatų institucija, skirta nemokamai teikti SSL sertifikatus. cPanel sukūrė tvarkingą integraciją, kad jūs ir jūsų klientas

Kaip įdiegti „Concrete5“ „CentOS 7“.

Kaip įdiegti „Concrete5“ „CentOS 7“.

Naudojate kitą sistemą? Concrete5 yra atvirojo kodo TVS, kuri siūlo daug išskirtinių ir naudingų funkcijų, padedančių redaktoriams lengvai sukurti turinį

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Naudojate kitą sistemą? „Review Board“ yra nemokamas atvirojo kodo įrankis, skirtas šaltinio kodui, dokumentacijai, vaizdams ir daugeliui kitų peržiūrėti. Tai internetinė programinė įranga

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Šiame vadove sužinosite, kaip nustatyti HTTP autentifikavimą Nginx žiniatinklio serveriui, kuriame veikia CentOS 7. Reikalavimai Norėdami pradėti, jums reikės

Kaip įdiegti YOURLS „CentOS 7“.

Kaip įdiegti YOURLS „CentOS 7“.

YOURLS (Your Own URL Shortener) yra atvirojo kodo URL sutrumpinimo ir duomenų analizės programa. Šiame straipsnyje apžvelgsime diegimo procesą

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Naudojate kitą sistemą? Įvadas ArangoDB yra atvirojo kodo NoSQL duomenų bazė su lanksčiu duomenų modeliu dokumentams, grafikams ir raktų reikšmėms. tai yra

Etckeeper naudojimas versijai valdyti /etc

Etckeeper naudojimas versijai valdyti /etc

Įvadas Katalogas /etc/ vaidina lemiamą vaidmenį veikiant Linux sistemai. Taip yra todėl, kad beveik visos sistemos konfigūracijos

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Daugelis sistemos administratorių valdo didelius serverių kiekius. Kai failus reikia pasiekti skirtinguose serveriuose, prisijungiant prie kiekvieno atskirai apytiksliai

„Half Life 2“ serverio nustatymas „CentOS 6“.

„Half Life 2“ serverio nustatymas „CentOS 6“.

Ši pamoka apims Half Life 2 žaidimų serverio diegimą CentOS 6 sistemoje. 1 veiksmas: būtinų sąlygų įdiegimas Norėdami nustatyti ou

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Laravel GitScrum arba GitScrum yra atvirojo kodo produktyvumo įrankis, skirtas padėti kūrimo komandoms įgyvendinti Scrum metodiką panašiai

Kaip įdiegti „PowerDNS“ „CentOS“.

Kaip įdiegti „PowerDNS“ „CentOS“.

Įvadas Šiame „Vultr“ vadove sužinosite, kaip įdiegti „PowerDNS“. PowerDNS yra programa, skirta paleisti savo vardų serverius. Tai labai naudinga, kai

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Galite nukopijuoti ir įklijuoti šį bash scenarijų į Vultr valdymo skydelio paleisties scenarijaus sritį. Jis įdiegs visus reikalingus paketus į ru

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį