RabbitMQ:n klusterointi CentOS 7:ssä

RabbitMQ on avoimen lähdekoodin viestivälittäjä, joka tukee AMQP-, STOMP- ja muita viestintätekniikoita. Sitä käytetään laajalti yrityssovelluksissa ja moderneissa mikropalveluarkkitehtuureissa, joissa se toimii asynkronisena viestikanavana eri mikropalvelujen välillä. Tässä oppaassa kuvataan, kuinka voit ryhmitellä RabbitMQ:n useille CentOS 7 -palvelimille korkean käytettävyyden viestivälittäjän muodostamiseksi. Tässä opetusohjelmassa yksi palvelin toimii pääpalvelimena ja muut palvelimet peilipalvelimina, jos pääpalvelin ei ole käytettävissä.

Edellytykset

Määritä palomuuri

CentOS:n palomuuri ( firewalld) ei salli saapuvaa liikennettä oletuksena. Jotta RabbitMQ olisi käytettävissä muille järjestelmille verkossa ja sen ulkopuolella, ja jotta voimme käyttää hallintakonsolia, meidän on ensin avattava joitain portteja.

RabbitMQ:n verkkokäyttöliittymän hallintakonsoli kuuntelee oletusarvoisesti porttia 15672. Haluamme tuoda hallintakonsolin julkisesti saataville, jotta voimme käyttää sitä tietokoneellamme. Siksi ohjeistamme firewalldavaamaan portin pysyvästi 15672julkisessa vyöhykkeessä (joka on oletus- ja aktiivinen vyöhyke Vultr-esiintymässä).

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

RabbitMQ-solmujen on kyettävä kommunikoimaan toistensa kanssa. Haluamme avata tarvittavat portit, mutta vain sisäisen verkon kautta. Emme halua kenenkään Internetin voivan hallinnoida palvelimiamme tai ottaa suoraan yhteyttä palvelimiin. Seuraavat komennot olettavat, että palvelimemme ovat 192.168.0.100/24aliverkossa.

Ensimmäinen palvelu on epmdvertaisetsintäpalvelu, joka kuuntelee oletusarvoisesti porttia 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'

Solmujen välistä ja CLI-viestintää varten RabbitMQ:n on kyettävä kommunikoimaan portin kautta 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 - työkalut kommunikoivat porttialueen yli 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'

Jos sovelluksesi tarvitsevat AMQP-protokollan, sinun on myös avattava portit 5671ja 5672. Jos sinun on pystyttävä kommunikoimaan toisen protokollan kautta, löydät tarvittavat tiedot RabbitMQ:n verkkovaatimuksista virallisesta RabbitMQ-dokumentaatiosta .

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'

Nyt kun se firewalldon määritetty, meidän on ohjeistettava sitä lataamaan kokoonpano uudelleen.

sudo firewall-cmd --reload

Toista tämän osan vaiheet kaikilla palvelimilla.

Asentaa rabbitmqadmin

Hallintalaajennuksen mukana tulee Python-työkalu, rabbitmqadminjoka voidaan helposti asentaa järjestelmään, kun hallintalaajennus on otettu käyttöön.

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

Määritä DNS

Sinun on käytettävä palvelimen isäntänimiä palvelinten tunnistamiseen klusteroinnin aikana. Oletuksena palvelimille ei ole määritetty DNS-tietuetta ja yhteys epäonnistuu. Voit voittaa tämän nopeasti lisäämällä isäntä- ja peilipalvelimen nimen /etc/hoststiedostoon suosikkieditorillasi.

Esimerkiksi isäntäsi hosts-tiedosto saattaa näyttää seuraavalta. Huomaa kaksi viimeistä tietuetta, joiden avulla palvelimet voivat tunnistaa toisensa isäntänimen perusteella. Muista vaihtaa IP-osoitteet omiksi.

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

Klusteroi solmut

Tuonnin edellytys solmujen liittymiselle on, että kaikkien solmujen Erlang-eväste on identtinen. Oletusarvoisesti jokaiselle solmulle määritetään yksilöllinen Erlang-eväste, joten sinun on määritettävä se uudelleen kaikissa solmuissa.

Seuraava komento asettaa Erlang-evästeen arvoon " WE<3COOKIES", mutta voit muuttaa tätä haluamallasi tavalla. Tee tämä kaikilla palvelimilla.

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

Käynnistä RabbitMQ uudelleen kaikilla palvelimilla varmistaaksesi, että Erlang-eväste on ladattu oikein.

sudo systemctl restart rabbitmq-server.service

Suorita seuraavat komennot kaikilla palvelimilla paitsi pääpalvelimella. Tämä antaa solmujen liittyä pääpalvelimeen ja muodostaa klusterin.

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

Varmista, että solmut ovat liittyneet klusteriin suorittamalla seuraava komento.

sudo rabbitmqctl cluster_status

Kaikki solmusi näkyvät tulosteen nodesja running_nodes-osiossa. Tästä eteenpäin sinun ei enää tarvitse toistaa vaiheita jokaisella palvelimella, vaan kokoonpano peilataan automaattisesti muihin solmuihin.

Luo korkean saatavuuden käytäntö

Nyt kun meillä on RabbitMQ-solmuklusteri, voimme käyttää tätä korkean käytettävyyden jonot ja vaihdot luomalla uuden käytännön. Tämä käytäntö voidaan lisätä RabbitMQ-hallintakonsolin tai komentoriviliittymän kautta.

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

Seuraava luettelo selittää, mitä kukin komennon osa tarkoittaa.

  • -p "/": Käytä tätä käytäntöä "/"vhostissa (oletusasetus asennuksen jälkeen)
  • --priority 1: Järjestys, jossa käytäntöjä sovelletaan
  • --apply-to "all": Voi olla "queues", "exchanges"tai"all"
  • ha: Nimi, jonka annamme politiikallemme
  • ".*": Säännöllinen lauseke, jota käytetään päättämään, mihin jonoihin tai vaihtoihin tätä käytäntöä sovelletaan. ".*"sopii mihin tahansa
  • '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}': Käytännön JSON-esitys. Tässä asiakirjassa kuvataan, että haluamme - täsmälleen 2 solmua, joiden tiedot synkronoidaan automaattisesti

Lyhyesti sanottuna tämä käytäntö varmistaa, että meillä on aina 2 kopiota tiedoista jonossa tai vaihdossa niin kauan kuin meillä on vähintään 2 solmua käynnissä. Jos sinulla on enemmän solmuja, voit lisätä arvoa ha-params. N/2 + 1Solmujen päätösvaltaisuus ( ) on suositeltavaa. Jos tiedoistasi on enemmän kopioita, levy-, i/o- ja verkkokäyttö lisääntyy, mikä voi johtaa suorituskyvyn heikkenemiseen.

Jos haluat peilata tiedot kaikkiin klusterin solmuihin, voit käyttää seuraavaa JSON-asiakirjaa.

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

Jos haluat peilata tiedot vain tiettyihin solmuihin (esimerkiksi: node-1ja node-2), voit käyttää seuraavaa.

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

Voit muuttaa säännöllistä lauseketta määrittääksesi eri käytännöt eri jonoihin. Oletetaan, että meillä on seuraavat kolme solmua:

  • kani @ isäntä
  • kani@client-ha
  • kani@tuote-ha

Voimme sitten luoda kaksi käytäntöä, jotka johtavat siihen, että jonoilla on "asiakas"-alkuinen rabbit@client-hanimi, joka peilataan solmuun, ja kaikki jonot, joiden nimi alkaa "tuote", peilataan rabbit@product-hasolmuun.

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

Pieni huomautus tähän: eksklusiivisia jonoja ei koskaan peilata tai kestä RabbitMQ:ssa, vaikka tämä käytäntö vastaisikin tällaisia ​​jonoja. Eksklusiiviset jonot tuhoutuvat automaattisesti, kun asiakas katkaisee yhteyden, joten sen kopioiminen toiselle palvelimelle ei olisi hyödyllistä. Jos palvelin epäonnistuu, asiakas katkaisee yhteyden siihen ja jono tuhoutuisi automaattisesti. Myös peilatut tapaukset tuhoutuisivat.

Asennuksen testaaminen

Klustereiden asennuksen testaamiseksi voimme luoda uuden jonon komentoriviliittymällä hallintakonsolin kautta.

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

Tämä luo pysyvän jonon oletusarvoiseen /vhost-palvelimeen, jonka nimi on my-ha-queue.

Suorita seuraava komento ja varmista lähdöstä, että jonolle on määritetty ha-käytäntömme ja että siinä on pid:t isäntäsolmussa ja peilisolmussa.

sudo rabbitmqctl list_queues name policy state pid slave_pids

Voimme nyt julkaista viestin jonoon pääsolmusta ja pysäyttää RabbitMQ:n pääsolmussa.

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

Nyt saat sen takaisin yhdistämällä peilisolmuun.

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

Lopuksi voimme käynnistää pääsolmumme uudelleen.

sudo systemctl start rabbitmq-server.service

Poista vieraskäyttäjä

Kuten aiemmin mainittiin, RabbitMQ luo automaattisesti vieraskäyttäjän oletussalasanalla. Olisi huono käytäntö jättää tämä oletuskäyttäjä julkisesti esillä olevaan järjestelmään.

sudo rabbitmqctl delete_user guest

Asenna Plesk CentOS 7:ään

Asenna Plesk CentOS 7:ään

Käytätkö erilaista järjestelmää? Plesk on patentoitu verkkoisäntäohjauspaneeli, jonka avulla käyttäjät voivat hallita henkilökohtaisia ​​ja/tai asiakkaidensa verkkosivustoja, tietokantoja

Kuinka asentaa Squid Proxy CentOS:ään

Kuinka asentaa Squid Proxy CentOS:ään

Squid on suosittu, ilmainen Linux-ohjelma, jonka avulla voit luoda edelleenlähetysverkkovälityspalvelimen. Tässä oppaassa näet, kuinka Squid asennetaan CentOS:ään kääntääksesi sinut

Lighttpd:n (LLMP Stack) asentaminen CentOS 6:een

Lighttpd:n (LLMP Stack) asentaminen CentOS 6:een

Johdanto Lighttpd on Apachen haarukka, jonka tarkoituksena on olla paljon vähemmän resurssiintensiivinen. Se on kevyt, tästä syystä sen nimi, ja on melko yksinkertainen käyttää. Asenna

Staattisen verkon ja IPv6:n määrittäminen CentOS 7:ssä

Staattisen verkon ja IPv6:n määrittäminen CentOS 7:ssä

VULTR on äskettäin tehnyt muutoksia heidän omiinsa, ja kaiken pitäisi nyt toimia hyvin heti, kun NetworkManager on käytössä. Jos haluat poistaa käytöstä

Icinga2:n muokkaaminen käyttämään pää/asiakasmallia CentOS 6:ssa tai CentOS 7:ssä

Icinga2:n muokkaaminen käyttämään pää/asiakasmallia CentOS 6:ssa tai CentOS 7:ssä

Icinga2 on tehokas valvontajärjestelmä, ja master-client-mallissa käytettynä se voi korvata NRPE-pohjaisten valvontatarkastusten tarpeen. Pääasiakas

Apache Cassandra 3.11.x:n asentaminen CentOS 7:ään

Apache Cassandra 3.11.x:n asentaminen CentOS 7:ään

Käytätkö erilaista järjestelmää? Apache Cassandra on ilmainen ja avoimen lähdekoodin NoSQL-tietokannan hallintajärjestelmä, joka on suunniteltu tarjoamaan skaalautuvuutta, hig.

Kuinka asentaa Microweber CentOS 7:ään

Kuinka asentaa Microweber CentOS 7:ään

Käytätkö erilaista järjestelmää? Microweber on avoimen lähdekoodin vedä ja pudota sisällönhallintajärjestelmä ja verkkokauppa. Microweber-lähdekoodia isännöidään GitHubissa. Tämä opas näyttää sinulle

Mattermost 4.1:n asentaminen CentOS 7:ään

Mattermost 4.1:n asentaminen CentOS 7:ään

Käytätkö erilaista järjestelmää? Mattermost on avoimen lähdekoodin itseisännöity vaihtoehto Slack SAAS -viestipalvelulle. Toisin sanoen Mattermostin avulla voit noin

Minecraft-palvelinverkon luominen BungeeCordilla Debian 8:ssa, Debian 9:ssä tai CentOS 7:ssä

Minecraft-palvelinverkon luominen BungeeCordilla Debian 8:ssa, Debian 9:ssä tai CentOS 7:ssä

Mitä tarvitset Vultr VPS:n, jossa on vähintään 1 Gt RAM-muistia. SSH-käyttö (pääkäyttäjän/järjestelmänvalvojan oikeuksilla). Vaihe 1: BungeeCordin asentaminen Ensimmäiset asiat ensin

Sallii salauksen Pleskissä

Sallii salauksen Pleskissä

Plesk-ohjauspaneelissa on erittäin mukava integraatio Lets Encryptille. Lets Encrypt on yksi ainoista SSL-palveluntarjoajista, jotka myöntävät varmenteita täydellisesti

Sallii salauksen cPanelissa

Sallii salauksen cPanelissa

Lets Encrypt on varmenneviranomainen, joka on omistautunut tarjoamaan SSL-varmenteita ilmaiseksi. cPanel on rakentanut siistin integraation sinulle ja asiakkaallesi

Kuinka asentaa Concrete5 CentOS 7:ään

Kuinka asentaa Concrete5 CentOS 7:ään

Käytätkö erilaista järjestelmää? Concrete5 on avoimen lähdekoodin sisällönhallintajärjestelmä, joka tarjoaa monia ainutlaatuisia ja hyödyllisiä ominaisuuksia, jotka auttavat toimittajia tuottamaan sisältöä helposti ja helposti.

Review Boardin asentaminen CentOS 7:ään

Review Boardin asentaminen CentOS 7:ään

Käytätkö erilaista järjestelmää? Review Board on ilmainen ja avoimen lähdekoodin työkalu lähdekoodin, dokumentaation, kuvien ja monien muiden tarkistamiseen. Se on web-pohjainen ohjelmisto

Asenna HTTP-todennus Nginxillä CentOS 7:ssä

Asenna HTTP-todennus Nginxillä CentOS 7:ssä

Tässä oppaassa opit määrittämään HTTP-todennuksen Nginx-verkkopalvelimelle, joka toimii CentOS 7:ssä. Vaatimukset Aloitaksesi tarvitset

Kuinka asentaa YOURLS CentOS 7:ään

Kuinka asentaa YOURLS CentOS 7:ään

YOURLS (Your Own URL Shortener) on avoimen lähdekoodin URL-osoitteiden lyhennys- ja data-analytiikkasovellus. Tässä artikkelissa käsittelemme asennusprosessia

Kuinka asentaa ja määrittää ArangoDB CentOS 7: ssä

Kuinka asentaa ja määrittää ArangoDB CentOS 7: ssä

Käytätkö erilaista järjestelmää? Johdanto ArangoDB on avoimen lähdekoodin NoSQL-tietokanta, jossa on joustava tietomalli asiakirjoille, kaavioille ja avainarvoille. se on

Etckeeperin käyttäminen /etc-version hallintaan

Etckeeperin käyttäminen /etc-version hallintaan

Johdanto /etc/-hakemistolla on tärkeä rooli Linux-järjestelmän toiminnassa. Syynä tähän on se, että lähes kaikki järjestelmäkokoonpanot

Miksi sinun pitäisi käyttää SSHFS:ää? Kuinka asentaa etätiedostojärjestelmä SSHFS:llä CentOS 6:ssa

Miksi sinun pitäisi käyttää SSHFS:ää? Kuinka asentaa etätiedostojärjestelmä SSHFS:llä CentOS 6:ssa

Monet järjestelmänvalvojat hallitsevat suuria määriä palvelimia. Kun tiedostoja on käytettävä eri palvelimien kautta, kirjaudu jokaiseen erikseen n

Half Life 2 -palvelimen määrittäminen CentOS 6:lle

Half Life 2 -palvelimen määrittäminen CentOS 6:lle

Tämä opetusohjelma kattaa Half Life 2 -pelipalvelimen asennuksen CentOS 6 -järjestelmään. Vaihe 1: Edellytysten asentaminen Voit määrittää ou

Kuinka asentaa Laravel GitScrum CentOS 7:ään

Kuinka asentaa Laravel GitScrum CentOS 7:ään

Laravel GitScrum tai GitScrum on avoimen lähdekoodin tuottavuustyökalu, joka on suunniteltu auttamaan kehitysryhmiä ottamaan käyttöön Scrum-metodologian samalla tavalla.

Koneiden nousu: tekoälyn todelliset sovellukset

Koneiden nousu: tekoälyn todelliset sovellukset

Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.

DDOS-hyökkäykset: lyhyt katsaus

DDOS-hyökkäykset: lyhyt katsaus

Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, ​​että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja