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

Implementering og vedligeholdelse af MongoDB ved hjælp af Ansible

Teknologien ændrer sig dag for dag, og moderne applikationer skal tage alvorlige justeringer for at opfylde deres organisationers forventninger til hurtig levering. Desværre gør dette dem mere komplekse, mere sofistikerede og sværere at vedligeholde.

Med hensyn til databasestyring ændres datastrukturerne inde i MongoDB i overensstemmelse med applikationsbehov over tid, og det kan være ret dyrt (eller snarere risikabelt).

På sigt skal vi have en effektiv database konfigureret nemt og sikre kompetent softwarelevering. At opnå alle disse på en manuel måde kommer med en række tilbageslag som f.eks.

  1. Kompliceret koordinering mellem teammedlemmer.
  2. Store chancer for gentagelse af opgaven
  3. Udtagelig over for mange menneskelige fejl og fejl
  4. Utilpas ved at overvinde kompleksitet
  5. Reduceret samarbejde og jobtilfredshed
  6. Tidskrævende
  7. Dårlig ansvarlighed og overholdelse

Vanskelighederne ved databaseadministration er hovedsageligt centreret om

  • Implementering
  • Vedligeholdelse
  • Opgradering, som kan påvirke driftsomkostningerne med op til 95 % reduktion.

At opnå dette kan tage meget tid og manuel indsats for MongoDB. For at sikre succes skal du have et simpelt system, som du kan sikre, at alle de nævnte tilbageslag ovenfor kan løses fra en enkelt platform rettidigt, det vil sige på en eller anden måde et automatiseret system. Der er en del muligheder, men i denne artikel vil vi diskutere, hvordan man bruger Ansible.

Hvad er Ansible

Ansible er simpelthen et universelt sprog, der afslører mysteriet om, hvordan arbejdet udføres. Med andre ord er det en it-orkestreringsmotor, der automatiserer udrulningen af ​​applikationer, konfigurationsstyring og orkestrerer mere avancerede it-opgaver, såsom sikring af rullende opdateringer uden nedetid og kontinuerlige udrulninger.

Maskiner kan nemt styres på en agentfri måde med et større fokus på sikkerhed og pålidelighed ved at bruge et sprog designet omkring "auditability" af mennesker.

Selvom det måske ikke er så svært at implementere MongoDB, bliver vedligeholdelse, backup og overvågning øgede bekymringsfaktorer, som tiden går. Derudover er det ikke så nemt, når du er ny til databasestyring. Med Ansible kan udviklere implementere og konfigurere applikationer med lethed, og det giver også mulighed for hurtig levering til enhver hostingplatform.

Da Ansible ikke er en del af databaseklyngesystemet, kan det installeres på enhver fjerncomputer og en konfiguration foretages til din databasevært. Tjek venligst installationsvejledningen for at vide, hvilken version der passer til dit operativsystem.

Ansible opretter som standard forbindelse til en databasevært via en SSH-protokol.

Ansible Playbooks

Playbooks er skabeloner, hvor Ansible-kode er skrevet, og derfor instruerer Ansible selv, hvad der skal udføres på sådan en to-do-liste måde. De er skrevet i YAML (Yet Another Markup Language) format. Hver indeholder trinvise handlinger, som følges af brugeren på en bestemt maskine, som kører sekventielt. Deres struktur består af et eller flere skuespil. En Play er dybest set en kodeblok, der kortlægger et sæt instruktioner defineret mod en bestemt vært.

Almindelig brugte YAML-tags i Ansible

  1. navn

    Dette er det tag, der definerer navnet på Ansible-spillebogen. Det er tilrådeligt at angive et navn, der præcist definerer, hvad det vil gøre.

  2. værter

    Dette definerer en værtsgruppe eller liste over værter, som de definerede opgaver skal køres imod. Det er et obligatorisk tag, som fortæller Ansible på hvilke værter, der skal køre de opgaver, der er blevet opført. Da opgaver kan udføres på flere maskiner, enten på samme eller fjerntliggende maskiner, kan man definere en gruppe af værtsposter i dette tag.

  3. vars

    Som ethvert andet programmeringssprog har du brug for variabler. Med dette tag kan du definere variabler, som du vil bruge i din playbook.

  4. opgaver

    Dette tag gør det muligt for dig at liste et sæt opgaver, der skal udføres. Opgaver er faktisk handlinger, man skal udføre. Et opgavefelt definerer navnet på opgaven, som i det væsentlige hjælper teksten til brugeren under fejlfinding af afspilningsbogen. Et stykke kode, der er defineret som et modul, er forbundet internt af hver opgave, og eventuelle argumenter, der skal bruges i modulet, sendes gennem opgave-tagget.

En simpel playbook-struktur ser sådan ud...

--- navn:installer og konfigurer DB-værter:testServer bliver:ja vars:mongoDB_Port :27017 opgaver:-navn:Installer mongodb yum: -navn:Sørg for den installerede tjeneste er aktiveret og kører tjeneste:navn:

Skriv en simpel Playbook for at installere og starte MongoDB

  1. Aktivering af root-SSH-adgang

    Nogle opsætninger af administrerede noder kan afholde dig fra at logge ind som root-bruger, og derfor skal du definere en playbook for at løse dette. Vi vil oprette en playbook enable-root-access.yml, der vil se sådan ud

    ---- værter:ansible-test remote_user:ubuntu opgaver:- navn:Aktiver root login shell:sudo cp ~/.ssh/authorized_keys /root/.ssh/ 

    Når du kører kommandoen

    $ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml  

    Du burde se noget lignende

    PLAY [ansible-test] **************************************** *********************INDSAMLING FAKTA ****************************** ************************************ OPGAVE:[Aktiver root-login] ******** ********************************************************************************************************************** ************************************************** *************** 
  2. Valg af værter og brugere i mongodbInstall.yaml

    ---- værter:ansible-test remote_user:root bliver:ja 
  3. Tilføjelse af opgaver, der skal udføres

    Opgaver udføres sekventielt, så vi skal skitsere dem på en sekventiel måde, dvs.

    1. apt_key for at tilføje lagernøgler. MongoDB offentlige GPG-nøgle skal importeres først
      - navn:Importer den offentlige nøgle, der bruges af pakkehåndteringssystemet apt_key:keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present 
    2. Tilføjelse af MongoDB apt_repository
      - navn:Tilføj MongoDB repository apt_repository:repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present 
    3. Installation af pakker og start mongod, genindlæs derefter den lokale pakkedatabase
      - name:install mongodb apt:pkg=mongodb-org state=latest update_cache=yes notify:- start mongodb 
    4. Administration af tjenester, brug af handler til at starte og genstarte tjenester
      handlere:- navn:start mongodb-tjeneste:name=mongod state=started 
Severalnines Bliv en MongoDB DBA - Bring MongoDB to ProductionFå flere oplysninger om, hvad du skal vide for at implementere, overvåge, administrere og skalere MongoDBDownload gratis

Den generelle spillebogskode skulle se sådan ud

---- værter:ansible-test remote_user:root bliver:ja opgaver:- navn:Importer den offentlige nøgle, der bruges af pakkehåndteringssystemet apt_key:keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present - navn:Tilføj MongoDB repository apt_repository:repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present - navn:installer mongodb apt:pkg =mongodb-org state=seneste opdatering_cache=yes notify:- start mongodb handlers:- name:start mongodb service:name=mongod state=started

Vi kan derefter køre denne fil med ansible ved at bruge kommandoen

ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml 

Hvis afspilningsbogen er blevet udført med succes, bør du se dette i din terminal

PLAY [ansible-test] **************************************** *********************INDSAMLING FAKTA ****************************** ************************************ ok:[12.20.3.105]ok:[12.20.3.106] OPGAVE:[Importer den offentlige nøgle brugt af pakkehåndteringssystemet] ***********ændret:[12.20.3.105]ændret:[12.20.3.106]OPGAVE:[Tilføj MongoDB-lager] **** ************************************************ ændret:[12.20.3.105 ]ændret:[12.20.3.106]OPGAVE:[installer mongodb] ************************************ *******************ændret:[12.20.3.105]ændret:[12.20.3.106] MEDDELT:[start mongodb] *********** ********************************************* ok:[12.20.3.106]ok :[12.20.3.105]SPIL OPSAMLING ********************************************* **************************12.20.3.105 :ok=5 ændret=3 uopnåelig=0 mislykkedes=012.20.3.106 :ok=5 ændret=3 unreachable=0 failed=0 

Hvis du nu kører mongo, vil du blive dirigeret til mongo shell

MongoDB shell version v4.0.3 opretter forbindelse til:mongodb://127.0.0.1:27017Implicit session:session { "id" :UUID("07c88442-0352-4b23-8938-fdf6ac66f253 server")} :4.0.3Velkommen til MongoDB shell.For interaktiv hjælp, skriv "help".For mere omfattende dokumentation, se http://docs.mongodb.org/Questions? Prøv supportgruppen http://groups.google.com/group/mongodb-user 

Konklusion

Ansible er en simpel open source it-motor, der automatiserer applikationsimplementering, serviceorkestrering og levering i skyen.

Det fungerer ved at forbinde databasenoder og skubbe ud definerer instruktioner kendt som moduler til dem, udfører dem gennem SSH som standard og derefter slippe af med dem, når de er færdige. Det kører ikke nogen dæmoner eller servere, og kan derfor køres fra enhver fjernmaskine. I den næste vejledning skal vi diskutere, hvordan man vedligeholder et MongoDB-repliksæt i skyen ved hjælp af Ansible.


  1. Med Redis Cluster, er det muligt bare at videregive hash-tags til eval?

  2. Jedis Ændrer Redis' semantik?

  3. Hvordan bruger man uordnet bulk-indføring med Mongoskin?

  4. Brug MongoEngine og PyMongo sammen