Mens MongoDB har brugt næsten et årti på at opnå modenhed (første udgivelse februar 2009), er teknologien lidt af et mysterium for dem, der har erfaring i konventionelle relationelle database-miljøer (RDBMS). Det kan være udfordrende at integrere NoSQL i et eksisterende miljø uden dybdegående viden. Det er ikke ualmindeligt at se MongoDB køre langs MySQL eller en anden RDBMS-database.
Erfaringen med RDBMS kan hjælpe med at forstå nogle af processerne, men du skal vide, hvordan du omsætter din ekspertise til NoSQL-verdenen. Håndtering af produktionsmiljøer involverer trin som implementering, overvågning af oppetid og ydeevne, vedligeholdelse af systemsikkerhed, styring af HA, sikkerhedskopier og så videre. Både RDBMS og NoSQL er levedygtige muligheder, men der er specifikke kritiske forskelle mellem de to, som brugere skal huske på, mens de implementerer eller administrerer MongoDB. Teknologien ændrer sig hurtigt, og vi er nødt til at tilpasse os hurtigt.
Når MongoDB pludselig er dit ansvar, garanterer administrationsværktøjer, at de MongoDB-databaser, du administrerer, er stabile og sikre. Brug af foruddefinerede processer og automatisering kan ikke kun spare dig tid, men også beskytte mod de almindelige fejl. En administrationsplatform, der systematisk adresserer alle de forskellige aspekter af databasens livscyklus, vil være mere robust end at sammenlappe en række punktløsninger.
Kernen i ClusterControl er dens automatiseringsfunktionalitet, der lader dig automatisere de databaseopgaver, du skal udføre regelmæssigt, som at implementere nye databaser, tilføje og skalere nye noder, administrere sikkerhedskopier, høj tilgængelighed og failover, topologiændringer, opgraderinger og mere. ClusterControl giver programmeret sikkerhed og bevarer integriteten af din databaseinfrastruktur. Desuden er MongoDB-brugere med ClusterControl ikke længere underlagt leverandørlåsning; noget, der blev stillet spørgsmålstegn ved af mange for nylig. Du kan implementere og importere en række MongoDB-versioner og leverandører fra en enkelt konsol gratis. Brugere af MongoDB skal ofte bruge en blanding af værktøjer og hjemmelavede scripts for at opfylde deres krav, og det er godt at vide, at du kan finde dem kombineret i det ene produkt.
I denne artikel viser vi dig, hvordan du implementerer og administrerer MongoDB 4.0 på en automatiseret måde. Du finder her, hvordan du gør:
- ClusterControl-installation
- MongoDB-implementeringsproces
- Implementer en ny klynge
- Importér eksisterende klynge
- Skalering af MongoDB
- Læseskalering (repliksæt)
- Skriv skalering (sharding)
- Sikring af MongoDB
- Overvågning og trending
- Sikkerhedskopiering og gendannelse
ClusterControl-installation
For at starte med ClusterControl har du brug for en dedikeret virtuel maskine eller vært. Kravene til VM og understøttede systemer er beskrevet her. Den grundlæggende VM kan starte fra 2 GB, 2 kerner og diskplads 20 GB lagerplads, enten on-prem eller i skyen.
Installationen er godt beskrevet i dokumentationen, men grundlæggende handler det om download af installationsscriptet, som vil lede dig gennem guiden. Guiden scriptet opsætter den interne database, installerer nødvendige pakker, repositories og laver andre nødvendige justeringer. Til internetlåsemiljøer kan du bruge offlineinstallationsprocessen.
ClusterControl kræver SSH-adgang til databaseværterne, og overvågningen kan være agent-baseret eller agentløs. Ledelsen er agentløs.
Opsætning af adgangskodefri SSH til alle målnoder (ClusterControl og alle databaseværter) involverer at køre følgende kommandoer på ClusterControl-serveren:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
MongoDB-implementering og skalering
Implementer en ny MongoDB 4.0-klynge
Når vi kommer ind i ClusterControl-grænsefladen, er den første ting at gøre at implementere en ny klynge eller importere en eksisterende. Den nye version 1.7.1 introducerer understøttelse af version 4.0. Du kan nu implementere/importere og administrere MongoDB v4.0 med understøttelse af SSL-forbindelser.
Vælg indstillingen "Deploy Database Cluster", og følg instruktionerne, der vises.
ClusterControl Deploy Database ClusterNår vi vælger MongoDB, skal vi angive bruger, nøgle eller adgangskode og port for at forbinde med SSH til vores servere. Vi har også brug for navnet på vores nye klynge, og hvis vi ønsker, at ClusterControl skal installere den tilsvarende software og konfigurationer for os.
Efter opsætning af SSH-adgangsoplysningerne skal vi indtaste dataene for at få adgang til vores database. Vi kan også angive, hvilket lager der skal bruges. Lagringskonfiguration er et vigtigt aspekt for databaseservere og klynger. Du kan have tre typer af depotet, når du installerer databaseserver/klynge ved hjælp af ClusterControl:
- Brug Vendor Repository
Levering af software ved at konfigurere og bruge databaseleverandørens foretrukne softwarelager. ClusterControl installerer den seneste version af det, der leveres af databaseleverandørens lager. - Opsæt ikke leverandørlagre
Lever software ved at bruge det allerede eksisterende softwarelager, der allerede er konfigureret på noderne. Brugeren skal konfigurere softwarelageret manuelt på hver databasenode, og ClusterControl vil bruge dette lager til implementering. Dette er godt, hvis databasenoderne kører uden internetforbindelser. - Brug spejlede arkiver (Opret nyt arkiv)
Opret og spejle den aktuelle databaseleverandørs arkiv og implementer derefter ved hjælp af det lokale spejlede arkiv. Dette giver dig mulighed for at "fryse" de aktuelle versioner af softwarepakkerne.
I det næste trin skal vi tilføje vores servere til den klynge, som vi skal oprette. Når vi tilføjer vores servere, kan vi indtaste IP eller værtsnavn. Til sidstnævnte skal vi have en DNS-server eller have tilføjet vores MongoDB-servere til den lokale opløsningsfil (/etc/hosts) i vores ClusterControl, så den kan løse det tilsvarende navn, som du vil tilføje. For vores eksempel vil vi implementere et ReplicaSet med tre servere, en primær og to sekundære. Det er muligt kun at installere 2 MongoDB-noder (uden arbiter). Forbeholdet ved denne tilgang er ingen automatisk failover, da en 2-node opsætning er sårbar over for split hjerne. Hvis den primære node går ned, kræves manuel failover for at gøre den anden server som primær. Automatisk failover fungerer fint med 3 noder og mere. Det anbefales, at et replikasæt har et ulige antal stemmeberettigede medlemmer. Fejltolerance for et replikasæt er antallet af medlemmer, der kan blive utilgængelige og stadig efterlade nok medlemmer i sættet til at vælge en primær. Fejltolerancen for tre medlemmer er én, for fem er det to osv.
På samme side kan du vælge mellem forskellige MongoDB-versioner:
ClusteControl Deploy MongoDB version 4.0Når alt er indstillet, skal du trykke på deploy-knappen. Du kan overvåge status for oprettelsen af vores nye klynge fra ClusterControl-aktivitetsmonitoren. Når opgaven er færdig, kan vi se vores klynge på hovedskærmen for ClusterControl og på topologivisningen.
ClusterControl TopologivisningSom vi kan se på billedet, kan vi, når vi har oprettet vores klynge, udføre flere opgaver på den, som at konvertere replikasæt til shard eller tilføje noder til klyngen.
ClusterControl ScalingImporter en ny klynge
Vi har også mulighed for at administrere en eksisterende klynge ved at importere den til ClusterControl. Et sådant miljø kan oprettes ved ClusterControl eller andre metoder såsom docker-installation.
ClusterControl import MongoDBFørst skal vi indtaste SSH-adgangsoplysningerne til vores servere. Derefter indtaster vi adgangsoplysningerne til vores database, serverdatabiblioteket og versionen. Vi tilføjer noderne efter IP eller værtsnavn, på samme måde som når vi implementerer, og trykker på Importer. Når opgaven er færdig, er vi klar til at administrere vores klynge fra ClusterControl.
Skalering af MongoDB
En af hjørnestenene i MongoDB er, at den er bygget med høj tilgængelighed og skalering i tankerne. Skalering kan udføres enten vertikalt ved at tilføje flere ressourcer til serveren eller horisontalt med flere noder. Horisontal skalering er, hvad MongoDB er god til, og det er ikke meget mere end at sprede arbejdsbyrden til flere maskiner. Faktisk gør vi brug af flere billige råvarehardwarebokse i stedet for at opgradere til en dyrere højtydende server. MongoDB tilbyder både læse- og skriveskalering, og vi vil afdække forskellene mellem disse to strategier for dig. Om du skal vælge læse- eller skriveskalering afhænger alt af arbejdsbyrden for din applikation:Hvis din applikation har en tendens til at læse oftere, end den skriver data, vil du sandsynligvis gerne bruge MongoDB's læseskaleringsfunktioner.
Med ClusterControl er det et nemt trin at tilføje flere servere til klyngen. Du kan gøre det fra GUI eller CLI. For mere avancerede brugere kan du bruge ClusterControl Developer Studio og skrive en ressourcebasebetingelse for at udvide din klynge vandret.
MongoDB ReplicaSetSharding
MongoDB-sharding-løsningen ligner eksisterende sharding-rammer for andre større databaseløsninger. Det gør brug af en typisk opslagsløsning, hvor shardingen er defineret i en shard-nøgle, og områderne gemmes i en konfigurationsdatabase. MongoDB arbejder med tre komponenter for at finde den korrekte shard til dine data. Et typisk shardet MongoDB-miljø ser sådan ud:
MongoDB ShardingDen første komponent, der bruges, er shard-routeren kaldet mongos. Alle læse- og skrivehandlinger skal sendes til shard-routeren, så alle shards fungerer som en enkelt database for klientapplikationen. Shard-routeren dirigerer forespørgslerne til de relevante shards ved at konsultere Configserver.
ClusterControl Konverter til ShardShard management er virkelig nemt i MongoDB. Du kan tilføje og fjerne shards online, og MongoDB shard-routeren vil automatisk justere til det, du fortæller den til. Hvis du ønsker at vide mere i dybden om, hvordan man bedst håndterer shards, kan du læse vores blogindlæg om håndtering af MongoDB shards.
Sikring af MongoDB
Relaterede ressourcer ClusterControl til MongoDB MongoDB Automation &Management med ClusterControlMongoDB kommer med meget lidt sikkerhed ud af æsken:for eksempel er godkendelse deaktiveret som standard. Med andre ord:som standard har enhver rodrettigheder over enhver database. En af de ændringer, MongoDB anvendte for at mindske risici, var at ændre sin standardbinding til 127.0.0.1. Dette forhindrer det i at blive bundet til den eksterne IP-adresse, men naturligvis vil dette blive vendt tilbage af de fleste mennesker, der installerer det. ClusterControl fjerner menneskelige fejl og giver adgang til en række sikkerhedsfunktioner for automatisk at beskytte dine databaser mod hacks og andre trusler. Vi har tidligere offentliggjort en kort video med sikkerhedstip.
Den nye version af ClusterControl tilbyder SSL-understøttelse af MongoDB-forbindelser. Aktivering af SSL tilføjer endnu et sikkerhedsniveau for kommunikation mellem applikationerne (inklusive ClusterControl) og databasen. MongoDB-klienter åbner krypterede forbindelser til databaseserverne og verificerer identiteten af disse servere, før de overfører følsomme oplysninger.
For at aktivere SSL-forbindelse skal du bruge den nyeste s9s-klient. Du kan installere det med
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Eller følg andre mulige installationsmetoder beskrevet her.
Når du har installeret s9s-værktøjer (min. version 1.7-93.1), kan du bruge --enable-ssl flag for at aktivere SSL-forbindelse.
Eksempel nedenfor:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl vil udføre alle nødvendige trin, inklusive certificeringsoprettelse på alle klynge noder. Sådanne certifikater kan vedligeholdes senere på fanen Nøglestyring.
ClusterControl Key ManagementOvervågning
Når du arbejder med databasesystemer, bør du være i stand til at overvåge dem. Det vil gøre dig i stand til at identificere tendenser, planlægge opgraderinger eller forbedringer eller reagere effektivt på eventuelle problemer eller fejl, der måtte opstå.
ClusterControl MongoDB-oversigtDen nye ClusterControl 1.7.1 tilføjer overvågning i høj opløsning til MongoDB-baseret. Det bruger Prometheus som datalageret med PromQL forespørgselssprog. Listen over dashboards inkluderer MongoDB Server, MongoDB ReplicaSet, System Overview og Cluster Overview Dashboards. ClusterControl installerer Prometheus-agenter, konfigurerer metrikker og bevarer adgang til Prometheus-eksportørers konfiguration via dens GUI, så du bedre kan administrere parameterkonfiguration som samlerflag for eksportørerne (Prometheus). Vi har beskrevet detaljeret, hvad der kan overvåges for nylig, i artiklen Sådan overvåges MongoDB med Prometheus &ClusterControl.
ClusterControl MongoDB SCUMM DashboardsAlarm
Som databaseoperatør skal vi informeres, når der sker noget kritisk i vores database. De tre vigtigste metoder i ClusterControl til at få en advarsel omfatter:
- e-mail-meddelelser
- integrationer
- rådgivere
Du kan indstille e-mailmeddelelserne på brugerniveau. Gå til Indstillinger> E-mail-meddelelser. Hvor du kan vælge mellem kritikalitet og type advarsel, der skal sendes.
Den næste metode er at bruge integrationstjenester. Dette er for at videregive den specifikke kategori af begivenheder til den anden service som ServiceNow-billetter, Slack, PagerDuty osv., så du kan oprette avancerede notifikationsmetoder og integrationer i din organisation.
ClusterControl Integration ServicesDen sidste er at involvere sofistikeret metrisk analyse i Advisor-sektionen, hvor du kan bygge intelligente checks og triggere. Et eksempel her kunne være forudsigelse af diskpladsforbrug eller klyngeskalering ved at tilføje noder, når arbejdsbelastningen når forudindstillet niveau.
ClusterControl Advisors for MongoDBSikkerhedskopiering og gendannelse
Nu hvor du har din MongoDB replikaSet op og køre, og har din overvågning på plads, er det tid til det næste trin:Sørg for, at du har en sikkerhedskopi af dine data.
ClusterControl Opret sikkerhedskopieringspolitikClusterControl giver en grænseflade til MongoDB backup management med understøttelse af planlægning og kreative rapporter. Det giver dig to muligheder for sikkerhedskopieringsmetoder.
- Mongodump
- Mongodb konsekvent backup
Mongodump dumper alle data i binært JSON (BSON) format til den angivne placering. Mongorestore kan senere bruge BSON-filerne til at gendanne din database. ClusterControl MongoDB-konsekvent sikkerhedskopiering inkluderer transaktionerne fra oploggen, der blev eksekveret under sikkerhedskopieringen.
ClusterControl Backup EncryptionEn god backup-strategi er en kritisk del af ethvert databasestyringssystem. ClusterControl tilbyder mange muligheder for sikkerhedskopiering og gendannelse/gendannelse.
ClusterControl Backup Schedule ControlClusterControl sikkerhedskopiering 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.