sql >> Databasteknik >  >> NoSQL >> MongoDB

Automatisera MongoDB med SaltStack

Databasdistribution för ett flertal servrar blir mer komplex och tidskrävande med tiden när man lägger till nya resurser eller gör ändringar. Dessutom finns det en sannolikhet för mänskliga fel som kan leda till katastrofala utfall närhelst systemet konfigureras manuellt.

Ett automatiseringsverktyg för databasdistribution gör det möjligt för oss att distribuera en databas över flera servrar, allt från utvecklingsmiljöer till produktionsmiljöer. Resultaten från en automatiserad distribution är tillförlitliga, mer effektiva och förutsägbara förutom att tillhandahålla aktuell statusinformation för dina noder som kan användas ytterligare för att planera för resurser du behöver lägga till dina servrar. Med en välskött driftsättning förbättras produktiviteten hos både utvecklings- och operativa team, vilket gör det möjligt för verksamheten att utvecklas snabbare, åstadkomma mer och tack vare enkel frekvent driftsättning kommer den övergripande mjukvaruinstallationen i slutändan att bli bättre och fungera tillförlitligt för slutanvändare.

MongoDB kan distribueras manuellt men uppgiften blir mer och mer besvärlig när du måste konfigurera ett kluster med många medlemmar som finns på olika servrar. Vi måste därför bestämma oss för att använda ett fordonsverktyg som kan spara oss stressen. Några av de tillgängliga verktygen som kan användas inkluderar Puppet, Chef, Ansible och SaltStack.

De huvudsakliga fördelarna med att distribuera din MongoDB med något av dessa verktyg är:

  1. Tidssparande. Föreställ dig att du har 50 noder för din databas och du måste uppdatera MongoDB-versionen för varje. Detta kommer att ta dig åldrar genom processen. Men med ett automatiskt verktyg behöver du bara skriva några instruktioner och utfärda ett kommando för att göra resten av uppdateringen åt dig. Utvecklare kommer då att ha tid att arbeta med nya funktioner istället för att fixa manuella distributioner.
  2. Minskade fel och därmed kundnöjdhet. Att göra nya uppdateringar kan leda till fel i ett databassystem, särskilt om konfigurationen måste göras manuellt. Med ett verktyg som SaltStack minskar det mänskliga felet genom att ta bort manuella steg och frekventa uppdateringar med nya funktioner kommer att tillgodose kundernas behov och därmed hålla organisationen konkurrenskraftig.
  3. Lägre konfigurationskostnad. Med ett distributionsverktyg kan vem som helst distribuera även dig själv eftersom själva processen blir mycket enklare. Detta kommer att eliminera behovet av experter att utföra arbetet och minska antalet fel

Vad är SaltStack

SaltStack är ett fjärrexekveringsverktyg med öppen källkod och ett konfigurationshanteringssystem utvecklat i Python.

Fjärrexekveringsfunktionerna används för att köra kommandon på olika maskiner parallellt med ett flexibelt målsystem. Om du till exempel har 3 servermaskiner och du vill installera MongoDB för varje, kan du köra installationskommandona på dessa maskiner samtidigt från en masternod.

När det gäller konfigurationshantering upprättas ett klient-servergränssnitt för att underlätta och säkert omvandla infrastrukturkomponenterna till önskat tillstånd.

SaltStack-arkitektur

Den grundläggande installationsmodellen för SaltStack är Client-Server där servern kan hänvisas till som master och klienterna som slavar. Befälhavaren utfärdar kommandon eller snarare instruktioner som det kontrollerande systemet som måste utföras av klienterna/underhållarna som är de kontrollerade systemen.

SaltSack-komponenter

Följande är vad SaltStack är gjord av

  1. Mästare :Ansvarig för att utfärda instruktioner till slavarna och ändra dem till önskat tillstånd efter exekvering.
  2. Minion :Det är det kontrollerade systemet som måste omvandlas till något önskat tillstånd.
  3. Saltkorn : det här är statisk data eller metadata om minion och det utgör information som modell, serienummer, minneskapacitet och operativsystem. De samlas in när minion först ansluter till servern. De kan användas för att rikta in sig på en viss grupp av underhuggare i förhållande till någon aspekt. Till exempel kan du köra ett kommando som säger, installera MongoDB för alla maskiner med ett Windows-operativsystem.
  4. Utförandemoduler/instruktioner :Dessa är ad hoc-kommandon som utfärdats till en eller flera målunderhållare och exekveras från kommandoraden.
  5. Pelare :är användardefinierade variabler fördelade mellan minions. De används för:minion-konfiguration, mycket känsliga data, godtyckliga data och variabler. Alla minions är inte tillgängliga för alla pelare, man kan begränsa vilka pelare som är till för en viss grupp av minions.
  6. Statusfiler . Detta är kärnan i Salt State System (SLS) och det representerar det tillstånd som systemet ska vara i. Det är en motsvarighet till en playbook i fall av Ansible med tanke på att de också är 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. Toppfil :Används för att mappa en grupp av maskiner och definiera vilka tillståndsfiler som ska tillämpas. dvs.

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Saltproxy :  Det här är en funktion som gör det möjligt att kontrollera enheter som inte kan köra en vanlig saltminion. De inkluderar nätverksväxlar med ett API som körs på ett proprietärt operativsystem, enheter med CPU- och minnesbegränsningar eller sådana som inte kan köra minions på grund av säkerhetsskäl. En Junos-proxy måste användas för upptäckt, kontroll, fjärrexekvering och tillståndshantering av dessa enheter.

SaltStack-installation

Vi kan använda kommandot pip för att installera SaltStack som 

$ pip install salt

För att bekräfta installationen, kör kommandot $ salt --version och du bör få något som salt 2019.2.2 (Fluorine)

Innan du ansluter till mastern kommer minion att kräva en minsta konfiguration av master ip-adress och minion id som kommer att användas av mastern för dess referens. Dessa konfigurationer kan göras i filerna /etc/salt/minion.

Vi kan sedan köra mastern i olika lägen som är demon eller i felsökningsläge. För demonfallet kommer du att ha $salt-master -d och för felsökningsläge, $salt-master -l debug. Du måste acceptera minions nyckel innan du startar den genom att köra $ salt-key -a nameOfMinion. För att lista de tillgängliga nycklarna, kör $ salt-key -l

När det gäller minion kan vi starta den med $salt-minion -l debug.

Till exempel, om vi vill skapa en fil i alla minions från mastern, kan vi köra kommandot 

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Alla noder kommer att ha en ny sample.text-fil i salt_files-mappen. Alternativet * används för att referera till alla minions. För att till exempel ange alla minions med id-namn som har strängen minion, använder vi ett regex-uttryck enligt nedan 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

För att se metadata som samlats in för en viss minion, kör:

$salt ‘minion1’ grains.items.

Konfigurera MongoDB med SaltStack

Vi kan skapa en databas som heter myAppdata med setDatabase.sls med innehållet nedan 

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}

Starta en enda 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'

Konfigurera ett MongoDB-kluster 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

Slutsats

Liksom ClusterControl är SaltStack ett automationsverktyg som kan användas för att underlätta driftsättning och driftuppgifter. Med ett automationsverktyg får du minskade fel, minskad tid för konfiguration och mer tillförlitliga resultat.


  1. Strängfältsvärdeslängd i mongoDB

  2. Dynamisk sortering med Redis

  3. MongoDB Correct Schema för aggregerad data

  4. Hur ställer jag in en primärnyckel i MongoDB?