Clusting RabbitMQ á CentOS 7

RabbitMQ er opinn skilaboðamiðlari sem styður AMQP, STOMP og aðra samskiptatækni. Það er mikið notað í fyrirtækjaforritum og nútíma örþjónustuarkitektúrum þar sem það virkar sem ósamstillt skilaboðarás milli mismunandi örþjónustu. Þessi handbók mun lýsa því hvernig þú getur flokkað RabbitMQ á marga CentOS 7 netþjóna til að mynda skilaboðamiðlara með mikilli aðgengi. Í þessari kennslu mun einn þjónn virka sem aðalþjónn og hinir þjónar virka sem spegilþjónar ef aðalþjónninn verður ófáanlegur.

Forkröfur

Stilltu eldvegginn

CentOS eldveggurinn, ( firewalld), leyfir ekki komandi umferð sjálfgefið. Til að gera RabbitMQ aðgengilegt fyrir önnur kerfi innan og utan netsins, og til að leyfa okkur að fá aðgang að stjórnborðinu, verðum við fyrst að opna nokkrar gáttir.

Stjórnborð vefviðmóts RabbitMQ hlustar sjálfgefið á port 15672. Okkur langar að gera stjórnborðið aðgengilegt almenningi svo við getum nálgast hana úr tölvunni okkar. Við munum því gefa fyrirmæli um firewalldað opna höfn varanlega 15672á almenningssvæðinu (sem er sjálfgefið og virkt svæði á Vultr tilviki).

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

RabbitMQ hnúðarnir þurfa að geta átt samskipti sín á milli. Við viljum gjarnan opna nauðsynlegar höfn, en aðeins yfir innra netið. Við viljum ekki að neinn á internetinu geti stjórnað eða haft beint samband við netþjóna okkar. Eftirfarandi skipanir gera ráð fyrir að netþjónarnir okkar séu á 192.168.0.100/24undirnetinu.

Fyrsta þjónustan er epmdjafningjauppgötvunarþjónustan sem hlustar sjálfgefið á 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'

Fyrir internode og CLI samskipti þarf RabbitMQ að geta átt samskipti yfir port 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 verkfærin hafa samskipti yfir hafnarsviðið 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'

Ef forritin þín þurfa AMQP samskiptareglur þarftu líka að opna höfn 5671og 5672. Ef þú þarft að geta átt samskipti í gegnum aðra samskiptareglu geturðu fundið nauðsynlegar upplýsingar um netkröfur RabbitMQ á opinberu RabbitMQ skjölunum .

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'

Nú þegar það firewallder stillt þurfum við að leiðbeina því um að endurhlaða stillingarnar.

sudo firewall-cmd --reload

Endurtaktu skrefin frá þessum hluta á öllum netþjónum.

Settu upp rabbitmqadmin

Stjórnunarviðbótinni fylgir Python tól sem kallast rabbitmqadminsem auðvelt er að setja upp á kerfið þegar stjórnunarviðbótin er virkjuð.

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

Stilla DNS

Þú verður að nota hýsingarnöfn netþjónsins til að auðkenna netþjónana þegar þú safnar saman. Sjálfgefið er að ekki er úthlutað DNS-skrá á netþjóna og tengingin mun mistakast. Til að sigrast fljótt á þessu skaltu bæta master- og spegilhýsilheitinu við /etc/hostsskrána með því að nota uppáhalds ritilinn þinn.

Til dæmis gæti skipstjóraskráin þín litið svona út. Taktu eftir síðustu tveimur færslunum, sem gera netþjónum kleift að bera kennsl á hver annan með hýsingarnafni sínu. Vertu viss um að breyta IP tölunum í þínar eigin.

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

Klástu hnútana

Innflutningsforsenda til að leyfa hnútum að sameinast hver öðrum er að Erlang kex allra hnúta sé eins. Sjálfgefið er að hverjum hnút verður úthlutað einstakt Erlang kex, svo þú verður að endurstilla það á öllum hnútum.

Eftirfarandi skipun mun stilla Erlang kökuna á " WE<3COOKIES", en ekki hika við að breyta þessu að vild. Gerðu þetta á öllum netþjónum.

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

Endurræstu RabbitMQ á öllum netþjónum til að tryggja að Erlang kexið sé rétt endurhlaðað.

sudo systemctl restart rabbitmq-server.service

Framkvæmdu eftirfarandi skipanir á öllum netþjónum nema á aðalþjóninum. Þetta mun leyfa hnútunum að sameinast aðalþjóninum og mynda þyrping.

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

Staðfestu að hnútarnir hafi sameinast þyrpingunni með því að keyra eftirfarandi skipun.

sudo rabbitmqctl cluster_status

Allir hnúðarnir þínir munu birtast í nodesog running_nodeshluta úttaksins. Héðan í frá þarftu ekki lengur að endurtaka skref á hverjum netþjóni, stillingar verða sjálfkrafa speglaðar í hina hnútana.

Búðu til stefnu um mikið aðgengi

Nú þegar við erum með þyrping af RabbitMQ hnútum getum við notað þetta til að búa til biðraðir og skipti með mikilli aðgengi með því að setja upp nýja stefnu. Þessari stefnu er hægt að bæta við í gegnum RabbitMQ stjórnborðið eða með því að nota skipanalínuviðmótið.

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

Eftirfarandi listi mun útskýra hvað hver hluti skipunarinnar þýðir.

  • -p "/": Notaðu þessa stefnu á "/"vhost (sjálfgefið eftir uppsetningu)
  • --priority 1: Röð þar sem reglum er beitt
  • --apply-to "all": Getur verið "queues", "exchanges"eða"all"
  • ha: Nafnið sem við gefum stefnu okkar
  • ".*": Regluleg segð sem er notuð til að ákveða hvaða biðraðir eða skipti þessi stefna er notuð. ".*"mun passa við hvað sem er
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': JSON framsetning stefnunnar. Þetta skjal lýsir því að við viljum - nákvæmlega 2 hnúta sem gögnin eru sjálfkrafa samstillt á

Í stuttu máli mun þessi stefna tryggja að við verðum alltaf með 2 afrit af gögnunum í biðröð eða skipti svo framarlega sem við höfum að minnsta kosti 2 hnúta í gangi. Ef þú ert með fleiri hnúta geturðu aukið gildi ha-params. Mælt er N/2 + 1með því að hnútar séu ályktunarhæfir ( ). Að hafa fleiri afrit af gögnunum þínum myndi leiða til meiri disks, i/o og netnotkunar sem gæti leitt til skertrar frammistöðu.

Ef þú vilt spegla gögnin í alla hnúta í klasanum gætirðu notað eftirfarandi JSON skjal.

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

Ef þú vilt spegla gögnin aðeins í tiltekna hnúta, (til dæmis: node-1og node-2), gætirðu notað eftirfarandi.

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

Þú getur breytt reglulegri tjáningu til að úthluta mismunandi stefnum í mismunandi biðraðir. Segjum að við höfum eftirfarandi þrjá hnúta:

  • kanína@meistari
  • kanína@viðskiptavinur-ha
  • kanína@vara-ha

Við getum síðan búið til tvær stefnur sem leiða til þess að biðraðir sem hafa nafn sem byrjar á "viðskiptavinur" speglast í rabbit@client-hahnútinn og allar biðraðir sem hafa nafn sem byrjar á "vöru" speglast í rabbit@product-hahnútinn.

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

Lítil athugasemd hér: einkar biðraðir eru aldrei speglaðar eða endingargóðar í RabbitMQ, jafnvel þótt þessi stefna myndi passa við slíkar biðraðir. Einkum biðraðir eyðileggjast sjálfkrafa þegar viðskiptavinur aftengir sig og sem slíkur væri ekkert gagn að endurtaka það á annan netþjón. Ef þjónninn myndi bila, myndi viðskiptavinurinn aftengjast honum og biðröðinni yrði eytt sjálfkrafa. Spegluð tilvik yrðu líka eytt.

Er að prófa uppsetninguna

Til þess að prófa klasauppsetninguna getum við búið til nýja biðröð með því að nota skipanalínuviðmótið í gegnum stjórnborðið.

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

Þetta mun búa til varanlega biðröð á sjálfgefna /vhost með nafninu my-ha-queue.

Keyrðu eftirfarandi skipun og staðfestu í úttakinu að biðröðinni hafi 'ha' stefnu okkar úthlutað og hafi pid's á masternum og á spegilhnút.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Við getum nú birt skilaboð í biðröðina frá aðalhnútnum og stöðvað RabbitMQ á aðalhnútnum.

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

Fáðu það nú aftur með því að tengjast spegilhnútnum.

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

Að lokum getum við endurræst aðalhnútinn okkar.

sudo systemctl start rabbitmq-server.service

Eyða gestanotandanum

Eins og áður hefur komið fram býr RabbitMQ sjálfkrafa til gestanotanda með sjálfgefið gestalykilorð. Það væri slæm venja að skilja þennan sjálfgefna notanda eftir á opinberu kerfi.

sudo rabbitmqctl delete_user guest

Settu upp Plesk á CentOS 7

Settu upp Plesk á CentOS 7

Að nota annað kerfi? Plesk er sérstakt stjórnborð fyrir vefþjón sem gerir notendum kleift að stjórna persónulegum og/eða viðskiptavinum vefsíðum sínum, gagnagrunnum

Hvernig á að setja upp Squid Proxy á CentOS

Hvernig á að setja upp Squid Proxy á CentOS

Smokkfiskur er vinsælt, ókeypis Linux forrit sem gerir þér kleift að búa til framsendingarforrit á vefnum. Í þessari handbók muntu sjá hvernig á að setja upp Squid á CentOS til að snúa þér

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Inngangur Lighttpd er gaffal af Apache sem miðar að því að vera miklu minna auðlindafrekt. Hann er léttur, þess vegna heitir hann, og er frekar einfaldur í notkun. Uppsetning

Stilla Static Networking og IPv6 á CentOS 7

Stilla Static Networking og IPv6 á CentOS 7

VULTR hefur nýlega gert breytingar á enda þeirra og allt ætti nú að virka vel út úr kassanum með NetworkManager virkt. Ef þú vilt slökkva á

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Icinga2 er öflugt eftirlitskerfi og þegar það er notað í aðal-viðskiptavinamódel getur það komið í stað þörf fyrir NRPE-undirstaða vöktunareftirlit. Húsbóndinn

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Að nota annað kerfi? Apache Cassandra er ókeypis og opinn uppspretta NoSQL gagnagrunnsstjórnunarkerfi sem er hannað til að veita sveigjanleika, háan

Hvernig á að setja upp Microweber á CentOS 7

Hvernig á að setja upp Microweber á CentOS 7

Að nota annað kerfi? Microweber er opinn uppspretta draga og sleppa CMS og netverslun. Microweber frumkóði er hýst á GitHub. Þessi handbók mun sýna þér

Hvernig á að setja upp Mattermost 4.1 á CentOS 7

Hvernig á að setja upp Mattermost 4.1 á CentOS 7

Að nota annað kerfi? Mattermost er opinn uppspretta, sjálfhýst valkostur við Slack SAAS skilaboðaþjónustuna. Með öðrum orðum, með Mattermost, þú ca

Að búa til net Minecraft netþjóna með BungeeCord á Debian 8, Debian 9 eða CentOS 7

Að búa til net Minecraft netþjóna með BungeeCord á Debian 8, Debian 9 eða CentOS 7

Það sem þú þarft Vultr VPS með að minnsta kosti 1GB af vinnsluminni. SSH aðgangur (með rót / stjórnunarréttindi). Skref 1: Uppsetning BungeeCord Fyrst af öllu

Láttu dulkóða á Plesk

Láttu dulkóða á Plesk

Plesk stjórnborðið er með mjög fallegri samþættingu fyrir Lets Encrypt. Lets Encrypt er ein af einu SSL veitunum sem gefa út skírteini að fullu

Láttu dulkóða á cPanel

Láttu dulkóða á cPanel

Lets Encrypt er vottunaryfirvöld sem sérhæfir sig í að útvega SSL vottorð án endurgjalds. cPanel hefur byggt upp snyrtilega samþættingu svo þú og viðskiptavinurinn þinn

Hvernig á að setja upp Concrete5 á CentOS 7

Hvernig á að setja upp Concrete5 á CentOS 7

Að nota annað kerfi? Concrete5 er opinn uppspretta CMS sem býður upp á marga áberandi og gagnlega eiginleika til að aðstoða ritstjóra við að framleiða efni auðveldlega og

Hvernig á að setja upp Review Board á CentOS 7

Hvernig á að setja upp Review Board á CentOS 7

Að nota annað kerfi? Review Board er ókeypis og opinn hugbúnaður til að skoða frumkóða, skjöl, myndir og margt fleira. Það er vefbundið hugbúnaðarstríð

Settu upp HTTP auðkenningu með Nginx á CentOS 7

Settu upp HTTP auðkenningu með Nginx á CentOS 7

Í þessari handbók munt þú læra hvernig á að setja upp HTTP auðkenningu fyrir Nginx vefþjón sem keyrir á CentOS 7. Kröfur Til að byrja þarftu að

Hvernig á að setja upp YOURLS á CentOS 7

Hvernig á að setja upp YOURLS á CentOS 7

YOURLS (Your Own URL Shortener) er opinn uppspretta vefslóða styttingar og gagnagreiningarforrit. Í þessari grein munum við fjalla um ferlið við uppsetningu

How to Install and Configure ArangoDB on CentOS 7

How to Install and Configure ArangoDB on CentOS 7

Using a Different System? Introduction ArangoDB is an open source NoSQL database with a flexible data model for documents, graphs, and key-values. It is

Notkun Etckeeper fyrir útgáfustýringu á /etc

Notkun Etckeeper fyrir útgáfustýringu á /etc

Inngangur /etc/ skrárinn gegnir mikilvægu hlutverki í því hvernig Linux kerfi virkar. Ástæðan fyrir þessu er sú að næstum allar kerfisstillingar

Af hverju ættir þú að nota SSHFS? Hvernig á að tengja fjarskráarkerfi með SSHFS á CentOS 6

Af hverju ættir þú að nota SSHFS? Hvernig á að tengja fjarskráarkerfi með SSHFS á CentOS 6

Margir kerfisstjórar stjórna miklu magni af netþjónum. Þegar aðgangur þarf að skrám á mismunandi netþjónum er innskráning á hvern og einn fyrir sig ca

Setja upp Half Life 2 Server á CentOS 6

Setja upp Half Life 2 Server á CentOS 6

Þessi kennsla mun fjalla um ferlið við að setja upp Half Life 2 leikjaþjón á CentOS 6 System. Skref 1: Forsendur settar upp Til að setja upp ou

Hvernig á að setja upp Laravel GitScrum á CentOS 7

Hvernig á að setja upp Laravel GitScrum á CentOS 7

Laravel GitScrum, eða GitScrum er opinn uppspretta framleiðniverkfæri hannað til að hjálpa þróunarteymi að innleiða Scrum aðferðafræðina á svipaðan hátt

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.

DDOS árásir: Stutt yfirlit

DDOS árásir: Stutt yfirlit

Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.

Þróun gagnageymslu – Infographic

Þróun gagnageymslu – Infographic

Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.

Virkni Big Data Reference Architecture Layers

Virkni Big Data Reference Architecture Layers

Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira