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

Automatisering af MongoDB med SaltStack

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:

  1. 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.
  2. 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.
  3. 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

  1. Mester :Ansvarlig for at udstede instruktioner til slaverne og ændre dem til den ønskede tilstand efter udførelse.
  2. Minion :Det er det kontrollerede system, som skal transformeres til en ønsket tilstand.
  3. 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.
  4. Eudførelsesmoduler/instruktioner :Disse er ad hoc-kommandoer, der er udstedt til en eller flere mål-minions og udføres fra kommandolinjen.
  5. 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.
  6. 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)
  1. 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
  1. 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.


  1. Autofuldførelse med java, Redis, Elastic Search, Mongo

  2. MongoDB - kopisamling i java uden looping af alle elementer

  3. Hvordan starter man en mongodb shell i docker container?

  4. Mongo fejl på I control hotfix