A RabbitMQ fürtözése CentOS 7 rendszeren

A RabbitMQ egy nyílt forráskódú üzenetközvetítő, amely támogatja az AMQP, STOMP és más kommunikációs technológiákat. Széles körben használják a vállalati alkalmazásokban és a modern mikroszolgáltatási architektúrákban, ahol aszinkron üzenetcsatornaként működik a különböző mikroszolgáltatások között. Ez az útmutató leírja, hogyan csoportosíthatja a RabbitMQ-t több CentOS 7-kiszolgálón, hogy magas rendelkezésre állású üzenetközvetítőt hozzon létre. Ebben az oktatóanyagban az egyik kiszolgáló főkiszolgálóként, a többi kiszolgáló pedig tükörszerverként fog működni arra az esetre, ha a főkiszolgáló elérhetetlenné válna.

Előfeltételek

Konfigurálja a tűzfalat

A CentOS tűzfal ( firewalld) alapértelmezés szerint nem engedélyez bejövő forgalmat. Ahhoz, hogy a RabbitMQ elérhetővé váljon a hálózaton belüli és kívüli más rendszerek számára, és hogy hozzáférhessünk a felügyeleti konzolhoz, először meg kell nyitnunk néhány portot.

A RabbitMQ webes felületkezelő konzolja alapértelmezés szerint a porton figyel 15672. Szeretnénk a felügyeleti konzolt nyilvánosan elérhetővé tenni, hogy számítógépünkről elérhessük. Ezért azt utasítjuk, firewalldhogy véglegesen nyissa meg a portot 15672a nyilvános zónában (amely az alapértelmezett és aktív zóna a Vultr példányon).

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

A RabbitMQ csomópontoknak képesnek kell lenniük kommunikálni egymással. Szeretnénk megnyitni a szükséges portokat, de csak a belső hálózaton keresztül. Nem akarjuk, hogy az interneten bárki felügyelhesse vagy közvetlenül kapcsolatba léphessen szervereinkkel. A következő parancsok feltételezik, hogy kiszolgálóink ​​az 192.168.0.100/24alhálózaton vannak.

Az első szolgáltatás a epmdpeer-felderítési szolgáltatás, amely alapértelmezés szerint a porton figyel 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'

A csomópontok közötti és a CLI kommunikációhoz a RabbitMQ-nak képesnek kell lennie a porton keresztüli kommunikációra 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'

A CLI eszközök a porttartományon keresztül kommunikálnak 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'

Ha az alkalmazásoknak szüksége van az AMQP protokollra, akkor meg kell nyitnia a portokat 5671és a 5672. Ha más protokollon keresztül kell kommunikálnia, a RabbitMQ hálózati követelményeivel kapcsolatos szükséges információkat a hivatalos RabbitMQ dokumentációban találja .

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'

Most, hogy be firewalldvan állítva, utasítanunk kell a konfiguráció újratöltésére.

sudo firewall-cmd --reload

Ismételje meg az ebből a szakaszból származó lépéseket minden kiszolgálón.

Telepítés rabbitmqadmin

A felügyeleti bővítményhez tartozik egy Python nevű eszköz, rabbitmqadminamely egyszerűen telepíthető a rendszerre, miután a felügyeleti bővítményt engedélyezték.

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

Konfigurálja a DNS-t

A fürtözés során a kiszolgáló állomásneveit kell használnia a kiszolgálók azonosításához. Alapértelmezés szerint a kiszolgálókhoz nincs DNS-rekord hozzárendelve, és a kapcsolat meghiúsul. Ennek gyors kiküszöböléséhez adja hozzá a fő és a tükrözött gazdagép nevét a /etc/hostsfájlhoz kedvenc szerkesztője segítségével.

Például a mester hosts fájlja a következőképpen nézhet ki. Figyelje meg az utolsó két rekordot, amelyek lehetővé teszik a szerverek számára, hogy azonosítsák egymást gazdagépnevük alapján. Ügyeljen arra, hogy módosítsa az IP-címeket a sajátjára.

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

Csoportosítsa a csomópontokat

A csomópontok egymáshoz való csatlakozásának importálási előfeltétele, hogy az összes csomópont Erlang cookie-ja azonos legyen. Alapértelmezés szerint minden csomóponthoz egyedi Erlang cookie lesz hozzárendelve, ezért újra kell konfigurálnia az összes csomóponton.

A következő parancs az Erlang cookie-t " WE<3COOKIES" értékre állítja , de ezt nyugodtan módosíthatja saját ízlése szerint. Tegye ezt az összes szerveren.

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

Indítsa újra a RabbitMQ-t az összes szerveren, hogy megbizonyosodjon arról, hogy az Erlang cookie megfelelően újra van töltve.

sudo systemctl restart rabbitmq-server.service

Hajtsa végre a következő parancsokat az összes kiszolgálón, kivéve a főkiszolgálón. Ez lehetővé teszi, hogy a csomópontok csatlakozzanak a főkiszolgálóhoz, és fürtöt képezzenek.

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

A következő parancs futtatásával ellenőrizze, hogy a csomópontok csatlakoztak-e a fürthöz.

sudo rabbitmqctl cluster_status

Az összes csomópont megjelenik a kimenet nodesés running_nodesszakaszában. Mostantól nem kell megismételnie a lépéseket minden szerveren, a konfiguráció automatikusan tükröződik a többi csomóponton.

Hozzon létre egy magas rendelkezésre állási szabályzatot

Most, hogy van egy RabbitMQ csomópontok fürtje, ezt felhasználhatjuk magas rendelkezésre állású várólisták és cserék létrehozására egy új házirend beállításával. Ez a házirend hozzáadható a RabbitMQ Management Console-on vagy a parancssori felületen keresztül.

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

A következő lista elmagyarázza, mit jelentenek a parancs egyes részei.

  • -p "/": Használja ezt a házirendet a "/"vhost-on (a telepítés után az alapértelmezett)
  • --priority 1: Az irányelvek alkalmazásának sorrendje
  • --apply-to "all": Lehet "queues", "exchanges"ill"all"
  • ha: Az a név, amelyet irányelvünknek adunk
  • ".*": Az a reguláris kifejezés, amely annak eldöntésére szolgál, hogy mely sorokra vagy cserékre vonatkozzon ez a házirend. ".*"bármihez passzol
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': A házirend JSON-reprezentációja. Ez a dokumentum azt írja le, hogy pontosan 2 csomópontot szeretnénk, amelyeken az adatok automatikusan szinkronizálva vannak

Röviden, ez a házirend biztosítja, hogy mindig legyen 2 másolatunk az adatokból egy sorban vagy cserében mindaddig, amíg legalább 2 csomópont működik. Ha több csomópontja van, növelheti az értékét ha-params. N/2 + 1Javasoljuk, hogy a csomópontok határozatképesek ( ). Ha több másolatot készít az adatokról, az nagyobb lemez-, i/o- és nethasználatot eredményez, ami a teljesítmény romlásához vezethet.

Ha tükrözni szeretné az adatokat a fürt összes csomópontjára, használhatja a következő JSON-dokumentumot.

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

Ha csak meghatározott csomópontokra szeretné tükrözni az adatokat (például: node-1és node-2), használhatja a következőket.

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

Módosíthatja a reguláris kifejezést, hogy különböző házirendeket rendeljen hozzá a különböző sorokhoz. Tegyük fel, hogy a következő három csomópontunk van:

  • nyúl@mester
  • nyúl@kliens-ha
  • nyúl@termék-ha

Ezután létrehozhatunk két házirendet, amelyek eredményeképpen a sorok neve „kliens”-vel kezdődik, és tükröződik a rabbit@client-hacsomópontban, és minden olyan sor, amelynek neve „termék”-vel kezdődik, tükröződik a rabbit@product-hacsomópontban.

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

Egy kis megjegyzés itt: az exkluzív várólisták soha nem tükröződnek vagy tartósak a RabbitMQ-ban, még akkor sem, ha ez a házirend megfelelne az ilyen soroknak. Az exkluzív várólisták automatikusan megsemmisülnek, amint egy kliens megszakad, és ezért nem lenne hasznos replikálni egy másik szerverre. Ha a szerver meghibásodna, a kliens megszakad vele, és a sor automatikusan megsemmisül. A tükrözött példányok is megsemmisülnének.

A beállítás tesztelése

A fürtözött beállítás teszteléséhez a felügyeleti konzolon keresztül a parancssori felület segítségével új sort hozhatunk létre.

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

Ez tartós sort hoz létre az alapértelmezett /vhost- on a következő névvel: my-ha-queue.

Futtassa a következő parancsot, és ellenőrizze a kimenetben, hogy a sorhoz van-e hozzárendelve a „ha” házirend, és vannak-e pid-ek a fő és egy tükörcsomóponton.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Most már közzétehetünk egy üzenetet a sorba a fő csomópontból, és leállíthatjuk a RabbitMQ-t a fő csomóponton.

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

Most kapja vissza a tükörcsomóponthoz való csatlakozással.

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

Végül újraindíthatjuk főcsomópontunkat.

sudo systemctl start rabbitmq-server.service

Törölje a vendég felhasználót

Mint korábban említettük, a RabbitMQ automatikusan létrehoz egy vendég felhasználót alapértelmezett vendégjelszóval. Rossz gyakorlat lenne, ha ezt az alapértelmezett felhasználót nyilvánosan hozzáférhető rendszeren hagyná.

sudo rabbitmqctl delete_user guest

Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

Az Apache Cassandra 3.11.x telepítése CentOS 7 rendszeren

Az Apache Cassandra 3.11.x telepítése CentOS 7 rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

A Microweber telepítése CentOS 7 rendszeren

A Microweber telepítése CentOS 7 rendszeren

Más rendszert használ? A Microweber egy nyílt forráskódú drag and drop CMS és online bolt. A Microweber forráskódja a GitHubon található. Ez az útmutató megmutatja neked

A Vanilla Forum telepítése a CentOS 7 rendszeren

A Vanilla Forum telepítése a CentOS 7 rendszeren

Más rendszert használ? A Vanilla forum egy nyílt forráskódú, PHP-ben írt fórumalkalmazás. Ez egy teljesen testreszabható, könnyen használható, és támogatja a külsőt

A Mattermost 4.1 telepítése CentOS 7 rendszeren

A Mattermost 4.1 telepítése CentOS 7 rendszeren

Más rendszert használ? A Mattermost egy nyílt forráskódú, saját üzemeltetésű alternatívája a Slack SAAS üzenetküldő szolgáltatásnak. Más szóval, a Mattermost segítségével kb

Minecraft szerverek hálózatának létrehozása BungeeCord segítségével Debian 8, Debian 9 vagy CentOS 7 rendszeren

Minecraft szerverek hálózatának létrehozása BungeeCord segítségével Debian 8, Debian 9 vagy CentOS 7 rendszeren

Mire lesz szüksége Egy Vultr VPS legalább 1 GB RAM-mal. SSH hozzáférés (root/adminisztrátori jogosultságokkal). 1. lépés: A BungeeCord telepítése Először is

Encrypt on Plesk

Encrypt on Plesk

A Plesk vezérlőpult nagyon szép integrációt kínál a Lets Encrypt számára. A Lets Encrypt egyike az egyetlen SSL-szolgáltatónak, amely teljes tanúsítványt ad ki

Lehetővé teszi a titkosítást a cPanel-en

Lehetővé teszi a titkosítást a cPanel-en

A Lets Encrypt egy tanúsító hatóság, amely ingyenes SSL-tanúsítványokat biztosít. A cPanel ügyes integrációt épített ki, így Ön és ügyfele

A Concrete5 telepítése CentOS 7 rendszeren

A Concrete5 telepítése CentOS 7 rendszeren

Más rendszert használ? A Concrete5 egy nyílt forráskódú CMS, amely számos megkülönböztető és hasznos funkciót kínál, hogy segítse a szerkesztőket a tartalom egyszerű létrehozásában.

Hogyan telepítsük az értékelő táblát a CentOS 7 rendszeren

Hogyan telepítsük az értékelő táblát a CentOS 7 rendszeren

Más rendszert használ? A Review Board egy ingyenes és nyílt forráskódú eszköz a forráskód, a dokumentáció, a képek és még sok más áttekintésére. Ez egy web alapú szoftver

Állítsa be a HTTP-hitelesítést az Nginx segítségével a CentOS 7 rendszeren

Állítsa be a HTTP-hitelesítést az Nginx segítségével a CentOS 7 rendszeren

Ebből az útmutatóból megtudhatja, hogyan állíthat be HTTP-hitelesítést egy CentOS 7 rendszeren futó Nginx webszerverhez. Követelmények A kezdéshez szüksége lesz a következőre:

A GoAccess telepítése a CentOS 7 rendszeren

A GoAccess telepítése a CentOS 7 rendszeren

Más rendszert használ? A GoAccess egy nyílt forráskódú webnapló-elemző. Használhatja naplók valós idejű elemzésére akár a terminálon, akár a

A YOURLS telepítése a CentOS 7 rendszeren

A YOURLS telepítése a CentOS 7 rendszeren

A YOURLS (Your Own URL Shortener) egy nyílt forráskódú URL-rövidítő és adatelemző alkalmazás. Ebben a cikkben a telepítés folyamatával foglalkozunk

Az ArangoDB telepítése és konfigurálása a CentOS 7 rendszeren

Az ArangoDB telepítése és konfigurálása a CentOS 7 rendszeren

Más rendszert használ? Bevezetés Az ArangoDB egy nyílt forráskódú NoSQL adatbázis, amely rugalmas adatmodellt kínál dokumentumokhoz, grafikonokhoz és kulcsértékekhez. Ez

Az Etckeeper használata az /etc verziókezeléshez

Az Etckeeper használata az /etc verziókezeléshez

Bevezetés Az /etc/ könyvtár kritikus szerepet játszik a Linux rendszer működésében. Ennek az az oka, hogy szinte minden rendszerkonfiguráció

Miért érdemes SSHFS-t használni? Távoli fájlrendszer csatlakoztatása SSHFS-sel a CentOS 6 rendszeren

Miért érdemes SSHFS-t használni? Távoli fájlrendszer csatlakoztatása SSHFS-sel a CentOS 6 rendszeren

Sok rendszergazda nagy mennyiségű kiszolgálót kezel. Ha a fájlokhoz különböző szervereken keresztül kell hozzáférni, mindegyikbe külön-külön kell bejelentkezni kb

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket