sql >> Database >  >> NoSQL >> MongoDB

Monitoring en operationeel beheer van MongoDB 4.0 met ClusterControl

Hoewel MongoDB bijna tien jaar bezig is geweest met het bereiken van volwassenheid (eerste release februari 2009), is de technologie een beetje een mysterie voor degenen die ervaren zijn in conventionele relationele database-omgevingen (RDBMS). Het integreren van NoSQL in een bestaande omgeving zonder diepgaande kennis kan een uitdaging zijn. Het is niet ongewoon om MongoDB samen met MySQL of een andere RDBMS-database te zien draaien.

De ervaring van RDBMS kan helpen om sommige processen te begrijpen, maar u moet weten hoe u uw expertise kunt vertalen naar de NoSQL-wereld. Het beheren van productieomgevingen omvat stappen als implementatie, het bewaken van uptime en prestaties, het onderhouden van systeembeveiliging, het beheren van HA, back-ups enzovoort. Zowel RDBMS als NoSQL zijn haalbare opties, maar er zijn specifieke kritische verschillen tussen de twee die gebruikers in gedachten moeten houden bij het implementeren of beheren van MongoDB. Technologie verandert snel en we moeten ons snel aanpassen.

Wanneer MongoDB plotseling uw verantwoordelijkheid is, garanderen beheertools dat de MongoDB-databases die u beheert stabiel en veilig zijn. Het gebruik van vooraf gedefinieerde processen en automatisering kan u niet alleen tijd besparen, maar u ook beschermen tegen veelvoorkomende fouten. Een beheerplatform dat systematisch alle verschillende aspecten van de databaselevenscyclus aanpakt, is robuuster dan het samenvoegen van een aantal puntoplossingen.

De kern van ClusterControl is de automatiseringsfunctionaliteit waarmee u de databasetaken kunt automatiseren die u regelmatig moet uitvoeren, zoals het implementeren van nieuwe databases, het toevoegen en schalen van nieuwe knooppunten, het beheren van back-ups, hoge beschikbaarheid en failover, topologiewijzigingen, upgrades en meer. ClusterControl biedt geprogrammeerde beveiliging, waarbij de integriteit van uw database-infrastructuur behouden blijft. Bovendien zijn MongoDB-gebruikers met ClusterControl niet langer onderworpen aan vendor lock-in; iets dat onlangs door velen in vraag werd gesteld. U kunt gratis verschillende MongoDB-versies en -leveranciers vanaf één console implementeren en importeren. Gebruikers van MongoDB moeten vaak een combinatie van tools en scripts van eigen bodem gebruiken om aan hun eisen te voldoen, en het is goed om te weten dat je ze gecombineerd in één product kunt vinden.

In dit artikel laten we u zien hoe u MongoDB 4.0 op een geautomatiseerde manier kunt implementeren en beheren. U vindt hier hoe u dit moet doen:

  • ClusterControl-installatie
  • MongoDB-implementatieproces
    • Een nieuw cluster implementeren
    • Bestaande cluster importeren
  • MongoDB schalen
    • Lees schaling (replicaSet)
    • Schrijfschaal (sharding)
  • MongoDB beveiligen
  • Bewaking en trending
  • Back-up en herstel

ClusterControl-installatie

Om met ClusterControl te beginnen heeft u een dedicated virtuele machine of host nodig. De vereisten voor de virtuele machine en ondersteunde systemen worden hier beschreven. De basis-VM kan starten vanaf 2 GB, 2 cores en schijfruimte 20 GB opslagruimte, zowel op locatie als in de cloud.

De installatie wordt goed beschreven in de documentatie, maar in feite komt het neer op het downloaden van het installatiescript dat u door de wizard leidt. Het wizardscript stelt de interne database in, installeert de benodigde pakketten, opslagplaatsen en voert andere noodzakelijke aanpassingen uit. Voor de internetvergrendelingsomgevingen kunt u het offline installatieproces gebruiken.

ClusterControl vereist SSH-toegang tot de databasehosts en monitoring kan agentgebaseerd of agentloos zijn. Het management is zonder agenten.

Het instellen van SSH zonder wachtwoord voor alle doelknooppunten (ClusterControl en alle databasehosts) omvat het uitvoeren van de volgende opdrachten op de ClusterControl-server:

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

MongoDB-implementatie en schaling

Een nieuw MongoDB 4.0-cluster implementeren

Zodra we de ClusterControl-interface binnengaan, is het eerste wat u moet doen een nieuw cluster implementeren of een bestaande importeren. De nieuwe versie 1.7.1 introduceert ondersteuning voor versie 4.0. U kunt nu MongoDB v4.0 implementeren/importeren en beheren met ondersteuning voor SSL-verbindingen.

Selecteer de optie "Deploy Database Cluster" en volg de instructies die verschijnen.

ClusterControl Databasecluster implementeren

Bij het kiezen van MongoDB moeten we Gebruiker, Sleutel of Wachtwoord en poort specificeren om via SSH verbinding te maken met onze servers. We hebben ook de naam nodig voor ons nieuwe cluster en als we willen dat ClusterControl de bijbehorende software en configuraties voor ons installeert.

Na het instellen van de SSH-toegangsinformatie, moeten we de gegevens invoeren om toegang te krijgen tot onze database. We kunnen ook specificeren welke repository we moeten gebruiken. Repositoryconfiguratie is een belangrijk aspect voor databaseservers en clusters. U kunt drie typen repository hebben wanneer u de databaseserver/cluster implementeert met ClusterControl:

  • Gebruik Vendor Repository
    Lever software door de voorkeurssoftwarerepository van de databaseleverancier in te stellen en te gebruiken. ClusterControl installeert de nieuwste versie van wat wordt geleverd door de repository van de databaseleverancier.
  • Stel geen leveranciersrepository's in
    Lever software in met behulp van de reeds bestaande softwarerepository die al op de knooppunten is ingesteld. De gebruiker moet de softwarerepository handmatig instellen op elk databaseknooppunt en ClusterControl zal deze repository gebruiken voor implementatie. Dit is goed als de databaseknooppunten zonder internetverbindingen werken.
  • Gebruik gespiegelde opslagplaatsen (maak een nieuwe opslagplaats)
    Maak en spiegel de opslagplaats van de huidige databaseleverancier en implementeer deze vervolgens met behulp van de lokale gespiegelde opslagplaats. Hiermee kunt u de huidige versies van de softwarepakketten "bevriezen".

In de volgende stap moeten we onze servers toevoegen aan het cluster dat we gaan maken. Bij het toevoegen van onze servers kunnen we IP of hostnaam invoeren. Voor het laatste moeten we een DNS-server hebben of onze MongoDB-servers hebben toegevoegd aan het lokale resolutiebestand (/etc/hosts) van onze ClusterControl, zodat het de bijbehorende naam kan oplossen die u wilt toevoegen. Voor ons voorbeeld zullen we een ReplicaSet implementeren met drie servers, één primaire en twee secundaire. Het is mogelijk om slechts 2 MongoDB-knooppunten in te zetten (zonder arbiter). Het voorbehoud van deze aanpak is geen automatische failover, aangezien een installatie met 2 knooppunten kwetsbaar is voor split brain. Als het primaire knooppunt uitvalt, is handmatige failover vereist om de andere server als primair te maken. Automatische failover werkt prima met 3 knooppunten en meer. Het wordt aanbevolen dat een replicaset een oneven aantal stemgerechtigde leden heeft. Fouttolerantie voor een replicaset is het aantal leden dat mogelijk niet meer beschikbaar is en toch voldoende leden in de set overlaat om een ​​primaire te kiezen. De fouttolerantie voor drie leden is één, voor vijf is het twee enz.

Op dezelfde pagina kunt u kiezen uit verschillende MongoDB-versies:

ClusteControl MongoDB-versie 4.0 implementeren

Wanneer alles is ingesteld, drukt u op de knop Implementeren. U kunt de status van het maken van ons nieuwe cluster volgen vanuit de ClusterControl-activiteitenmonitor. Zodra de taak is voltooid, kunnen we ons cluster zien in het hoofdscherm van ClusterControl en in de topologieweergave.

ClusterControl-topologieweergave

Zoals we in de afbeelding kunnen zien, kunnen we, zodra we ons cluster hebben gemaakt, er verschillende taken op uitvoeren, zoals het converteren van een replicaset naar shard of het toevoegen van knooppunten aan het cluster.

ClusterControl-schaalverdeling

Een nieuw cluster importeren

We hebben ook de mogelijkheid om een ​​bestaand cluster te beheren door het te importeren in ClusterControl. Een dergelijke omgeving kan worden gemaakt door ClusterControl of andere methoden, zoals de installatie van een docker.

ClusterControl importeert MongoDB

Eerst moeten we de SSH-toegangsreferenties voor onze servers invoeren. Vervolgens voeren we de toegangsreferenties in voor onze database, de servergegevensdirectory en de versie. We voegen de knooppunten toe op IP of hostnaam, op dezelfde manier als wanneer we implementeren, en drukken op Importeren. Zodra de taak is voltooid, zijn we klaar om ons cluster te beheren vanuit ClusterControl.

MongoDB schalen

Een van de hoekstenen van MongoDB is dat het is gebouwd met hoge beschikbaarheid en schaalbaarheid in gedachten. Schalen kan verticaal worden gedaan door meer bronnen aan de server toe te voegen of horizontaal met meer knooppunten. Horizontaal schalen is waar MongoDB goed in is, en het is niet veel meer dan het verdelen van de werklast over meerdere machines. In feite maken we gebruik van meerdere goedkope hardware-boxen, in plaats van te upgraden naar een duurdere, krachtige server. MongoDB biedt zowel lees- als schrijfschaling en we zullen de verschillen tussen deze twee strategieën voor u blootleggen. Of u lees- of schrijfschaling kiest, hangt allemaal af van de werklast van uw applicatie:als uw applicatie de neiging heeft om vaker te lezen dan gegevens te schrijven, wilt u waarschijnlijk gebruik maken van de lees-schaalmogelijkheden van MongoDB.

Met ClusterControl is het toevoegen van meer servers aan het cluster een eenvoudige stap. U kunt dat doen vanuit de GUI of CLI. Voor meer gevorderde gebruikers kunt u ClusterControl Developer Studio gebruiken en een resourcebase-voorwaarde schrijven om uw cluster horizontaal uit te breiden.

MongoDB ReplicaSet

Sharden

De MongoDB sharding-oplossing is vergelijkbaar met bestaande sharding-frameworks voor andere grote database-oplossingen. Het maakt gebruik van een typische opzoekoplossing, waarbij de sharding wordt gedefinieerd in een shard-sleutel en de bereiken worden opgeslagen in een configuratiedatabase. MongoDB werkt met drie componenten om de juiste shard voor uw gegevens te vinden. Een typische sharded MongoDB-omgeving ziet er als volgt uit:

MongoDB-sharding

Het eerste onderdeel dat wordt gebruikt, is de shard-router genaamd mongos. Alle lees- en schrijfbewerkingen moeten naar de shardrouter worden verzonden, zodat alle shards als één database voor de clienttoepassing fungeren. De shard-router zal de query's naar de juiste shards routeren door de configuratieserver te raadplegen.

ClusterControl converteren naar Shard

Shardbeheer is heel eenvoudig in MongoDB. U kunt online shards toevoegen en verwijderen en de MongoDB-shardrouter past zich automatisch aan wat u hem vertelt. Als je meer wilt weten over hoe je het beste shards kunt beheren, lees dan onze blogpost over het beheren van MongoDB-shards.

MongoDB beveiligen

Gerelateerde bronnen ClusterControl voor MongoDB MongoDB-automatisering en -beheer met ClusterControl

MongoDB wordt standaard geleverd met zeer weinig beveiliging:authenticatie is bijvoorbeeld standaard uitgeschakeld. Met andere woorden:standaard heeft iedereen rootrechten over elke database. Een van de wijzigingen die MongoDB heeft toegepast om risico's te beperken, was het wijzigen van de standaardbinding in 127.0.0.1. Dit voorkomt dat het wordt gebonden aan het externe IP-adres, maar dit zal natuurlijk worden teruggedraaid door de meeste mensen die het installeren. ClusterControl verwijdert menselijke fouten en biedt toegang tot een reeks beveiligingsfuncties om uw databases automatisch te beschermen tegen hacks en andere bedreigingen. We hebben eerder een korte video met beveiligingstips gepubliceerd.

De nieuwe versie van ClusterControl biedt SSL-ondersteuning voor MongoDB-verbindingen. Het inschakelen van SSL voegt een extra beveiligingsniveau toe voor de communicatie tussen de applicaties (inclusief ClusterControl) en de database. MongoDB-clients openen versleutelde verbindingen met de databaseservers en verifiëren de identiteit van die servers voordat gevoelige informatie wordt overgedragen.

Om de SSL-verbinding in te schakelen, moet u de nieuwste s9s-client gebruiken. Je kunt het installeren met

wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh

Of volg andere mogelijke installatiemethoden die hier worden beschreven.

Zodra je s9s-tools hebt geïnstalleerd (minimaal versie 1.7-93.1), kun je --enable-ssl-vlag gebruiken om SSL-verbinding in te schakelen.

Voorbeeld hieronder:

[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 &&  runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.

ClusterControl voert alle noodzakelijke stappen uit, inclusief het maken van certificeringen op alle clusterknooppunten. Dergelijke certificaten kunnen later worden onderhouden op het tabblad Sleutelbeheer.

ClusterControl-sleutelbeheer

Bewaking

Als u met databasesystemen werkt, moet u deze kunnen controleren. Zo kunt u trends identificeren, upgrades of verbeteringen plannen of effectief reageren op eventuele problemen of fouten die zich kunnen voordoen.

ClusterControl MongoDB-overzicht

De nieuwe ClusterControl 1.7.1 voegt monitoring met hoge resolutie toe voor op MongoDB gebaseerde. Het gebruikt Prometheus als de gegevensopslag met de PromQL-querytaal. De lijst met dashboards omvat MongoDB Server, MongoDB ReplicaSet, systeemoverzicht en clusteroverzichtdashboards. ClusterControl installeert Prometheus-agents, configureert metrische gegevens en onderhoudt toegang tot de configuratie van Prometheus-exporteurs via de GUI, zodat u de parameterconfiguratie zoals collectorvlaggen voor de exporteurs (Prometheus) beter kunt beheren. We hebben in detail beschreven wat recentelijk kan worden gecontroleerd in het artikel MongoDB monitoren met Prometheus &ClusterControl.

ClusterControl MongoDB SCUMM-dashboards

Waarschuwing

Als database-operator moeten we worden geïnformeerd wanneer er iets kritieks gebeurt in onze database. De drie belangrijkste methoden in ClusterControl om een ​​waarschuwing te krijgen zijn:

  • e-mailmeldingen
  • integraties
  • adviseurs

U kunt de e-mailmeldingen op gebruikersniveau instellen. Ga naar Instellingen> E-mailmeldingen. Waar u kunt kiezen tussen kritiekheid en het type waarschuwing dat moet worden verzonden.

De volgende methode is het gebruik van integratieservices. Dit is om de specifieke categorie evenementen door te geven aan de andere service, zoals ServiceNow-tickets, Slack, PagerDuty enz., zodat u geavanceerde meldingsmethoden en integraties binnen uw organisatie kunt creëren.

ClusterControl-integratieservices

De laatste is om geavanceerde metrische analyse in de sectie Advisor te betrekken, waar u intelligente controles en triggers kunt bouwen. Een voorbeeld hiervan is een voorspelling van het schijfruimtegebruik of clusterschaling door knooppunten toe te voegen wanneer de werkbelasting het vooraf ingestelde niveau bereikt.

ClusterControl-adviseurs voor MongoDB

Back-up en herstel

Nu u uw MongoDB replicaSet up-and-running hebt en uw monitoring op zijn plaats heeft, is het tijd voor de volgende stap:zorg ervoor dat u een back-up van uw gegevens hebt.

ClusterControl Back-upbeleid maken

ClusterControl biedt een interface voor MongoDB-back-upbeheer met ondersteuning voor planning en creatieve rapporten. Het geeft je twee opties voor back-upmethoden.

  • Mongodump
  • Mongodb consistente back-up

Mongodump dumpt alle gegevens in binaire JSON-indeling (BSON) naar de opgegeven locatie. Mongorestore kan later de BSON-bestanden gebruiken om uw database te herstellen. De consistente back-up van ClusterControl MongoDB omvat de transacties van de oplog die werden uitgevoerd tijdens het maken van de back-up.

ClusterControl-back-upversleuteling

Een goede back-upstrategie is een essentieel onderdeel van elk databasebeheersysteem. ClusterControl biedt veel opties voor back-ups en herstel/herstel.

ClusterControl Back-upschemabeheer

ClusterControl back-upretentie is configureerbaar; u kunt ervoor kiezen om uw back-up voor elke tijdsperiode te bewaren of om back-ups nooit te verwijderen. AES256-codering wordt gebruikt om uw back-ups te beveiligen tegen frauduleuze elementen. Voor snel herstel kunnen back-ups rechtstreeks in het back-upcluster worden teruggezet. ClusterControl handelt het volledige herstelproces af van de lancering tot het herstel van de cluster, waarbij foutgevoelige handmatige stappen uit het proces worden verwijderd.


  1. Mongodb groeperen en sorteren

  2. Mongoid Group By of MongoDb group by in rails

  3. Sorteeraggregatie addToSet resultaat

  4. Vind de grootste documentgrootte in MongoDB