Instalare RethinkDB Cluster pe CentOS 7
Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit
RabbitMQ este un broker de mesaje open-source care acceptă AMQP, STOMP și alte tehnologii de comunicare. Este utilizat pe scară largă în aplicații de întreprindere și arhitecturi moderne de micro-servicii, unde acționează ca un canal de mesaj asincron între diferite micro-servicii. Acest ghid va descrie cum puteți grupa RabbitMQ pe mai multe servere CentOS 7 pentru a forma un broker de mesaje cu disponibilitate ridicată. În acest tutorial, un server va acționa ca un server master, iar celelalte servere vor acționa ca servere oglindă în cazul în care serverul principal devine indisponibil.
Firewall-ul CentOS, ( firewalld
), nu permite traficul primit în mod implicit. Pentru a face RabbitMQ disponibil pentru alte sisteme din rețeaua și în afara acesteia și pentru a ne permite accesul la consola de management, trebuie să deschidem mai întâi unele porturi.
Consola de administrare a interfeței web a RabbitMQ ascultă în mod implicit în port 15672
. Am dori să facem consola de management disponibilă publicului, astfel încât să o putem accesa de pe computerul nostru. Prin urmare, vom instrui firewalld
să deschidem permanent portul 15672
în zona publică (care este zona implicită și activă pe o instanță Vultr).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
Nodurile RabbitMQ trebuie să poată comunica între ei. Am dori să deschidem porturile necesare, dar numai prin rețeaua internă. Nu dorim ca nimeni de pe internet să poată administra sau contacta direct serverele noastre. Următoarele comenzi presupun că serverele noastre sunt pe 192.168.0.100/24
subrețea.
Primul serviciu este serviciul de epmd
descoperire de la egal la egal care ascultă în mod implicit în 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'
Pentru comunicare internode și CLI, RabbitMQ trebuie să poată comunica prin 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'
Instrumentele CLI comunică în intervalul de porturi 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'
Dacă aplicațiile dvs. au nevoie de protocolul AMQP, va trebui să deschideți 5671
și porturi și 5672
. Dacă trebuie să puteți comunica peste un alt protocol, puteți găsi informațiile necesare despre cerințele de rețea ale RabbitMQ pe documentația oficială 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'
Acum, că firewalld
este configurat, trebuie să-l instruim pentru a reîncărca configurația.
sudo firewall-cmd --reload
Repetați pașii din această secțiune pe toate serverele.
rabbitmqadmin
Pluginul de administrare vine cu un instrument Python numit rabbitmqadmin
care poate fi instalat cu ușurință pe sistem odată ce pluginul de gestionare este activat.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Trebuie să folosiți numele de gazdă ale serverului pentru a identifica serverele atunci când faceți cluster. În mod implicit, serverele nu au înregistrate DNS, iar conexiunea nu va reuși. Pentru a depăși rapid acest lucru, adăugați numele de gazdă principal și oglindă în /etc/hosts
fișier utilizând editorul preferat.
De exemplu, fișierul gazdelor maestrului dvs. ar putea arăta ca următorul. Observați ultimele două înregistrări, care permit serverelor să se identifice reciproc după numele lor de gazdă. Asigurați-vă că schimbați adresele IP pe cont propriu.
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
O condiție prealabilă de import pentru a permite nodurilor să se unească între ele este ca cookie-ul Erlang al tuturor nodurilor să fie identic. În mod implicit, fiecărui nod i se va atribui un cookie Erlang unic, deci trebuie să-l reconfigurați pe toate nodurile.
Următoarea comandă va seta cookie-ul Erlang la " WE<3COOKIES
", dar nu ezitați să schimbați acest lucru după bunul plac. Faceți acest lucru pe toate serverele.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Reporniți RabbitMQ pe toate serverele pentru a vă asigura că cookie-ul Erlang este reîncărcat corect.
sudo systemctl restart rabbitmq-server.service
Executați următoarele comenzi pe toate serverele, cu excepția serverului principal. Acest lucru va permite nodurilor să se alăture serverului principal și să formeze un cluster.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Verificați dacă nodurile s-au alăturat clusterului executând următoarea comandă.
sudo rabbitmqctl cluster_status
Toate nodurile dvs. vor apărea în secțiunea nodes
și running_nodes
secțiunea de ieșire. De acum nu mai trebuie să repetați pași pe fiecare server, configurația va fi automat oglindită la celelalte noduri.
Acum că avem un grup de noduri RabbitMQ, îl putem folosi pentru a face cozi și schimburi cu disponibilitate ridicată prin configurarea unei noi politici. Această politică poate fi adăugată prin RabbitMQ Management Console sau folosind interfața liniei de comandă.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
Următoarea listă va explica ce înseamnă fiecare parte a comenzii.
-p "/"
: Utilizați această politică pe "/"
vhost (implicit după instalare)--priority 1
: Ordinea în care se vor aplica politicile --apply-to "all"
: Poate fi "queues"
, "exchanges"
sau"all"
ha
: Numele pe care îl dăm politicii noastre ".*"
: Expresia obișnuită care este utilizată pentru a decide ce cozi sau schimburi este aplicată această politică. ".*"
se va potrivi cu orice'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: Reprezentarea JSON a politicii. Acest document descrie că vrem - exact 2 noduri pe care datele sunt sincronizate automatPe scurt, această politică ne va asigura că vom avea întotdeauna 2 copii ale datelor pe o coadă sau schimb, atâta timp cât avem cel puțin 2 noduri în funcțiune. Dacă aveți mai multe noduri puteți crește valoarea ha-params
. Se recomandă un cvorum, ( N/2 + 1
), de noduri. Dacă aveți mai multe copii ale datelor dvs., rezultați în discuri, i / o și utilizare netă mai ridicate, ceea ce ar putea duce la o performanță degradată.
Dacă doriți să reflectați datele la toate nodurile din cluster, puteți utiliza următorul document JSON.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Dacă doriți să reflectați datele doar în anumite noduri, (de exemplu: node-1
și node-2
), puteți utiliza următoarele.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Puteți schimba expresia regulată pentru a atribui politici diferite la cozi diferite. Spune că avem următoarele trei noduri:
Putem apoi să creăm două politici care vor rezulta în cozi cu un nume care începe cu „client” să fie oglindit la rabbit@client-ha
nod și toate cozile care au un nume care începe cu „produs” să fie oglindite la rabbit@product-ha
nod.
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"}
O mică remarcă aici: cozile exclusive nu sunt niciodată reflectate sau durabile în RabbitMQ, chiar dacă această politică ar corespunde astfel de cozi. Cozile exclusive sunt distruse automat odată ce un client se deconectează și, ca atare, nu ar fi de folos să-l reproduceți pe un alt server. Dacă serverul ar fi eșuat, clientul s-ar deconecta de la acesta și coada ar fi distrusă automat. Instanțele oglindite ar fi distruse și ele.
Pentru a testa configurația grupată, putem crea o coadă nouă folosind interfața liniei de comandă prin consola de administrare.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Aceasta va crea o coadă durabilă pe /
vhost implicit cu numele my-ha-queue
.
Rulați următoarea comandă și verificați în ieșire că coada are politica noastră „ha” atribuită și are pid pe master și pe un nod oglindă.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Acum putem publica un mesaj la coadă de la nodul principal și oprim RabbitMQ pe nodul principal.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Acum obțineți-l înapoi conectându-vă la nodul oglinzii.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
În cele din urmă, putem reporni nodul principal.
sudo systemctl start rabbitmq-server.service
După cum am menționat anterior, RabbitMQ creează automat un utilizator invitat cu o parolă de invitat implicită. Ar fi o practică proastă să lăsăm acest utilizator implicit pe un sistem expus public.
sudo rabbitmqctl delete_user guest
Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit
În anumite ocazii, este posibil ca un administrator de sistem să aibă nevoie să creeze un cont de utilizator și să restricționeze accesul acestora la gestionarea propriilor fișiere prin sFTP, dar nu b
Folosind un sistem diferit? NGINX poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy de poștă, echilibrator de sarcină, terminator TLS sau cachin
Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă
Odoo, cunoscută anterior drept OpenERP, este o cunoscută platformă de afaceri ERP open source. Întreprinderile de orice dimensiune pot beneficia de Odoo, datorită licenței sale abundente
Folosind un sistem diferit? Couch CMS este un sistem de gestionare a conținutului (CMS) simplu și flexibil, gratuit și deschis, care permite proiectanților web să deseneze
Folosind un sistem diferit? SonarQube este un instrument open source pentru dezvoltarea sistemului de calitate. Este scris în Java și acceptă mai multe baze de date. Oferă
NextCloud, așa cum sugerează și numele său, este o alternativă promițătoare a unei alte soluții de hosting de fișiere open source OwnCloud. În acest articol, vă voi arăta
Folosind un sistem diferit? Netdata este o stea în creștere în domeniul monitorizării în timp real a metricilor sistemului. Comparativ cu alte instrumente de același fel, Netdata:
Folosind un sistem diferit? În acest tutorial, voi explica cum să configurați un server Starbound pe CentOS 7. Condiții preliminare Trebuie să dețineți acest joc pe dvs.
Bine ați venit la un alt tutorial Vultr. Aici, veți învăța cum să instalați și să rulați un server SAMP. Acest ghid a fost scris pentru CentOS 6. Condiții preliminare pe care le veți obține
Folosind un sistem diferit? Elgg este un motor de rețea socială open source care permite crearea de medii sociale, cum ar fi rețelele sociale din campus
RStudio Server este ediția web a RStudio care este o serie de instrumente concepute pentru a facilita munca de codare folosind limbajul de programare R. În ti
Bolt este un CMS open source scris în PHP. Codul sursă Bolts este găzduit pe GitHub. Acest ghid vă va arăta cum instalați Bolt CMS pe un nou CentOS 7 Vult
Bugzilla este un sistem gratuit și open source de urmărire a erorilor, care este utilizat pe scară largă de diverși furnizori pentru a-și îmbunătăți continuu softwar-ul
Prezentare generală Acest articol este menit să vă ajute să obțineți un cluster Kubernetes și să funcționeze cu kubeadm în cel mai scurt timp. Acest ghid va implementa două servere, pe
Folosind un sistem diferit? Introducere Sails.js este un cadru MVC pentru Node.js, similar cu Ruby on Rails. Face pentru dezvoltarea aplicațiilor moderne ver
Funcțiile Vultrs Adu-ți spațiul IP permite o libertate fără precedent în alocarea propriilor resurse IP serverelor din norul Vultr. Noi generall
Acest tutorial va acoperi procesul de instalare a unui server de joc Half Life 2 pe CentOS 6 System. Pasul 1: Instalarea condițiilor preliminare Pentru a configura ou
Introducere Sistemele Linux sunt livrate cu instrumente de monitorizare în mod implicit, cum ar fi top, df și du care ajută la monitorizarea proceselor și a spațiului pe disc. De multe ori însă, acestea sunt
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.
Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.
Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.
Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.
CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?
Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.
Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!
Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.
Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe