sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan implementeres MongoDB for høj tilgængelighed

Introduktion

MongoDB har stor understøttelse af høj tilgængelighed gennem ReplicaSets. Det er dog ikke nok at implementere et ReplicaSet for et produktionsklart system. Det sidste kræver lidt planlægning. Implementering er kun det indledende trin, og vi skal derefter bevæbne de operationelle teams med overvågning, alarmering, sikkerhed, uregelmæssigheder eller fejlregistrering, automatisk gendannelse/failover, backupstyring og andre værktøjer for at holde miljøet oppe og køre.

Forudsætninger

Før du kan starte med din MongoDB-implementering med ClusterControl, kræves nogle forberedelser. De understøttede platforme er RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS og Debian 7.x/8.x. De minimale OS-ressourcekrav er 2GB RAM, 2CPU og 20GB diskplads, der kører på x86 arkitektur. ClusterControl selv kan køre på almindelige VM'er eller barebone-værter, der kører on-prem, bag en firewall eller på Cloud VM'er.

Derudover kræver ClusterControl, at porte, der bruges af følgende tjenester, skal åbnes/aktiveres:
ICMP (ekkosvar/anmodning)
SSH (standard er 22)
HTTP (standard er 80)
HTTPS (standard er 443)
MySQL (standard er 3306) (intern database)
CMON RPC (standard er 9500)
CMON RPC TLS (standard er 9501)
CMON Events (standard er 9510)
CMON SSH (standard er 9511)
CMON Cloud (standard er 9518)

Streamingport til sikkerhedskopier gennem netcat (standard er 9999)

Den nemmeste og mest bekvemme måde at installere ClusterControl på er at bruge installationsscriptet fra Severalnines. Du skal blot downloade scriptet og udføre som root-bruger eller bruger med sudo root-tilladelse. Hvis du har brug for en mere manuel tilgang, for eksempel hvis dine servere er helt uden internetadgang, kan du følge instruktionerne i ClusterControl-dokumentationen.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Følg installationsguiden, hvor du vil blive guidet med opsætning af en intern ClusterControl-databaseserver og dens legitimationsoplysninger, cmon-adgangskoden til ClusterControl-brug og så videre. Du bør få følgende linje, når installationen er fuldført:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Næste trin er at generere en SSH-nøgle, som vi vil bruge til at konfigurere den adgangskodeløse SSH senere. Hvis du har et nøglepar, som du gerne vil bruge, kan du springe over oprettelsen af ​​et nyt.

Du kan bruge enhver bruger i systemet, men det skal have evnen til at udføre superbrugeroperationer (sudoer). I dette eksempel valgte vi root-brugeren:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Opsæt adgangskodefri SSH til alle noder, som du gerne vil overvåge/administrere via ClusterControl. I dette tilfælde vil vi sætte dette op på alle noder i stakken (inklusive selve ClusterControl noden). På ClusterControl-noden skal du køre følgende kommandoer for at kopiere ssh-nøgler og angive root-adgangskoden, når du bliver bedt om det:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Du kan derefter kontrollere, om det virker ved at køre følgende kommando på ClusterControl node:

$ ssh [email protected] "ls /root"

Sørg for, at du er i stand til at se resultatet af kommandoen ovenfor uden at skulle indtaste en adgangskode.
Når installationen er færdig, bør du kunne logge ind på webgrænsefladen via

https://<your_vm_name>/clustercontrol/#

Efter det første login vil du se et vindue med muligheder for at starte med din første implementering eller importere en eksisterende klynge.

ClusterControl Implementer og importer eksisterende klynge

Konfigurer arkiver

Før vi begynder at implementere, lad os tage et kig på pakkehåndteringssystemet. ClusterControl-implementeringsprocessen understøtter hele processen med klyngeinstallation. Det inkluderer OS-justeringer og pakkedownload og installation. Hvis dine databasenoder har begrænset adgang til internettet, og du ikke kan downloade pakker direkte fra noden, kan du oprette et pakkelager direkte på ClusterControl-værten.

ClusterControl-pakkelager

Der er tre måder at vedligeholde MongoDB-pakker i ClusterControl.

Brug leverandørlagre

Installer softwaren ved at konfigurere og bruge databaseleverandørens foretrukne softwarelager. ClusterControl installerer den seneste version af det, der er gemt af MongoDB-lageret.

Opsæt ikke leverandørlagre

Installer softwaren ved at bruge det allerede eksisterende softwarelager, der allerede er konfigureret på operativsystemet. Brugeren skal konfigurere softwarelageret manuelt på hver databasenode, og ClusterControl vil bruge dette lager til pakkeimplementering. Dette er godt, hvis databasenoderne kører uden internetforbindelser, og din virksomhed har et eksternt pakkesystem med MongoDB-pakker på plads.

Brug spejlede arkiver (Opret nyt arkiv)

Opret og spejle den aktuelle leverandørs lager og implementer derefter ved hjælp af det lokale spejlede lager. Det giver dig også mulighed for at "fryse" de seneste versioner af softwarepakkerne, der bruges til at klargøre en databaseklynge til en specifik leverandør (dvs. kun bruge Percona-pakker).

ClusterControl automatiserer oprettelsen af ​​internt pakkelager

Implementer ReplicaSet

ClusterControl understøtter MongoDB/Percona Server til MongoDB 3.x ReplicaSet. For at starte med implementeringen af ​​den nye klynge skal du gå til implementeringsindstillingen i øverste højre hjørne. Når du installerer dine databasenoder, skal du altid bruge rene og minimale VM'er. Eksisterende pakkeafhængigheder kan blive fjernet, hvis det kræves. Nye pakker vil blive installeret, og eksisterende pakker kan fjernes, når noden klargøres med den nødvendige software.

Det allerførste trin i implementeringsprocessen er at give ssh-legitimationsoplysninger, der passer til de værter, som du implementerer din klynge på. Da ClusterControl bruger adgangskodefri ssh til at oprette forbindelse til og konfigurere dine værter, er en ssh-nøgle påkrævet.

ClusterControl-implementering af MongoDB-klyngeguide

Det er tilrådeligt at bruge en uprivilegeret brugerkonto til at logge ind på værterne, så en sudo-adgangskode kan gives for at lette administrative opgaver. Hvis brugerkontoen ikke beder om en sudo-adgangskode, er dette ikke nødvendigt. Du har også mulighed for at deaktivere iptables og AppArmor eller SELinux på værten for at undgå problemet med den første implementering.

På det følgende skærmbillede kan du vælge at installere MongoDB binære filer fra enten MongoDB Inc eller fra Percona. Her skal du også angive din MongoDB administrative brugerkonto og adgangskode, da sikkerhed på brugerniveau er påkrævet.

ClusterControl-implementering af MongoDB-guiden, ReplicaSet

På denne skærm kan du også se, hvilken konfigurationsskabelon der bruges. ClusterControl bruger konfigurationsfilskabeloner til at sikre gentagelige implementeringer. Skabeloner gemmes på ClusterControl-værten og kan redigeres direkte ved hjælp af kommandolinjen eller gennem ClusterControl-brugergrænsefladen. Du kan også vælge at bruge leverandørens repositories, hvis du ønsker det, eller vælge dit eget repository. Derudover kan du automatisk oprette et nyt lager på ClusterControl-værten. Dette gør det muligt at fryse den version af MongoDB, som ClusterControl vil implementere til den aktuelle udgivelse. Når du har udført den relevante konfiguration her, skal du klikke på Deploy for at fortsætte.

Implementer sharding

ClusterControl kan også implementere Sharded Clusters. To metoder til at gøre det understøttes. Først kan du konvertere et eksisterende MongoDB ReplicaSet til en Sharded Cluster, som vist nedenfor.

ClusterControl Deploy MongoDB shards

Når der klikkes på "Konverter til Shard", bliver du bedt om at tilføje mindst én Config-server (til produktionsmiljøer skal du tilføje tre) og en router, også kendt som en "mongos"-proces. Det sidste trin er at vælge dine MongoDB-konfigurationsskabeloner til konfigurationsserver og router samt dit databibliotek. Klik til sidst på implementering. Når det er færdigt, vises det i din Databaseklynger-visning. Det vil vise din shard sundhed i stedet for individuelle tilfælde. Det er også muligt at tilføje yderligere shards efter behov.

Konverter til Shard

Hvis du tilfældigvis løber ind i skaleringsproblemer, kan du skalere dette ReplicaSet ved enten at tilføje flere sekundære eller skalere ud ved sharding. Du kan konvertere et eksisterende ReplicaSet til en sharded cluster, men dette er en lang proces, hvor du nemt kan lave fejl. I ClusterControl har vi automatiseret denne proces, hvor vi automatisk tilføjer Config-serverne, shard-routere og aktiverer sharding.

For at konvertere et ReplicaSet til en sharded klynge kan du blot udløse det via handlingsrullemenuen:

ClusterControl Konverter til shard

Planlæg sikkerhedskopiering

Det er essentielt at beholde backup af din database, og at din database har en god og nem proces til backup. ClusterControl har understøttelse af fuldstændig konsistent sikkerhedskopiering og gendannelse af dit MongoDB replikasæt eller sharded cluster.

Sikkerhedskopier kan tages manuelt eller kan planlægges. Centraliseringen af ​​sikkerhedskopier understøttes, med sikkerhedskopier gemt enten på Controller-filsystemet, inklusive netværksmonterede mapper eller uploadet til en forudkonfigureret Cloud-udbyder - i øjeblikket understøttede udbydere er Google Cloud Platform, Amazon Web Services og Microsoft Azure. Dette giver dig mulighed for at drage fuld fordel af avanceret livscyklusstyringsfunktionalitet leveret af Amazon og Google til funktioner som brugerdefinerede opbevaringsplaner, langsigtet arkivering og kryptering i hvile, blandt andre.

Backup-retention kan konfigureres; du kan vælge at beholde din sikkerhedskopi i en hvilken som helst periode eller aldrig at slette sikkerhedskopier. AES256-kryptering bruges til at sikre dine sikkerhedskopier mod useriøse elementer.

For hurtig gendannelse kan sikkerhedskopier gendannes direkte i backup-klyngen - ClusterControl håndterer hele gendannelsesprocessen fra lancering til klyngendannelse og fjerner fejltilbøjelige manuelle trin fra processen.

Aktiver driftsrapporter

Med ClusterControl kan du planlægge rapporter på tværs af miljøer som "Daglig systemrapport", "pakkeopgraderingsrapport", "skemaændringsrapport" samt "sikkerhedskopier" og "tilgængelighed." Disse rapporter hjælper dig med at holde dit miljø sikkert og operationelt. Du vil også se anbefalinger til, hvordan du løser huller. Rapporter i HTML-format kan e-mailes til SysOps, DevOps eller endda ledere, der gerne vil have regelmæssige statusopdateringer om et givent systems helbred.

Performancerådgivere

Rådgivere giver specifik rådgivning om, hvordan man løser problemer inden for områder som ydeevne, sikkerhed, logstyring, konfiguration, lagerplads og andre. ClusterControl kommer med en liste over foruddefinerede rådgivere, der er beregnet til at spore tilstanden af ​​forskellige metrikker og tilstanden af ​​dine databaser. Når det er nødvendigt, oprettes en advarsel. De kan udvides med manuelle scripts. For mere information, følg venligst vores seneste blog om "Sådan automatiseres analyse af databasearbejdsbelastning med ClusterControl Performance Advisors".

Blandt forskellige styresystemers ydeevnerådgivere kan du finde nedenstående relateret til MongoDB.

MongoDB sharding rådgivere
anvendte forbindelser
replikeringstjek
replikeringsvindue

Implementer i skyen

Fra version 1.6 giver ClusterControl dig mulighed for at oprette et MongoDB 3.4 ReplicaSets i skyen. De understøttede cloudplatforme er Amazon AWS, Google Cloud og Microsoft Azure.

Guiden vil lede dig gennem VM-maskinens oprettelse og MongoDB-indstillinger, alt sammen på ét sted.

ClusterControl implementer MongoDB ReplicaSet i skyen

Processen lader dig vælge OS-parametre inklusive netværksopsætning. Der er ingen grund til at kopiere SSH-nøgler, de tilføjes automatisk. Når jobbet er udført, vil du se din klynge i hoveddashboardet. Fra nu af kan du administrere din MongoDB-klynge som enhver anden i ClusterControl.

ClusterControl implementer MongoDb RelicaSet i skyen, VM-netværksindstillinger

Sikkerhedstip

På dette tidspunkt skulle din nye klynge være oppe at køre. Før du giver brugere og applikationsprocesser adgang til data, skal du definere klyngesikkerhedsindstillinger. I vores tidligere blogs rejste vi bekymringer om standard sikkerhedskonfiguration. Her er nogle af de vigtigste ting, du skal overveje, før du videregiver din nye klynge til andre teams.

Skift standardporte - som standard vil MongoDB binde til standardporte:27017 for MongoDB ReplicaSets eller Shard-routere, 27018 for shards og 27019 for Config-servere. Brug af standardporte anbefales ikke, da det forenkler muligheden for et hackerangreb.

Aktiver godkendelse - uden autentificering kan brugere logge ind uden adgangskode. Aktiver godkendelse på alle dine miljøer (udvikling, certificering og produktion).

security:
    Authentication: on

Brug stærke adgangskoder - hvis nødvendigt, brug en adgangskodegenerator til at generere komplekse adgangskoder.

Tilføj replikatnøglefil - med nøglefilen aktiveret, vil godkendelsen af ​​replikeringsstrømmen blive krypteret.

Kryptér dine sikkerhedskopier - ClusterControl giver dig mulighed for at kryptere dine sikkerhedskopier.

For yderligere læsning har vi en blog om, hvordan man sikrer MongoDB.

Aktiver Cluster Auto Recovery

Den sidste men ikke mindst funktion, der skal aktiveres, ville være automatisk gendannelse af node og klynge.

ClusterControl kan arbejde for dig som et udvidet 24/7 DBA-teammedlem. Der er to hovedfunktioner her. Automatisk nodegendannelse og automatisk klyngendannelse.

Når automatisk gendannelse af node er aktiveret, vil ClusterControl reagere på knudeproblemer, og i tilfælde af fejl, vil den forsøge at gendanne individuelle noder. Dette er for at løse ting som f.eks. en proces, der kører med hukommelse eller service, der kræver start efter en strømafbrydelse, uanset hvad der forårsager et problem med tjenesten nede.

Muligheden for klyngendannelse er endnu mere sofistikeret. Den udfører en omstilling, hvis det er nødvendigt.

I så fald vil en tilbagerulning af ændringer, der ikke er replikeret til slaverne, blive placeret i en 'rollback'-mappe, så det er op til administratoren at gendanne den.

For at konfigurere node og klynge automatisk gendannelse skal du bare aktivere dem i hovedbetjeningspanelet.


  1. MongoDB SSL med selvsignerede certifikater i Node.js

  2. MongoDB:locale::facet::_S_create_c_locale navn er ikke gyldigt

  3. Sådan bruger du mongoimport til at importere csv

  4. Hvordan ændrer man rækkefølgen af ​​array med MongoDB?