sql >> Databasteknik >  >> NoSQL >> MongoDB

En guide till MongoDB-distribution och underhåll med Puppet:Del 1

Databasklustring innebär ofta att konfigurera och underhålla ett antal servrar och instanser, alla med ett kollektivt syfte. Med detta menar vi att du kan ha olika databasservrar på olika värdar som betjänar samma data.

Låt oss till exempel säga att du har servrarna A, B, C och D, du bestämmer dig för att installera MongoDB på var och en men inser senare att det finns en ny version du borde ha använt. När du har ett stort antal servrar och du behöver uppdatera MongoDB-versionen, har det många bakslag att konfigurera dem manuellt (en i taget). Dessa motgångar kan inkludera; tar för lång tid att konfigurera om (därav kommer din webbplats att ha en lång driftstopp) eller gör din DB utsatt för vissa konfigurationsfel.

Dessutom finns det alltid repetitiva uppgifter som du vill ska utföras automatiskt, istället för att genomgå samma steg om och om igen, varje gång du vill göra liknande ändringar. Vid någon tidpunkt måste vi också lära oss nya moduler när det gäller tekniska framsteg som kan hjälpa oss att öka klustrets prestanda

Enkelt uttryckt behöver vi ett automationssystem som kan underlätta alla nämnda åtaganden. Puppet är ett av de mest föredragna mjukvarusystemen för att uppnå detta sedan:

  • Det är enkelt och snabbare att konfigurera och distribuera MongoDB-kluster.
  • Repetitiva uppgifter kan enkelt automatiseras så att de exekveras automatiskt senare.
  • Hela klusterinfrastrukturen kan hanteras kollektivt från en enda plattform.
  • Enkel provisionering för nya noder i moln, hybrid eller fysisk miljö.
  • Orkestrera ändringar och händelser över ett kluster av noder.
  • Upptäck resurser inom några minuter som kan hjälpa dig att enkelt utföra olika uppgifter.
  • Skalar bra från 1 till 200 000 noder.
  • Stöds av ett antal plattformar

Vad är Puppet?

Puppet är ett språk som används för att få en maskin till ett önskat tillstånd eller snarare en motor som används för att tolka och tillämpa vissa definierade instruktioner på ett serveringssystem. Liksom Ansible är Puppet också ett konfigurationshanteringsverktyg som används för att automatisera och utföra databasklusteruppgifter. Det är dock mer avancerat och väletablerat med tanke på att det är den äldsta och därför massor av nyligen integrerade funktioner som skulle göra den mer sofistikerad än de andra. En av de främsta anledningarna till att jag personligen föredrar Puppet är förmågan den ger mig att konfigurera ett stort antal noder anslutna tillsammans med lastbalanserare, nätverksenheter eller brandväggar. Puppet används ofta i stora företag med komplexa miljöer.

Så fungerar Puppet

Puppet använder idempotenstekniken som hjälper den att hantera en viss maskin från tidpunkten för skapandet och under hela dess livscykel även med konfigurationsändringar. Kärnfördelen med detta är att maskinen uppdateras under ett antal år istället för att byggas flera gånger från grunden. I händelse av en uppdatering kontrollerar Puppet den aktuella målmaskinens status och ändringar kommer endast att tillämpas när det finns en specifik ändring i konfigurationen.

Idempotens

Idempotensarbetsflödet visas nedan:

Puppet master samlar in detaljer om målmaskinens aktuella tillstånd och jämför den med maskinnivåkonfigurationsdetaljerna och returnerar sedan detaljerna som skickas till konverteringslagret.

Konverteringsskiktet jämför den hämtade konfigurationen med de nydefinierade konfigurationsdetaljerna och skapar sedan en katalog som skickas till målpuppet-agenterna, i detta fall målnoderna för vilka ändringarna ska tillämpas.

Konfigurationsändringarna appliceras sedan på systemet för att transformera det till ett önskat tillstånd. Efter att ändringarna har implementerats skickar Puppet-agenten en rapport tillbaka till Puppet Master som dokumenteras för att definiera systemets nya tillstånd som den medföljande katalogen.

Puppet Basic Components

  1. Puppet Resources

    Dessa är de viktigaste modelleringskomponenterna för en viss maskin vars beskrivningar kommer att få maskinen till ett önskat tillstånd.

  2. Leverantörer

    Leverantörer är särskilda resurser som används för att lägga till paket till systemet, t.ex. mums och apt-get. Det finns standardleverantörer men man kan lägga till fler när man behöver några paket.

  3. Manifest

    Detta är en samling resurser som är definierade antingen i en funktion eller en klass kopplade ihop för att konfigurera ett målsystem.

    Strukturen bör vara

    resource:{‘module’:
    	attribute => value
    }

    Till exempel när vi installerar mongodb kan vi ha en manifestfil som heter Mongodb.pp med följande innehåll:

    package {‘mongodb’:
    		ensure => installed
         }
  4. Moduler

    Detta är den viktigaste byggstenen i Puppet som i grunden är en samling resurser, mallar och filer. De kan distribueras i vilket operativsystem som helst och kan därför användas flera gånger med samma konfiguration.

  5. Mallar

    Mallar används för att definiera anpassat innehåll och variabel input. De använder Ruby-syntaxen, d.v.s. om du vill definiera en port att lyssna på:

    Listen <% [email protected]_number %>

    Variabeln Port_number i detta fall definieras i manifestet som refererar till denna mall.

  6. Statiska filer

    Dessa är allmänna filer som kan krävas för att utföra specifika uppgifter. De finns i filkatalogen för valfri modul.

Puppet Installation

I syfte att lära oss kommer vi att installera och konfigurera marionett i en virtuell maskin som vi kommer att skapa i vår lokala maskin. Först och främst måste du installera virtualbox och vagrant. Efter installationen, öppna en ny terminal och skapa en Puppet-katalog förmodligen på ditt skrivbord och kör kommandot $ vagrant init. Detta kommer att skapa en virtuell maskin och märka den vagrant. Sedan kan vi logga in på den här maskinen med kommandot $ vagrant ssh.

Om du får en skärm som den nedan är din maskin igång.

Om du annars är på en serverdator kan du ignorera detta steg och fortsätta från att lägga till dockpaketet enligt nedan.

Lägg till dockpaketet med kommandot

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

Och packa sedan upp paketet och installera med

$ sudo dpkg -i puppet5-release-xenial.deb

Vi måste uppdatera våra arkiv så att vi kör

$ sudo apt-get update

Installera puppet-agenten genom att köra

$ sudo apt-get install puppet-agent

När installationen är klar kan vi bekräfta genom att kontrollera versionen. Du kan behöva logga ut från din virtuella maskin för att Puppet path ska läggas till i miljön och kör sedan $ puppet --version eller om du inte har loggat ut kör $ /opt/puppetlabs/bin/puppet --version. Om du får ett versionsnummer som 5.5.14 så lyckades installationen.

Efter att ha installerat MongoDB med Mongodb.pp vi skapade ovan, kan vi helt enkelt skriva en uppgift för att ställa in en databasprodukter och även lägga till en användare till denna db.

'Mongodb_database' används för att skapa och hantera databaser inom MongoDB

mongodb_database{‘products’:
	ensure => present,
            tries => 10
}

‘Mongodb_user kan användas för att skapa och hantera användare inom en MongoDB-databas.’

För att lägga till en användare i 'produkter'-databasen

mongodb_user {userprod:
  username => ‘prodUser’,
  ensure => present,
  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
  database => prodUser,
  roles => [‘readWrite’, ‘dbAdmin’],
  tries  => 10
}

Slutsats

I den här bloggen har vi lärt oss vad Puppet är, fördelarna med det och dess fungerande arkitektur. Puppet är lite mer komplex än de andra hanteringsverktygen (som Chef och Ansible) men den har många moduler som kan användas för att lösa problem kring databashantering. I nästa del kommer vi att diskutera hur man ansluter fjärrdatorer så att de kan konfigureras om med de definierade manifestfilerna.


  1. Vad är __v-fältet i Mongoose

  2. Vad är den rekommenderade motsvarigheten till kaskadradering i MongoDB för N:M-relationer?

  3. Spring Data MongoDB Lookup med Pipeline Aggregation

  4. RuntimeWarning:Du kör arbetaren med superanvändarprivilegier:detta rekommenderas absolut inte