sql >> Database >  >> NoSQL >> MongoDB

MongoDB automatiseren met SaltStack

Database-implementatie voor meerdere servers wordt met de tijd complexer en tijdrovender bij het toevoegen van nieuwe bronnen of het aanbrengen van wijzigingen. Bovendien is er een kans op menselijke fouten die tot catastrofale gevolgen kunnen leiden wanneer het systeem handmatig wordt geconfigureerd.

Een automatiseringstool voor database-implementatie stelt ons in staat om een ​​database te implementeren op meerdere servers, variërend van ontwikkelings- tot productieomgevingen. De resultaten van een geautomatiseerde implementatie zijn betrouwbaar, efficiënter en voorspelbaar, naast het verstrekken van de huidige statusinformatie van uw nodes, die verder kan worden gebruikt om de middelen te plannen die u aan uw servers moet toevoegen. Met een goed beheerde implementatie verbetert de productiviteit van zowel ontwikkelings- als operationele teams, waardoor het bedrijf zich sneller kan ontwikkelen, meer kan bereiken en dankzij de eenvoudige frequente implementatie zal de algehele software-installatie uiteindelijk beter zijn en betrouwbaarder functioneren voor eindgebruikers.

MongoDB kan handmatig worden geïmplementeerd, maar de taak wordt steeds omslachtiger wanneer u een cluster van veel leden moet configureren die op verschillende servers worden gehost. We moeten daarom besluiten om een ​​automotive-tool te gebruiken die ons de stress kan besparen. Enkele van de beschikbare tools die kunnen worden gebruikt, zijn Puppet, Chef, Ansible en SaltStack.

De belangrijkste voordelen van het implementeren van uw MongoDB met een van deze tools zijn:

  1. Tijdbesparing. Stel je voor dat je 50 nodes voor je database hebt en dat je voor elk de MongoDB-versie moet updaten. Dit zal je eeuwen kosten om door het proces te gaan. Met een automatische tool hoeft u echter alleen enkele instructies te schrijven en een opdracht uit te geven om de rest van de update voor u uit te voeren. Ontwikkelaars hebben dan tijd om aan nieuwe functies te werken in plaats van handmatige implementaties te repareren.
  2. Minder fouten en dus klanttevredenheid. Het maken van nieuwe updates kan fouten in een databasesysteem introduceren, vooral als de configuratie handmatig moet worden uitgevoerd. Met een tool als SaltStack vermindert het verwijderen van handmatige stappen menselijke fouten en frequente updates met nieuwe functies komen tegemoet aan de behoeften van de klant, waardoor de organisatie concurrerend blijft.
  3. Lagere configuratiekosten. Met een implementatietool kan iedereen zelfs jijzelf implementeren, omdat het proces zelf veel eenvoudiger zal zijn. Dit elimineert de noodzaak voor experts om het werk te doen en vermindert fouten

Wat is SaltStack

SaltStack is een open-source tool voor externe uitvoering en een configuratiebeheersysteem ontwikkeld in Python.

De functies voor uitvoering op afstand worden gebruikt om opdrachten op verschillende machines parallel uit te voeren met een flexibel doelsysteem. Als u bijvoorbeeld 3 servermachines heeft en u voor elk MongoDB wilt installeren, kunt u de installatiecommando's op deze machines tegelijkertijd uitvoeren vanaf een masternode.

In termen van configuratiebeheer wordt een client-server-interface opgezet om de infrastructuurcomponenten te vergemakkelijken en veilig in de gewenste toestand te brengen.

SaltStack-architectuur

Het basisconfiguratiemodel voor SaltStack is Client-Server, waarbij naar de server kan worden verwezen als de master en de clients als slaves. De master geeft commando of liever instructies als het besturingssysteem dat moet worden uitgevoerd door de clients/minions die de gecontroleerde systemen zijn.

SaltSack-componenten

Hier is SaltStack van gemaakt

  1. Meester :Verantwoordelijk voor het geven van instructies aan de slaven en deze na uitvoering in de gewenste staat veranderen.
  2. Minion :Het is het gecontroleerde systeem dat moet worden omgezet in een gewenste staat.
  3. Zoutkorrels :  dit zijn statische gegevens of metagegevens over de minion en vormen informatie zoals het model, het serienummer, de geheugencapaciteit en het besturingssysteem. Ze worden verzameld wanneer de minion voor het eerst verbinding maakt met de server. Ze kunnen worden gebruikt voor het targeten van een bepaalde groep volgelingen met betrekking tot een bepaald aspect. U kunt bijvoorbeeld een opdracht uitvoeren waarin staat:installeer MongoDB voor alle machines met een Windows-besturingssysteem.
  4. Euitvoeringsmodules/instructies :dit zijn ad-hocopdrachten die worden gegeven aan een of meer doelonderdanen en worden uitgevoerd vanaf de opdrachtregel.
  5. Pijlers :zijn door de gebruiker gedefinieerde variabelen verdeeld over de minions. Ze worden gebruikt voor:minion-configuratie, zeer gevoelige gegevens, willekeurige gegevens en variabelen. Niet alle minions zijn toegankelijk voor alle pilaren, men kan beperken welke pilaren voor een bepaalde groep minions zijn.
  6. Statusbestanden . Dit is de kern van Salt State System (SLS) en het vertegenwoordigt de staat waarin het systeem zich zou moeten bevinden. Het is een equivalent van een playbook in het geval van Ansible, aangezien ze ook in YAML-formaat zijn, d.w.z.
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. Topbestand :Wordt gebruikt om een ​​groep machines in kaart te brengen en te definiëren welke statusbestanden moeten worden toegepast. d.w.z.

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Salt Proxy :  Dit is een functie waarmee u apparaten kunt bedienen die geen standaard salt-minion kunnen gebruiken. Ze omvatten netwerkapparatuur met een API die draait op een eigen besturingssysteem, apparaten met CPU- en geheugenbeperkingen of apparaten die om veiligheidsredenen geen minions kunnen uitvoeren. Een Junos-proxy moet worden gebruikt voor detectie, controle, uitvoering op afstand en statusbeheer van deze apparaten.

SaltStack-installatie

We kunnen het pip-commando gebruiken om SaltStack te installeren als 

$ pip install salt

Om de installatie te bevestigen, voer je het commando $ salt --version uit en je zou zoiets als salt 2019.2.2 (Fluor) moeten krijgen

Voordat de minion verbinding maakt met de master, heeft hij een minimale configuratie nodig van het master-ip-adres en de minion-id die door de master als referentie worden gebruikt. Deze configuraties kunnen gedaan worden in de bestanden /etc/salt/minion.

We kunnen de master dan in verschillende modi uitvoeren, namelijk daemon of in debug-modus. Voor het daemon-geval heb je $salt-master -d en voor de debug-modus $salt-master -l debug. U moet de sleutel van de minion accepteren voordat u deze start door $ salt-key -a nameOfMinion uit te voeren. Voer $ salt-key -l

. uit om de beschikbare sleutels weer te geven

In het geval van de minion kunnen we deze starten met $salt-minion -l debug.

Als we bijvoorbeeld een bestand willen maken in alle minions van de master, kunnen we de opdracht uitvoeren 

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

Alle knooppunten hebben een nieuw sample.text-bestand in de map salt_files. De * optie wordt gebruikt om naar alle minions te verwijzen. Om bijvoorbeeld alle minions met id-naam met de tekenreeks minion op te geven, gebruiken we een regex-expressie zoals hieronder 

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

Als je de metadata wilt zien die voor een bepaalde minion zijn verzameld, voer je het volgende uit:

$salt ‘minion1’ grains.items.

MongoDB instellen met SaltStack

We kunnen een database maken met de naam myAppdata met de setDatabase.sls met de onderstaande inhoud 

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}

Een enkele MongoDB-server starten 

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'

Een MongoDB-cluster opzetten met 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

Conclusie

Net als ClusterControl is SaltStack een automatiseringstool die kan worden gebruikt om implementatie- en operationele taken te vergemakkelijken. Met een automatiseringstool zijn er minder fouten, minder configuratietijd en betrouwbaardere resultaten.


  1. 'sessie' is niet gedefinieerd bij gebruik van express / redis voor sessieopslag

  2. Redis:Hoe kan ik mijn hash sorteren op sleutels?

  3. Spring Data Redis:Redis Pipeline retourneert altijd null

  4. Hoe RedisCacheManager te maken in spring-data 2.0.x