Terug naar blog

Hoe MongoDB op te zetten & te optimaliseren in Ubuntu in de publieke cloud

Hoe MongoDB op te zetten & te optimaliseren in Ubuntu in de publieke cloud

Bedrijven impliceren veel gegevens en dat maakt het probleem van het verwerken en beheren ervan moeilijker. Traditioneel gebruikt de sector al decennia lang RDBMS-systemen, maar met de komst van Big Data in de 21e eeuw kwamen NoSQL-databases (Not only SQL) in beeld voor grootschalige ongestructureerde en semi-gestructureerde gegevens.

In dit bericht ga ik een MongoDB-cluster opzetten.

MongoDB is een gratis en open-source NoSQL-documentdatabase, die veel wordt gebruikt vanwege de hoge mate van schaalbaarheid en flexibiliteit die deze biedt.

Om MongoDB in productie te nemen, is het raadzaam om Replica Sets te gebruiken. Replica sets zijn MongoDB's equivalent van een Master/Slave-opstelling in de relationele wereld, maar in tegenstelling daartoe zijn ze zeer eenvoudig op te zetten, omdat alles is ingebouwd. Voor meer informatie over Replica Sets, bekijk de definitie van TutorialsPoint’s over het replicatieproces.

Het plannen van uw MongoDB Cloud Server Cluster

Ik ga een cluster van 3 nodes maken. Het is belangrijk om ze gelijke resources te geven, omdat elk van hen de primaire (d.w.z. master) server kan worden. Deze nodes of machines kunnen op elk besturingssysteem draaien, maar in deze handleiding ga ik Ubuntu 18.04 LTS gebruiken. Voor het koppelen en instellen van de vooraf geïnstalleerde image uit de bibliotheek van CloudSigma’s, kunt u verwijzen naar deze handleiding.

Aangezien het hele punt van een Replica Set is dat de cluster het uitvallen van een enkele node moet overleven, zou het vrij zinloos zijn als al uw servers zich op dezelfde fysieke host bevinden. Gelukkig biedt CloudSigma iets aan dat availability groups wordt genoemd. Dit betekent dat u het systeem kunt opdragen om al uw drie servers in verschillende groepen in te delen. Hierdoor zullen ze nooit op dezelfde fysieke host staan. Meer informatie hierover en over andere functies voor beveiliging en bedrijfscontinuïteit vindt u hier.

Het is ook belangrijk om een 64-bits versie van Linux te gebruiken. De reden is simpelweg dat MongoDB niet goed draait op 32-bits systemen (meer daarover hier).

MongoDB installeren in de cloud

Dit gedeelte is vrij eenvoudig. Gebruik een van de vooraf geconfigureerde Ubuntu 18.04 images of installeer het zelf.

De configuratie van CPU, RAM en schijf is echt individueel en hangt af van uw belasting. Voor een vrij kleine installatie zou een 4 GHz CPU, 4 GB RAM en 10 GB schijf (voor het systeem) voldoende moeten zijn. Wanneer u uw schijven koppelt, zorg er dan voor dat u VirtIO gebruikt. Als u IDE gebruikt, zullen de prestaties aanzienlijk daaronder lijden. Omdat u een Replica Set maakt, moeten bovendien alle nodes (en app-servers) zich op hetzelfde VLAN bevinden.

In tegenstelling tot veel andere cloud-aanbieders is het niet nodig om uw opslag te configureren met RAID10 of iets dergelijks om de prestaties te verbeteren. Zoals veel van onze klanten melden, krijgt u direct uitstekende prestaties door zowel SSD- als magnetische schijven te gebruiken bij CloudSigma.

Ik raad nog steeds aan om de MongoDB-gegevens op een aparte schijf te bewaren. De reden hiervoor is simpelweg dat u op een gegeven moment wellicht enkele bestandssysteemoptimalisaties moet doorvoeren die u niet op uw hele bestandssysteem zou willen toepassen.

Met dit in gedachten is het het eenvoudigst om deze schijf pas na het instellen van de servers toe te voegen. Laten we ons voor nu concentreren op de systeeminstallatie. Als u zelf installeert (in plaats van de vooraf geconfigureerde systemen te gebruiken), raad ik u aan om op F4 te drukken in het opstartmenu en te kiezen voor ‘Install a minimal virtual machine’.

Ik maak 3 machines, elk met de volgende specificaties:

  • CPU: 4 GHz
  • RAM: 4 GB
  • SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (extra schijf)

Zoals vermeld in het SSD-gedeelte, koppel ik een schijf van 10 GB met Ubuntu 18.04 LTS erop geïnstalleerd.

Bovendien koppel ik er nog een lege schijf van 20 GB aan om MongoDB-gegevens op te slaan. De grootte hiervan hangt sterk af van uw gebruik, maar voor een klein systeem zou 20 GB waarschijnlijk voldoende moeten zijn. Omdat het echter soms moeilijk te voorspellen is hoeveel gegevens u zult opslaan, zullen we LVM. Hierdoor kunt u later eenvoudig een andere schijf toevoegen en het volume uitbreiden zonder opnieuw te hoeven beginnen. Als alternatief kunt u een enkele schijf gebruiken en deze later opschalen metresize2fs.

Om de schijf toe te voegen, gaat u naar de sectie ‘Drives’, klikt u bovenaan op het pictogram ‘Create a new drive’, geeft u de nieuwe schijf een naam en stelt u de grootte in op 20 GB. Zodra deze is opgeslagen, gaat u naar de specifieke machine waaraan u deze wilt koppelen en onder de sectie 'drives' van de details van die machine kan ik klikken op ‘Attach a drive’ en de schijf selecteren.

Nu u drie machines heeft, kunt u overgaan tot het koppelen van de extra schijf die u heeft toegevoegd voor uw MongoDB-gegevensopslag aan elke machine. Ik raad aan om deze schijf als een partitie toe te voegen. Door partitionering te gebruiken, kan het besturingssysteem de informatie in elk gebied afzonderlijk beheren. Om de schijf als partitie toe te voegen, ga ik eerst alle schijven controleren die aan onze machine zijn gekoppeld. Hiervoor voer ik de volgende opdracht uit:

Wanneer ik de opdracht uitvoer, krijg ik de uitvoer met de schijven en de apparaten op mijn machine.

MongoDB

In de afbeelding heb ik een schijf van 10 GB gemarkeerd als de schijf waarop ons besturingssysteem is geïnstalleerd. Daarnaast is er nog een schijf van 20 GB die nu is gekoppeld. De locatie van de schijf is /dev/vdb. U kunt een partitie op deze schijf maken met de volgende opdrachten:

Dit opent het hulpprogramma fdisk, een opdrachtregelprogramma dat functies voor schijfpartitionering biedt, waarmee u partities op onze schijf kunt maken. Het geeft een prompt “Command (m for help):” waarin u n moet invoeren om een nieuwe partitie te maken, en druk vervolgens op enter om de standaardwaarden te accepteren. En nadat de partitie is gemaakt, voert u w in om de wijzigingen op te slaan. Het ziet er als volgt uit:

Er is een nieuwe partitie 1 gemaakt van het type ‘Linux’ en met een grootte van 20 GiB. Nu de partitie is gemaakt, gaan we een LVM-pool maken:

Ik heb ‘19.5g’ ingevoerd omdat mijn partitiegrootte 20g is. Voer vervolgens de volgende opdracht uit om de naam van de schijf te achterhalen:

Formatteer daarna de schijf met de ext4-methode met de volgende opdracht:

Laten we vervolgens een locatie maken om de schijf te koppelen en een map waarin u uw MongoDB-gegevens kunt bewaren.

Om een vermelding aan de fstab toe te voegen over uw nieuwe te koppelen schijf, kunt u direct de onderstaande opdracht gebruiken:

In de opdracht geeft blkid u een UUID – Universally Unique Identifier van elke schijf. Hier filter ik die voor de MongoDB-schijf eruit met grep en combineer ik deze UUID met respectievelijk de locatie van de koppelingsmap, het type bestandssysteem en andere opties voor de schijf. Ik voeg deze regel toe aan /etc/fstab. Als u dat niet doet, krijgt u een foutmelding bij het koppelen van de schijf. De vermelding ziet er als volgt uit:

UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0

Nu kunt u de schijf koppelen op de locatie /mongodb:

MongoDB installeren

Nu het systeem is voorbereid, gaan we verder met het installeren van MongoDB. Hoewel Ubuntu een versie van MongoDB in hun eigen repository aanbiedt, raad ik u aan om in plaats daarvan de officiële MongoDB-versie te gebruiken. De reden hiervoor is dat de Ubuntu-repository behoorlijk achterloopt met releases, dus als u het maximale uit MongoDB wilt halen, moet u overstappen op de officiële releases.

Aangezien MongoDB een eigen repository aanbiedt, kunt u deze eenvoudig aan uw systeem toevoegen en MongoDB vervolgens op de normale manier installeren. Dit zijn de te volgen stappen:

Importeer eerst de openbare sleutel die door het pakketbeheersysteem wordt gebruikt:

Vervolgens maak ik een lijstbestand aan. Dit bevat de repository waar MongoDB zich bevindt, zodat uw systeem het daarvandaan kan downloaden:

Nu werk ik mijn lokale pakketdatabase bij, zodat ik rekening kan houden met de wijzigingen.

Nu kan ik het pakket installeren met de volgende opdracht:

Ik heb MongoDB op elk van de machines geïnstalleerd.

Nu is MongoDB actief en draait het, met de gegevens op de gemaakte schijf. Als er een zware belasting en/of veel verbindingen worden verwacht, moet u mogelijk de ulimit-waarden verhogen.

Als u meer inzicht in uw gegevens wilt krijgen, kunt u zich ook aanmelden voor MongoDB's MMS, een gratis cloudgebaseerde monitoringservice voor MongoDB.

De replicaset maken voor uw MongoDB Cloud

Laten we nu een replicaset maken. Zorg er van tevoren voor dat alle machines met elkaar kunnen communiceren. Voeg hiervoor deze vermeldingen toe aan /etc/hosts

Ter verificatie kun je proberen de machines te pingen met behulp van de hostnaam. Dus als het IP-adres van mijn machine 1’s IP-1 is, zeg 213.189.123.12, dan in plaats van te schrijven

schrijf ik,

Als je de firewall hebt geactiveerd (wat je echt zou moeten doen), zorg er dan voor dat de nodes TCP-verkeer kunnen verzenden en ontvangen op poort 28017 en 27017 op de interne interface.

Start nu op elk van de machines de mongod-service met de volgende commando's.

Op machine m1,

Vervolgens, op machine m2,

Op machine m3,

Hier,

mongod is de naam van de service

dbpath is de locatie van onze database-directory

replSet is de naam van onze replicatieset. Deze moet hetzelfde zijn voor elk van de machines in dezelfde replicatieset

bind_ip is de hostnaam van de machine waarop je deze uitvoert.

Zodra je de mongod-service hebt gestart, ga je naar de primaire server (in mijn geval heb ik gekozen voor m1) en voer je mongo uit.

Dit start de MongoDB-terminal. Start in de terminal de replicaSet met het onderstaande commando. Hiermee wordt de replicaSet met de standaardconfiguraties gemaakt:

Laten we nu de andere twee machines als replica's toevoegen met de volgende commando's:

Je kunt de status controleren met het commando:

Dat is echt alles. Je zou nu up and running moeten zijn met je MongoDB-cluster op CloudSigma’s razendsnelle cloud.

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.