Installer Plesk på CentOS 7
Bruker du et annet system? Plesk er et proprietært kontrollpanel for webverten som lar brukere administrere sine personlige og/eller klienters nettsteder, databaser
RabbitMQ er en åpen kildekode-meldingsmegler som støtter AMQP, STOMP og andre kommunikasjonsteknologier. Den er mye brukt i bedriftsapplikasjoner og moderne mikrotjenestearkitekturer der den fungerer som en asynkron meldingskanal mellom forskjellige mikrotjenester. Denne veiledningen vil beskrive hvordan du kan gruppere RabbitMQ på flere CentOS 7-servere for å danne en meldingsmegler med høy tilgjengelighet. I denne opplæringen vil en server fungere som en hovedserver og de andre serverne vil fungere som speilservere i tilfelle hovedserveren blir utilgjengelig.
CentOS-brannmuren, ( firewalld
), tillater ikke innkommende trafikk som standard. For å gjøre RabbitMQ tilgjengelig for andre systemer i og utenfor nettverket, og for å gi oss tilgang til administrasjonskonsollen, må vi først åpne noen porter.
Nettgrensesnittadministrasjonskonsollen til RabbitMQ lytter som standard på port 15672
. Vi ønsker å gjøre administrasjonskonsollen offentlig tilgjengelig slik at vi kan få tilgang til den fra datamaskinen vår. Vi vil derfor instruere om firewalld
å permanent åpne port 15672
i den offentlige sonen (som er standard og aktiv sone på en Vultr-forekomst).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
RabbitMQ-nodene må kunne kommunisere med hverandre. Vi vil gjerne åpne de nødvendige portene, men kun over det interne nettverket. Vi ønsker ikke at noen på internett skal kunne administrere eller kontakte serverne våre direkte. Følgende kommandoer forutsetter at våre servere er på 192.168.0.100/24
subnettet.
Den første tjenesten er epmd
peer discovery-tjenesten som lytter som standard på 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'
For internode- og CLI-kommunikasjon må RabbitMQ kunne kommunisere over 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-verktøyene kommuniserer over portområdet 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'
Hvis applikasjonene dine trenger AMQP-protokollen, må du også åpne porter 5671
og 5672
. Hvis du trenger å kunne kommunisere over en annen protokoll, kan du finne nødvendig informasjon om nettverkskravene til RabbitMQ i den offisielle RabbitMQ-dokumentasjonen .
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å som firewalld
er konfigurert, må vi instruere den om å laste inn konfigurasjonen på nytt.
sudo firewall-cmd --reload
Gjenta trinnene fra denne delen på alle servere.
rabbitmqadmin
Administrasjonspluginen kommer med et Python-verktøy kalt rabbitmqadmin
som enkelt kan installeres på systemet når administrasjonspluginen er aktivert.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Du må bruke serverens vertsnavn for å identifisere serverne ved klynging. Som standard har serverne ingen DNS-post tilordnet, og tilkoblingen vil mislykkes. For raskt å overvinne dette, legg til master- og speilvertsnavnet til /etc/hosts
filen ved å bruke favorittredigeringsprogrammet ditt.
For eksempel kan masterens vertsfil se slik ut. Legg merke til de to siste postene, som lar serverne identifisere hverandre ved hjelp av vertsnavnet. Sørg for å endre IP-adressene til dine egne.
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
En importforutsetning for å la noder slå seg sammen er at Erlang-informasjonskapselen til alle noder er identiske. Som standard vil hver node bli tildelt en unik Erlang-informasjonskapsel, så du må rekonfigurere den på alle noder.
Følgende kommando vil sette Erlang-informasjonskapselen til " WE<3COOKIES
", men endre denne gjerne til din smak. Gjør dette på alle servere.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Start RabbitMQ på nytt på alle servere for å sikre at Erlang-informasjonskapselen er riktig lastet inn på nytt.
sudo systemctl restart rabbitmq-server.service
Utfør følgende kommandoer på alle servere bortsett fra på hovedserveren. Dette vil la nodene bli med hovedserveren og danne en klynge.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Bekreft at nodene har sluttet seg til klyngen ved å kjøre følgende kommando.
sudo rabbitmqctl cluster_status
Alle nodene dine vises i nodes
og- running_nodes
delen av utdataene. Fra nå av trenger du ikke lenger å gjenta trinnene på hver server, konfigurasjonen vil automatisk speiles til de andre nodene.
Nå som vi har en klynge av RabbitMQ-noder, kan vi bruke dette til å lage høytilgjengelige køer og utvekslinger ved å sette opp en ny policy. Denne policyen kan legges til gjennom RabbitMQ Management Console eller ved å bruke kommandolinjegrensesnittet.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
Følgende liste vil forklare hva hver del av kommandoen betyr.
-p "/"
: Bruk denne policyen på "/"
vhost (standard etter installasjon)--priority 1
: Rekkefølgen for å bruke retningslinjene --apply-to "all"
: Kan være "queues"
, "exchanges"
eller"all"
ha
: Navnet vi gir til vår policy ".*"
: Det regulære uttrykket som brukes til å bestemme hvilke køer eller børser denne policyen skal brukes på. ".*"
vil matche hva som helst'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: JSON-representasjonen av policyen. Dette dokumentet beskriver at vi ønsker - nøyaktig 2 noder som dataene automatisk synkroniseres påKort fortalt vil denne policyen sikre at vi alltid vil ha 2 kopier av dataene på en kø eller sentral så lenge vi har minst 2 noder oppe og kjører. Hvis du har flere noder kan du øke verdien av ha-params
. Et quorum, ( N/2 + 1
), av noder anbefales. Å ha flere kopier av dataene dine vil føre til høyere disk-, i/o- og nettbruk, noe som kan føre til dårligere ytelse.
Hvis du ønsker å speile dataene til alle nodene i klyngen, kan du bruke følgende JSON-dokument.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Hvis du vil speile dataene kun til spesifikke noder (for eksempel: node-1
og node-2
), kan du bruke følgende.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Du kan endre det regulære uttrykket for å tilordne forskjellige policyer til forskjellige køer. La oss si at vi har følgende tre noder:
Vi kan da lage to policyer som vil resultere i at køer har et navn som starter med "klient" som skal speiles til rabbit@client-ha
noden og at alle køer som har et navn som starter med "produkt" speiles til rabbit@product-ha
noden.
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"}
En liten bemerkning her: eksklusive køer er aldri speilvendt eller holdbare i RabbitMQ, selv om denne policyen ville samsvare med slike køer. Eksklusive køer blir automatisk ødelagt når en klient kobler fra, og som sådan ville det ikke være til nytte å replikere den til en annen server. Hvis serveren skulle svikte, ville klienten koble seg fra den og køen vil bli ødelagt automatisk. Speilvendte forekomster vil også bli ødelagt.
For å teste det grupperte oppsettet kan vi opprette en ny kø ved å bruke kommandolinjegrensesnittet gjennom administrasjonskonsollen.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Dette vil skape en varig kø på standard /
vhost med navnet my-ha-queue
.
Kjør følgende kommando og kontroller i utdataene at køen har vår 'ha'-policy tildelt og har pid-er på masteren og på en speilnode.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Vi kan nå publisere en melding til køen fra masternoden og stoppe RabbitMQ på masternoden.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Få den nå tilbake ved å koble til speilnoden.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Til slutt kan vi starte masternoden vår på nytt.
sudo systemctl start rabbitmq-server.service
Som nevnt før oppretter RabbitMQ automatisk en gjestebruker med et standard gjestepassord. Det ville være dårlig praksis å la denne standardbrukeren være på et offentlig eksponert system.
sudo rabbitmqctl delete_user guest
Bruker du et annet system? Plesk er et proprietært kontrollpanel for webverten som lar brukere administrere sine personlige og/eller klienters nettsteder, databaser
Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om
Introduksjon Lighttpd er en apachegaffel som har som mål å være mye mindre ressurskrevende. Den er lett, derav navnet, og er ganske enkel å bruke. Installer
VULTR har nylig gjort endringer på sin side, og alt skal nå fungere bra ut av boksen med NetworkManager aktivert. Skulle du ønske å deaktivere
Icinga2 er et kraftig overvåkingssystem, og når det brukes i en master-klient-modell, kan det erstatte behovet for NRPE-baserte overvåkingskontroller. Mester-klienten
Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy
Bruker du et annet system? Microweber er en åpen kildekode dra og slipp CMS og nettbutikk. Microweber-kildekoden er vert på GitHub. Denne guiden vil vise deg
Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern
Bruker du et annet system? Mattermost er et åpen kildekode, selvdrevet alternativ til Slack SAAS-meldingstjenesten. Med andre ord, med Mattermost kan du ca
Hva du trenger En Vultr VPS med minst 1 GB RAM. SSH-tilgang (med root/administratorrettigheter). Trinn 1: Installere BungeeCord Først
Plesk-kontrollpanelet har en veldig fin integrasjon for Lets Encrypt. Lets Encrypt er en av de eneste SSL-leverandørene som gir ut sertifikater komplett
Lets Encrypt er en sertifiseringsinstans dedikert til å tilby SSL-sertifikater gratis. cPanel har bygget en ryddig integrasjon slik at du og din klient
Bruker du et annet system? Concrete5 er et åpen kildekode CMS som tilbyr mange karakteristiske og nyttige funksjoner for å hjelpe redaktører med å produsere innhold enkelt og
Bruker du et annet system? Review Board er et gratis og åpen kildekodeverktøy for gjennomgang av kildekode, dokumentasjon, bilder og mye mer. Det er nettbasert programvare
I denne veiledningen lærer du hvordan du setter opp HTTP-autentisering for en Nginx-webserver som kjører på CentOS 7. Krav For å komme i gang trenger du
Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller
YOURLS (Your Own URL Shortener) er en åpen kildekode-applikasjon for URL-forkorting og dataanalyse. I denne artikkelen vil vi dekke installasjonsprosessen
Bruker du et annet system? Introduksjon ArangoDB er en åpen kildekode NoSQL-database med en fleksibel datamodell for dokumenter, grafer og nøkkelverdier. Det er
Innledning /etc/-katalogen spiller en kritisk rolle i måten et Linux-system fungerer på. Grunnen til dette er fordi nesten alle systemkonfigurasjoner
Mange systemadministratorer administrerer store mengder servere. Når filer må åpnes på tvers av forskjellige servere, logger du på hver enkelt individuelt ca
Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.
Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.
Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.
Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.
Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...
Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.
Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.
Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.
I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.
Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer