Databaseimplementering for flere servere bliver mere kompleks og tidskrævende med tiden, når der tilføjes nye ressourcer eller foretages ændringer. Derudover er der sandsynlighed for menneskelige fejl, der kan føre til katastrofale udfald, når systemet konfigureres manuelt.
Et automatiseringsværktøj til databaseimplementering vil gøre os i stand til at implementere en database på tværs af flere servere lige fra udviklings- til produktionsmiljøer. Resultaterne fra en automatiseret implementering er pålidelige, mere effektive og forudsigelige udover at give den aktuelle tilstandsinformation for dine noder, som kan bruges yderligere til at planlægge for ressourcer, du skal tilføje til dine servere. Med en veladministreret implementering forbedres produktiviteten af både udviklings- og driftsteams, hvilket gør det muligt for virksomheden at udvikle sig hurtigere, opnå mere, og på grund af nem hyppig implementering vil den overordnede softwareopsætning i sidste ende blive bedre og fungere pålideligt for slutbrugerne.
MongoDB kan implementeres manuelt, men opgaven bliver mere og mere besværlig, når du skal konfigurere en klynge af mange medlemmer, der hostes på forskellige servere. Vi er derfor nødt til at beslutte os for at bruge et bilværktøj, der kan spare os for stress. Nogle af de tilgængelige værktøjer, der kan bruges, inkluderer Puppet, Chef, Ansible og SaltStack.
De vigtigste fordele ved at implementere din MongoDB med et af disse værktøjer er:
- Tidsbesparelse. Forestil dig at have 50 noder til din database, og du skal opdatere MongoDB-versionen for hver. Dette vil tage dig aldre gennem processen. Men med et automatisk værktøj skal du bare skrive nogle instruktioner og udstede en kommando for at udføre resten af opdateringen for dig. Udviklere vil så have tid til at arbejde på nye funktioner i stedet for at rette manuelle implementeringer.
- Reducerede fejl og dermed kundetilfredshed. Nye opdateringer kan introducere fejl i et databasesystem, især hvis konfigurationen skal udføres manuelt. Med et værktøj som SaltStack reducerer fjernelse af manuelle trin menneskelige fejl, og hyppige opdateringer med nye funktioner vil imødekomme kundernes behov og dermed holde organisationen konkurrencedygtig.
- Lavere konfigurationsomkostninger. Med et implementeringsværktøj kan enhver implementere selv dig selv, da selve processen vil være meget nemmere. Dette vil eliminere behovet for eksperter til at udføre arbejdet og reduceret fejl
Hvad er SaltStack
SaltStack er et open source fjernudførelsesværktøj og et konfigurationsstyringssystem udviklet i Python.
Fjernudførelsesfunktionerne bruges til at køre kommandoer på forskellige maskiner parallelt med et fleksibelt målretningssystem. Hvis du for eksempel har 3 servermaskiner, og du gerne vil installere MongoDB for hver, kan du køre installationskommandoerne på disse maskiner samtidigt fra en masterknude.
Med hensyn til konfigurationsstyring etableres en klient-server-grænseflade for at lette og sikkert transformere infrastrukturkomponenterne til den ønskede tilstand.
SaltStack-arkitektur
Den grundlæggende opsætningsmodel for SaltStack er Client-Server, hvor serveren kan omtales som masteren og klienterne som slaver. Skibsføreren udsteder kommandoer eller rettere instruktioner som det kontrollerende system, der skal udføres af klienterne/minions, som er de kontrollerede systemer.
SaltSack-komponenter
Det følgende er, hvad SaltStack er lavet af
- Mester :Ansvarlig for at udstede instruktioner til slaverne og ændre dem til den ønskede tilstand efter udførelse.
- Minion :Det er det kontrollerede system, som skal transformeres til en ønsket tilstand.
- Saltkorn : dette er statiske data eller metadata vedrørende minion, og det udgør oplysninger som model, serienummer, hukommelseskapacitet og operativsystemet. De indsamles, når minion først opretter forbindelse til serveren. De kan bruges til at målrette en bestemt gruppe af håndlangere i forhold til et eller andet aspekt. For eksempel kan du køre en kommando, der siger, installer MongoDB for alle maskiner med et Windows-operativsystem.
- Eudførelsesmoduler/instruktioner :Disse er ad hoc-kommandoer, der er udstedt til en eller flere mål-minions og udføres fra kommandolinjen.
- Søjler :er brugerdefinerede variabler fordelt blandt håndlangere. De bruges til:minion-konfiguration, meget følsomme data, vilkårlige data og variabler. Ikke alle minions er tilgængelige for alle søjler, man kan begrænse, hvilke søjler der er for en bestemt gruppe af håndlangere.
- Statusfiler . Dette er kernen i Salt state System (SLS), og det repræsenterer den tilstand, som systemet skal være i. Det svarer til en playbook i tilfælde af Ansible i betragtning af, at de også er i YAML-format, dvs.
#/srv/salt/mongodbInstall.sls (file root)
install_mongodb: (task id)
pkg.installed: (state declaration)
-name:mongodb (name of package to install)
-
Top fil :Bruges til at kortlægge en gruppe af maskiner og definere hvilke tilstandsfiler der skal anvendes. dvs.
#/srv/salt/top.sls
base:
‘minion1’:
-mongodb
-
Saltproxy : Dette er en funktion, der gør det muligt at kontrollere enheder, der ikke kan køre en standard salt-minion. De omfatter netværksgear med en API, der kører på et proprietært operativsystem, enheder med CPU- og hukommelsesbegrænsninger eller enheder, der ikke kan køre håndlangere på grund af sikkerhedsmæssige årsager. En Junos-proxy skal bruges til opdagelse, kontrol, fjernudførelse og tilstandsstyring af disse enheder.
SaltStack-installation
Vi kan bruge pip-kommandoen til at installere SaltStack som
$ pip install salt
For at bekræfte installationen skal du køre kommandoen $ salt --version, og du skulle få noget som salt 2019.2.2 (Fluor)
Før der oprettes forbindelse til masteren, vil minion kræve en minimumskonfiguration af master-ip-adressen og minion-id, som vil blive brugt af masteren til dens reference. Disse konfigurationer kan udføres i filerne /etc/salt/minion.
Vi kan derefter køre masteren i forskellige tilstande, som er dæmon eller i debug-tilstand. For daemon-tilfældet vil du have $salt-master -d og for debug-tilstand, $salt-master -l debug. Du skal acceptere minions nøgle, før du starter den ved at køre $ salt-key -a nameOfMinion. For at liste de tilgængelige nøgler, kør $ salt-key -l
I tilfælde af minion, kan vi starte den med $salt-minion -l debug.
For eksempel, hvis vi vil oprette en fil i alle håndlangere fra masteren, kan vi køre kommandoen
$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text
Alle noder vil have en ny sample.text-fil i salt_files-mappen. * muligheden bruges til at henvise til alle håndlangere. For at angive for eksempel alle minions med id-navnet med strengen minion, bruger vi et regex-udtryk som nedenfor
$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text
For at se de metadata, der er indsamlet for en given minion, skal du køre:
$salt ‘minion1’ grains.items.
Opsætning af MongoDB med SaltStack
Vi kan oprette en database kaldet myAppdata med setDatabase.sls med indholdet nedenfor
classes:
- service.mongodb.server.cluster
parameters:
_param:
mongodb_server_replica_set: myAppdata
mongodb_myAppdata_password: myAppdataPasword
mongodb_admin_password: cloudlab
mongodb_shared_key: xxx
mongodb:
server:
database:
myAppdata:
enabled: true
password: ${_param:mongodb_myAppdata_password}
users:
- name: myAppdata
password: ${_param:mongodb_myAppdata_password}
Start af en enkelt MongoDB-server
mongodb:
server:
enabled: true
bind:
address: 0.0.0.0
port: 27017
admin:
username: admin
password: myAppdataPasword
database:
myAppdata:
enabled: true
encoding: 'utf8'
users:
- name: 'username'
password: 'password'
Opsætning af en MongoDB-klynge med SaltStack
mongodb:
server:
enabled: true
logging:
verbose: false
logLevel: 1
oplogLevel: 0
admin:
user: admin
password: myAppdataPasword
master: mongo01
members:
- host: 192.168.100.11
priority: 2
- host: 192.168.101.12
- host: 192.168.48.13
replica_set: default
shared_key: myAppdataPasword
Konklusion
Ligesom ClusterControl er SaltStack et automatiseringsværktøj, der kan bruges til at lette implementerings- og driftsopgaver. Med et automatiseringsværktøj er der færre fejl, reduceret tid for konfiguration og mere pålidelige resultater.