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

Skildu eftir athugasemd

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.

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.

Þ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.

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