Database clustering involverer ofte konfiguration og vedligeholdelse af en række servere og instanser, alle med et kollektivt formål. Med dette mener vi, at du kan have forskellige databaseservere på forskellige værter, som betjener de samme data.
Lad os for eksempel sige, at du har servere A, B, C og D, du beslutter dig for at installere MongoDB på hver server, men indser senere, at der er en ny version, du skulle have brugt. Når du har et stort antal servere, og du skal opdatere MongoDB-versionen, har det mange tilbageslag at konfigurere dem manuelt (en-for-en). Disse tilbageslag kan omfatte; tager for lang tid at omkonfigurere (derfor vil dit websted have en lang nedetid) eller gøre din DB tilbøjelig til nogle konfigurationsfejl.
Derudover er der altid gentagne opgaver, du gerne vil have udført automatisk, i stedet for at gennemgå de samme trin igen og igen, hver gang du vil lave lignende ændringer. På et tidspunkt er vi også nødt til at lære nye moduler, hvad angår teknologisk fremskridt, der kan hjælpe os med at øge klyngens ydeevne
Enkelt sagt har vi brug for et automatiseringssystem, der kan lette alle de nævnte opgaver. Puppet er et af de mest foretrukne softwaresystemer til at opnå dette siden:
- Det er nemt og hurtigere at konfigurere og implementere MongoDB-klynge.
- Gentagne opgaver kan nemt automatiseres, så de udføres automatisk senere.
- Hele klyngeinfrastrukturen kan administreres samlet fra en enkelt platform.
- Nem klargøring til nye noder i sky, hybrid eller fysisk miljø.
- Orkestrer ændringer og begivenheder på tværs af en klynge af noder.
- Opdag ressourcer inden for få minutter, der kan hjælpe dig med at udføre forskellige opgaver nemt.
- Skalerer godt fra 1 til 200.000 noder.
- Understøttet af en række platforme
Hvad er Puppet?
Puppet er et sprog, der bruges til at få en maskine til en ønsket tilstand eller rettere er en motor, der bruges til at fortolke og anvende nogle definerede instruktioner til et serveringssystem. Ligesom Ansible er Puppet også et konfigurationsstyringsværktøj, der bruges til at automatisere og udføre databaseklyngeopgaver. Det er dog mere avanceret og veletableret i betragtning af, at det er den ældste, derfor masser af nyligt integrerede funktioner, der ville gøre det mere sofistikeret end de andre. En af hovedårsagerne til, at jeg personligt foretrækker Puppet, er den mulighed, den giver mig til at konfigurere et stort antal noder forbundet med belastningsbalancere, netværksenheder eller firewalls. Puppet bruges ofte i store virksomheder med komplekse miljøer.
Sådan fungerer dukke
Puppet bruger idempotensteknikken, der hjælper den med at styre en bestemt maskine fra oprettelsestidspunktet og gennem hele dens livscyklus, selv med konfigurationsændringer. Kernefordelen ved dette er, at maskinen bliver opdateret over en årrække i stedet for at blive bygget flere gange fra bunden. I tilfælde af en opdatering kontrollerer Puppet den aktuelle målmaskinestatus, og ændringer vil kun blive anvendt, når der er en specifik ændring i konfigurationen.
Idempotens
Idempotens-arbejdsgangen er vist nedenfor:
Dukkemesteren indsamler detaljer vedrørende den aktuelle tilstand af målmaskinen og sammenligner den med konfigurationsdetaljerne på maskinniveau og returnerer derefter detaljerne, som sendes til konverteringslaget.
Konverteringslaget sammenligner den hentede konfiguration med de nyligt definerede konfigurationsdetaljer og opretter derefter et katalog, som sendes til målpuppet-agenterne, i dette tilfælde de målknudepunkter, som ændringerne skal anvendes for.
Konfigurationsændringerne anvendes derefter på systemet for at transformere det til en ønsket tilstand. Efter at ændringerne er blevet implementeret, sender Puppet-agenten en rapport tilbage til Puppet-mesteren, som er dokumenteret for at definere systemets nye tilstand som det leverede katalog.
Puppet Basic Components
-
Puppet Resources
Disse er de vigtigste modelleringskomponenter i en bestemt maskine, hvis beskrivelser vil få maskinen til en ønsket tilstand.
-
Udbydere
Udbydere er særlige ressourcer, der bruges til at tilføje pakker til systemet, f.eks. yum og apt-get. Der er standardudbydere, men man kan tilføje flere, når man har brug for nogle pakker.
-
Manifest
Dette er en samling af ressourcer, der er defineret enten i en funktion eller en klasse koblet sammen for at konfigurere et målsystem.
Strukturen skal være
resource:{‘module’: attribute => value }
For eksempel ved at installere mongodb kan vi have en manifestfil kaldet Mongodb.pp med følgende indhold:
package {‘mongodb’: ensure => installed }
-
Moduler
Dette er den vigtigste byggesten i Puppet, som dybest set er en samling af ressourcer, skabeloner og filer. De kan distribueres i ethvert operativsystem, og kan derfor bruges flere gange med den samme konfiguration.
-
Skabeloner
Skabeloner bruges til at definere tilpasset indhold og variabel input. De bruger Ruby-syntaksen, dvs. hvis du vil definere en port at lytte til:
Listen <% [email protected]_number %>
Port_number variabel i dette tilfælde er defineret i manifestet, der refererer til denne skabelon.
-
Statiske filer
Disse er generelle filer, der kan være nødvendige for at udføre specifikke opgaver. De er placeret i filbiblioteket i ethvert modul.
Puppet Installation
Med det formål at lære, skal vi installere og konfigurere marionet i en virtuel maskine, som vi vil oprette i vores lokale maskine. Først og fremmest skal du installere virtualbox og vagrant. Efter installationen skal du åbne en ny terminal og oprette en Puppet-mappe sandsynligvis på dit skrivebord og køre kommandoen $ vagrant init. Dette vil oprette en virtuel maskine og mærke den vagrant. Så kan vi logge ind på denne maskine med kommandoen $ vagrant ssh.
Hvis du får en skærm som den nedenfor, er din maskine oppe og køre.
Ellers, hvis du er på en servermaskine, kan du ignorere dette trin og fortsætte med at tilføje dukkepakken som nedenfor.
Tilføj dukkepakken med kommandoen
$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
Og pak derefter pakken ud og installer med
$ sudo dpkg -i puppet5-release-xenial.deb
Vi skal opdatere vores arkiver, så vi kører
$ sudo apt-get update
Installer dukke-agenten ved at køre
$ sudo apt-get install puppet-agent
Når installationen er færdig, kan vi bekræfte ved at kontrollere versionen. Du skal muligvis logge ud af din virtuelle maskine, for at Puppet path kan tilføjes til miljøet, og kør derefter $ puppet --version, eller hvis du ikke har logget ud, kør $ /opt/puppetlabs/bin/puppet --version. Hvis du får et versionsnummer som 5.5.14, så lykkedes installationen.
Efter at have installeret MongoDB ved hjælp af Mongodb.pp, vi oprettede ovenfor, kan vi simpelthen skrive en opgave for at opsætte en databaseprodukter og også tilføje en bruger til denne db.
‘Mongodb_database’ bruges til at oprette og administrere databaser i MongoDB
mongodb_database{‘products’:
ensure => present,
tries => 10
}
‘Mongodb_user kan bruges til at oprette og administrere brugere i en MongoDB-database.’
For at tilføje en bruger til 'produkter'-databasen
mongodb_user {userprod:
username => ‘prodUser’,
ensure => present,
password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
database => prodUser,
roles => [‘readWrite’, ‘dbAdmin’],
tries => 10
}
Konklusion
I denne blog har vi lært, hvad Puppet er, fordelene forbundet med det, og dets fungerende arkitektur. Puppet er lidt mere kompleks end de andre administrationsværktøjer (såsom Chef og Ansible), men den har en masse moduler, der kan bruges til at løse problemer omkring databasestyring. I den næste del skal vi diskutere, hvordan man forbinder fjernmaskiner, så de kan omkonfigureres ved hjælp af de definerede manifestfiler.