Združevanje RabbitMQ v CentOS 7

RabbitMQ je odprtokodni posrednik za sporočila, ki podpira AMQP, STOMP in druge komunikacijske tehnologije. Široko se uporablja v podjetniških aplikacijah in sodobnih arhitekturah mikro storitev, kjer deluje kot asinhroni kanal sporočil med različnimi mikro storitvami. Ta priročnik bo opisal, kako lahko združite RabbitMQ v več strežnikov CentOS 7, da ustvarite posrednika sporočil z visoko razpoložljivostjo. V tej vadnici bo en strežnik deloval kot glavni strežnik, drugi strežniki pa bodo delovali kot zrcalni strežniki, če glavni strežnik ne bo na voljo.

Predpogoji

Konfigurirajte požarni zid

Požarni zid CentOS, ( firewalld), privzeto ne dovoljuje nobenega dohodnega prometa. Da bo RabbitMQ na voljo za druge sisteme v omrežju in zunaj njega ter da nam omogočimo dostop do upravljalne konzole, moramo najprej odpreti nekatera vrata.

Upravljalna konzola spletnega vmesnika RabbitMQ privzeto posluša vrata 15672. Upravljalno konzolo želimo narediti javno dostopno, tako da lahko do nje dostopamo iz našega računalnika. Zato bomo naročili firewalldtrajno odprtje vrat 15672v javni coni (ki je privzeto in aktivno območje na primerku Vultr).

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

Vozlišča RabbitMQ morajo biti sposobna komunicirati med seboj. Želeli bi odpreti potrebna vrata, vendar le prek notranjega omrežja. Ne želimo, da bi lahko kdor koli na internetu upravljal naše strežnike ali jih neposredno kontaktiral. Naslednji ukazi predvidevajo, da so naši strežniki v 192.168.0.100/24podomrežju.

Prva storitev je storitev epmdodkrivanja vrstnikov, ki privzeto posluša na vratih 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'

Za komunikacijo med vozlišči in CLI mora biti RabbitMQ sposoben komunicirati prek vrat 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'

Orodja CLI komunicirajo prek obsega vrat 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'

Če vaše aplikacije potrebujejo protokol AMQP, boste morali odpreti tudi vrata 5671in 5672. Če morate imeti možnost komuniciranja prek drugega protokola, lahko najdete potrebne informacije o omrežnih zahtevah RabbitMQ v uradni dokumentaciji 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'

Zdaj, ko firewalldje konfiguriran, mu moramo naročiti, naj znova naloži konfiguracijo.

sudo firewall-cmd --reload

Ponovite korake iz tega razdelka na vseh strežnikih.

Namestite rabbitmqadmin

Vtičnik za upravljanje je opremljen z orodjem Python, rabbitmqadminki ga je mogoče enostavno namestiti v sistem, ko je vtičnik za upravljanje omogočen.

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

Konfigurirajte DNS

Za identifikacijo strežnikov pri združevanju v gruče morate uporabiti imena gostiteljev strežnika. Strežnikom privzeto ni dodeljen zapis DNS in povezava ne bo uspela. Če želite to hitro premagati, dodajte glavno in zrcalno ime gostitelja v /etc/hostsdatoteko s svojim najljubšim urejevalnikom.

Na primer, datoteka gostiteljev vašega mojstra je lahko videti takole. Bodite pozorni na zadnja dva zapisa, ki strežnikom omogočata, da se med seboj identificirajo po imenu gostitelja. Ne pozabite spremeniti naslova IP v svoje.

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

Združite vozlišča

Predpogoj za uvoz, ki omogoča povezovanje vozlišč med seboj, je, da so piškotki Erlang vseh vozlišč enaki. Privzeto bo vsakemu vozlišču dodeljen edinstven piškotek Erlang, zato ga morate znova konfigurirati na vseh vozliščih.

Naslednji ukaz bo piškotek Erlang nastavil na " WE<3COOKIES", vendar ga lahko spremenite po svojih željah. To naredite na vseh strežnikih.

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

Znova zaženite RabbitMQ na vseh strežnikih, da se prepričate, da je piškotek Erlang pravilno ponovno naložen.

sudo systemctl restart rabbitmq-server.service

Izvedite naslednje ukaze na vseh strežnikih razen na glavnem strežniku. To bo omogočilo, da se vozlišča pridružijo glavnemu strežniku in tvorijo gručo.

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

Preverite, ali so se vozlišča pridružila gruči, tako da zaženete naslednji ukaz.

sudo rabbitmqctl cluster_status

Vsa vaša vozlišča se bodo pojavila v nodesin running_nodesrazdelku izhoda. Od zdaj naprej vam ni več treba ponavljati korakov na vsakem strežniku, konfiguracija bo samodejno zrcaljena na druga vozlišča.

Ustvarite politiko visoke razpoložljivosti

Zdaj, ko imamo gručo vozlišč RabbitMQ, lahko to uporabimo za izdelavo čakalnih vrst in izmenjav z visoko razpoložljivostjo z nastavitvijo novega pravilnika. Ta pravilnik lahko dodate prek konzole za upravljanje RabbitMQ ali z vmesnikom ukazne vrstice.

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

Naslednji seznam bo pojasnil, kaj pomeni vsak del ukaza.

  • -p "/": Uporabite ta pravilnik na "/"vhostu (privzeto po namestitvi)
  • --priority 1: vrstni red, v katerem se uporabljajo pravilniki
  • --apply-to "all": Lahko je "queues", "exchanges"oz"all"
  • ha: Ime, ki ga damo naši politiki
  • ".*": Regularni izraz, ki se uporablja za odločanje, za katere čakalne vrste ali izmenjave se uporablja ta pravilnik. ".*"bo ustrezala vsem
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': JSON predstavitev pravilnika. Ta dokument opisuje, da želimo - točno 2 vozlišči, na katerih se podatki samodejno sinhronizirajo

Skratka, ta politika bo zagotovila, da bomo vedno imeli 2 kopiji podatkov v čakalni vrsti ali izmenjavi, dokler imamo vsaj 2 vozlišči, ki delujeta. Če imate več vozlišč, lahko povečate vrednost ha-params. Priporočljiv je sklepčnost ( N/2 + 1) vozlišč. Če imate več kopij vaših podatkov, bi to povzročilo večjo porabo diska, v/iz in omrežja, kar bi lahko povzročilo poslabšano zmogljivost.

Če želite podatke zrcaliti na vsa vozlišča v gruči, lahko uporabite naslednji dokument JSON.

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

Če želite podatke zrcaliti samo na določena vozlišča (na primer: node-1in node-2), lahko uporabite naslednje.

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

Regularni izraz lahko spremenite tako, da različnim čakalnim vrstam dodelite različne pravilnike. Recimo, da imamo naslednja tri vozlišča:

  • zajec@master
  • zajec@klient-ha
  • zajec@izdelek-ha

Nato lahko ustvarimo dva pravilnika, ki bosta povzročila, da bodo čakalne vrste imele ime, ki se začne z "client", da se zrcalijo v rabbit@client-havozlišče in da se vse čakalne vrste, ki imajo ime, ki se začne z "product", zrcalijo v rabbit@product-havozlišče.

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

Majhna pripomba: ekskluzivne čakalne vrste niso nikoli zrcaljene ali trajne v RabbitMQ, tudi če bi ta pravilnik ustrezal takšnim čakalnim vrstam. Ekskluzivne čakalne vrste se samodejno uničijo, ko odjemalec prekine povezavo, zato ga ne bi bilo koristno podvajati na drug strežnik. Če bi strežnik odpovedal, bi odjemalec prekinil povezavo z njim in čakalna vrsta bi bila samodejno uničena. Uničeni bi bili tudi zrcaljeni primerki.

Testiranje nastavitve

Da bi preizkusili gručasto nastavitev, lahko ustvarimo novo čakalno vrsto z vmesnikom ukazne vrstice prek upravljalne konzole.

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

To bo ustvarilo trajno čakalno vrsto na privzetem /vhostu z imenom my-ha-queue.

Zaženite naslednji ukaz in v izhodu preverite, ali ima čakalna vrsta dodeljeno našo politiko 'ha' in ima pid-je na glavnem in zrcalnem vozlišču.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Zdaj lahko objavimo sporočilo v čakalni vrsti iz glavnega vozlišča in zaustavimo RabbitMQ na glavnem vozlišču.

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

Zdaj ga vrnite tako, da se povežete z zrcalnim vozliščem.

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

Končno lahko znova zaženemo naše glavno vozlišče.

sudo systemctl start rabbitmq-server.service

Izbriši gostujočega uporabnika

Kot smo že omenili, RabbitMQ samodejno ustvari gostujočega uporabnika s privzetim geslom za goste. Slaba praksa bi bila, če bi tega privzetega uporabnika pustili na javno izpostavljenem sistemu.

sudo rabbitmqctl delete_user guest

Namestite Plesk na CentOS 7

Namestite Plesk na CentOS 7

Uporaba drugega sistema? Plesk je lastniška nadzorna plošča spletnega gostitelja, ki uporabnikom omogoča upravljanje svojih osebnih in/ali strank spletnih mest, baz podatkov

Kako namestiti Squid Proxy na CentOS

Kako namestiti Squid Proxy na CentOS

Squid je priljubljen brezplačen program za Linux, ki vam omogoča ustvarjanje spletnega proxyja za posredovanje. V tem priročniku boste videli, kako namestiti Squid na CentOS, da vas obrne

Kako namestiti Lighttpd (LLMP Stack) na CentOS 6

Kako namestiti Lighttpd (LLMP Stack) na CentOS 6

Uvod Lighttpd je razdelek Apache, katerega namen je biti veliko manj intenziven vir. Je lahek, od tod tudi njegovo ime, in je precej preprost za uporabo. Namestite

Konfiguriranje statičnega omrežja in IPv6 na CentOS 7

Konfiguriranje statičnega omrežja in IPv6 na CentOS 7

VULTR je pred kratkim naredil spremembe na svoji strani in zdaj bi moralo vse delovati v redu iz škatle z omogočenim NetworkManagerjem. Če želite onemogočiti

Spreminjanje Icinga2 za uporabo modela Master/Client na CentOS 6 ali CentOS 7

Spreminjanje Icinga2 za uporabo modela Master/Client na CentOS 6 ali CentOS 7

Icinga2 je zmogljiv sistem za spremljanje in če se uporablja v modelu glavni-odjemalec, lahko nadomesti potrebo po nadzornih pregledih, ki temeljijo na NRPE. Glavni naročnik

Kako namestiti Apache Cassandra 3.11.x na CentOS 7

Kako namestiti Apache Cassandra 3.11.x na CentOS 7

Uporaba drugega sistema? Apache Cassandra je brezplačen in odprtokodni sistem za upravljanje baz podatkov NoSQL, ki je zasnovan tako, da zagotavlja razširljivost, visoko

Kako namestiti Microweber na CentOS 7

Kako namestiti Microweber na CentOS 7

Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal

Kako namestiti Mattermost 4.1 na CentOS 7

Kako namestiti Mattermost 4.1 na CentOS 7

Uporaba drugega sistema? Mattermost je odprtokodna alternativa sporočilni storitvi Slack SAAS, ki jo gosti sami. Z drugimi besedami, z Mattermostom si pribl

Ustvarjanje omrežja strežnikov Minecraft z BungeeCord na Debian 8, Debian 9 ali CentOS 7

Ustvarjanje omrežja strežnikov Minecraft z BungeeCord na Debian 8, Debian 9 ali CentOS 7

Kaj potrebujete Vultr VPS z vsaj 1 GB RAM-a. SSH dostop (z root/administrativnimi pravicami). 1. korak: Namestitev BungeeCord Najprej najprej

Omogočamo šifriranje na Plesku

Omogočamo šifriranje na Plesku

Nadzorna plošča Plesk ima zelo lepo integracijo za Lets Encrypt. Lets Encrypt je eden edinih ponudnikov SSL, ki izdaja potrdila v celoti

Namestite MariaDB 10 na CentOS 6

Namestite MariaDB 10 na CentOS 6

V času pisanja je MariaDB 10.1 razvojna različica MariaDB. Temelji na MariaDB 5.5 in vključuje funkcije, prenesene nazaj iz MySQL 5.6. Ther

Omogoča šifriranje na cPanelu

Omogoča šifriranje na cPanelu

Lets Encrypt je certifikacijski organ, ki je namenjen brezplačnemu zagotavljanju certifikatov SSL. cPanel je zgradil lepo integracijo za vas in vašo stranko

Kako namestiti Concrete5 na CentOS 7

Kako namestiti Concrete5 na CentOS 7

Uporaba drugega sistema? Concrete5 je odprtokodni CMS, ki ponuja številne značilne in uporabne funkcije za pomoč urednikom pri preprosti izdelavi vsebine.

Kako namestiti pregledno ploščo na CentOS 7

Kako namestiti pregledno ploščo na CentOS 7

Uporaba drugega sistema? Review Board je brezplačno in odprtokodno orodje za pregledovanje izvorne kode, dokumentacije, slik in še veliko več. Gre za spletno programsko opremo

Nastavite preverjanje pristnosti HTTP z Nginxom na CentOS 7

Nastavite preverjanje pristnosti HTTP z Nginxom na CentOS 7

V tem priročniku se boste naučili, kako nastaviti preverjanje pristnosti HTTP za spletni strežnik Nginx, ki deluje na CentOS 7. Zahteve Za začetek boste potrebovali

Kako namestiti YOURLS na CentOS 7

Kako namestiti YOURLS na CentOS 7

YOURLS (Your Own URL Shortener) je odprtokodna aplikacija za krajšanje URL-jev in analitiko podatkov. V tem članku bomo obravnavali postopek namestitve

Kako namestiti in konfigurirati ArangoDB na CentOS 7

Kako namestiti in konfigurirati ArangoDB na CentOS 7

Uporaba drugega sistema? Uvod ArangoDB je odprtokodna baza podatkov NoSQL s prilagodljivim podatkovnim modelom za dokumente, grafe in ključe-vrednosti. je

Uporaba Etckeeperja za nadzor različic /etc

Uporaba Etckeeperja za nadzor različic /etc

Uvod Imenik /etc/ igra ključno vlogo pri delovanju sistema Linux. Razlog za to je skoraj vsaka sistemska konfiguracija

Zakaj bi morali uporabljati SSHFS? Kako namestiti oddaljeni datotečni sistem s SSHFS na CentOS 6

Zakaj bi morali uporabljati SSHFS? Kako namestiti oddaljeni datotečni sistem s SSHFS na CentOS 6

Številni sistemski skrbniki upravljajo velike količine strežnikov. Ko je treba do datotek dostopati prek različnih strežnikov, se prijavite v vsakega posebej ca

Nastavitev strežnika Half Life 2 na CentOS 6

Nastavitev strežnika Half Life 2 na CentOS 6

Ta vadnica bo obravnavala postopek namestitve igralnega strežnika Half Life 2 na sistem CentOS 6. 1. korak: Namestitev predpogojev Za nastavitev ou

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več