sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man distribuerar MongoDB för hög tillgänglighet

Introduktion

MongoDB har bra stöd för hög tillgänglighet genom ReplicaSets. Det räcker dock inte att distribuera ett ReplicaSet för ett produktionsfärdigt system. Det senare kräver lite planering. Implementering är bara det första steget, vi behöver sedan beväpna de operativa teamen med övervakning, varning, säkerhet, avvikelser eller feldetektering, automatisk återställning/felövergång, säkerhetskopieringshantering och andra verktyg för att hålla miljön igång.

Förutsättningar

Innan du kan börja med din MongoDB-distribution med ClusterControl krävs vissa förberedelser. De plattformar som stöds är RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS och Debian 7.x/8.x. De minimala OS-resurskraven är 2 GB RAM, 2CPU och 20 GB diskutrymme som körs på x86 arkitektur. ClusterControl i sig kan köras på vanliga virtuella datorer eller barebone-värdar som körs på plats, bakom en brandvägg eller på virtuella moln.

Dessutom kräver ClusterControl att portar som används av följande tjänster öppnas/aktiveras:
ICMP (ekosvar/begäran)
SSH (standard är 22)
HTTP (standard är 80)
HTTPS (standard är 443)
MySQL (standard är 3306) (intern databas)
CMON RPC (standard är 9500)
CMON RPC TLS (standard är 9501)
CMON-händelser (standard är 9510)
CMON SSH (standard är 9511)
CMON Cloud (standard är 9518)

Streamingport för säkerhetskopiering via netcat (standard är 9999)

Det enklaste och bekvämaste sättet att installera ClusterControl är att använda installationsskriptet från Severalnines. Ladda bara ner skriptet och kör som root-användare eller användare med sudo root-behörighet. Om du behöver ett mer manuellt tillvägagångssätt, till exempel om dina servrar är helt utan internetåtkomst, kan du följa instruktionerna i ClusterControl-dokumentationen.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Följ installationsguiden där du kommer att guidas med att ställa in en intern ClusterControl-databasserver och dess autentiseringsuppgifter, cmon-lösenordet för ClusterControl-användning och så vidare. Du bör få följande rad när installationen är klar:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Nästa steg är att generera en SSH-nyckel som vi kommer att använda för att ställa in den lösenordslösa SSH senare. Om du har ett nyckelpar som du vill använda kan du hoppa över att skapa ett nytt.

Du kan använda vilken användare som helst i systemet men den måste ha förmågan att utföra superanvändaroperationer (sudoer). I det här exemplet valde vi root-användaren:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Ställ in lösenordslös SSH till alla noder som du vill övervaka/hantera via ClusterControl. I det här fallet kommer vi att ställa in detta på alla noder i stacken (inklusive själva ClusterControl-noden). På ClusterControl-noden, kör följande kommandon för att kopiera ssh-nycklar och ange root-lösenordet när du uppmanas:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Du kan sedan verifiera om det fungerar genom att köra följande kommando på ClusterControl-noden:

$ ssh [email protected] "ls /root"

Se till att du kan se resultatet av kommandot ovan utan att behöva ange ett lösenord.
När installationen är klar bör du kunna logga in på webbgränssnittet via

https://<your_vm_name>/clustercontrol/#

Efter den första inloggningen kommer du att se ett fönster med alternativ för att börja med din första distribution eller importera ett befintligt kluster.

ClusterControl Distribuera och importera befintligt kluster

Konfigurera arkiv

Innan vi börjar distribuera, låt oss ta en titt på pakethanteringssystemet. ClusterControl-distributionsprocessen stöder hela processen med klusterinstallation. Det inkluderar OS-justeringar och paketnedladdning och installation. Om dina databasnoder har begränsad tillgång till internet och du inte kan ladda ner paket direkt från noden, kan du skapa ett paketförråd direkt på ClusterControl-värden.

ClusterControl-paketförråd

Det finns tre sätt att underhålla MongoDB-paket i ClusterControl.

Använd leverantörsarkiv

Installera programvaran genom att ställa in och använda databasleverantörens favoritprogramvarulager. ClusterControl kommer att installera den senaste versionen av det som lagras av MongoDB-förvaret.

Konfigurera inte leverantörsförråd

Installera programvaran genom att använda det redan existerande programvaruförrådet som redan är inställt på operativsystemet. Användaren måste ställa in programvaruförrådet manuellt på varje databasnod, och ClusterControl kommer att använda detta förråd för paketdistribution. Detta är bra om databasnoderna körs utan internetanslutningar och ditt företag har ett externt paketsystem med MongoDB-paket på plats.

Använd speglade arkiv (Skapa nytt arkiv)

Skapa och spegla den aktuella leverantörens arkiv och distribuera sedan med det lokala speglade arkivet. Det låter dig också "frysa" de senaste versionerna av mjukvarupaketen som används för att tillhandahålla ett databaskluster för en specifik leverantör (dvs. använd endast Percona-paket).

ClusterControl automatiserar skapandet av internt paketförråd

Distribuera ReplicaSet

ClusterControl stöder MongoDB/Percona Server för MongoDB 3.x ReplicaSet. För att börja med distributionen av det nya klustret, gå till distributionsalternativet i det övre högra hörnet. När du installerar dina databasnoder, använd alltid rena och minimala virtuella datorer. Befintliga paketberoenden kan tas bort om det behövs. Nya paket kommer att installeras och befintliga paket kan tas bort när noden tillhandahålls med den nödvändiga programvaran.

Det allra första steget i distributionsprocessen är att tillhandahålla ssh-referenser som är lämpliga för de värdar som du distribuerar ditt kluster på. Eftersom ClusterControl använder lösenordslös ssh för att ansluta till och konfigurera dina värdar, krävs en ssh-nyckel.

ClusterControl-implementering MongoDB-klusterguide

Det är tillrådligt att använda ett oprivilegierat användarkonto för att logga in på värdarna, så ett sudo-lösenord kan tillhandahållas för att underlätta administrativa uppgifter. Om användarkontot inte frågar efter ett sudo-lösenord behövs inte detta. Du har också möjlighet att inaktivera iptables och AppArmor eller SELinux på värden för att undvika problemet med den initiala distributionen.

På följande skärm kan du välja att installera MongoDB-binärer från antingen MongoDB Inc eller från Percona. Även här måste du ange ditt MongoDB administrativa användarkonto och lösenord eftersom säkerhet på användarnivå krävs.

ClusterControl distribuera MongoDB-guiden, ReplicaSet

På den här skärmen kan du också se vilken konfigurationsmall som används. ClusterControl använder konfigurationsfilmallar för att säkerställa repeterbara distributioner. Mallar lagras på ClusterControl-värden och kan redigeras direkt med hjälp av kommandoraden eller via ClusterControl-gränssnittet. Du kan också välja att använda leverantörens arkiv, om du vill, eller välja ditt eget arkiv. Dessutom kan du automatiskt skapa ett nytt arkiv på ClusterControl-värden. Detta gör det möjligt att frysa versionen av MongoDB som ClusterControl kommer att distribuera till den aktuella versionen. När du har utfört lämplig konfiguration här klickar du på Distribuera för att fortsätta.

Implementera sönderdelning

ClusterControl kan också distribuera delade kluster. Två metoder för att göra det stöds. Först kan du konvertera ett befintligt MongoDB ReplicaSet till ett delat kluster, som visas nedan.

ClusterControl Deploy MongoDB-skärvor

När du klickar på "Konvertera till Shard" uppmanas du att lägga till minst en konfigurationsserver (för produktionsmiljöer bör du lägga till tre), och en router, även känd som en "mongos"-process. Det sista steget är att välja dina MongoDB-konfigurationsmallar för konfigurationsserver och router, såväl som din datakatalog. Klicka slutligen på distribuera. När det är klart kommer det att dyka upp i din databasklustervy. Det kommer att visa din skärvhälsa istället för enskilda fall. Det är också möjligt att lägga till ytterligare skärvor efter behov.

Konvertera till Shard

Om du råkar stöta på skalningsproblem kan du skala denna replikauppsättning genom att antingen lägga till fler sekundärer eller skala ut genom att skära. Du kan konvertera ett befintligt ReplicaSet till ett fragmenterat kluster, men det här är en lång process där du lätt kan göra fel. I ClusterControl har vi automatiserat denna process, där vi automatiskt lägger till Config-servrarna, shard-routrarna och aktiverar sharding.

För att konvertera ett ReplicaSet till ett fragmenterat kluster kan du helt enkelt trigga det via rullgardinsmenyn för åtgärder:

ClusterControl Konvertera till shard

Schemalägg säkerhetskopieringspolicy

Det är viktigt att behålla säkerhetskopieringen av din databas och att din databas har en bra och enkel process för säkerhetskopiering. ClusterControl har stöd för helt konsekvent säkerhetskopiering och återställning av din MongoDB-replikuppsättning eller fragmenterade kluster.

Säkerhetskopieringar kan tas manuellt eller schemaläggas. Centraliseringen av säkerhetskopior stöds, med säkerhetskopior lagrade antingen på styrenhetens filsystem, inklusive nätverksmonterade kataloger eller uppladdade till en förkonfigurerad molnleverantör - för närvarande stöds leverantörer är Google Cloud Platform, Amazon Web Services och Microsoft Azure. Detta gör att du kan dra full nytta av avancerad livscykelhanteringsfunktion som tillhandahålls av Amazon och Google för funktioner som anpassade lagringsscheman, långtidsarkivering och kryptering i vila, bland annat.

Säkerhetskopiering kan konfigureras; du kan välja att behålla din säkerhetskopia under vilken tidsperiod som helst eller att aldrig ta bort säkerhetskopior. AES256-kryptering används för att säkra dina säkerhetskopior mot oseriösa element.

För snabb återställning kan säkerhetskopior återställas direkt till säkerhetskopieringsklustret - ClusterControl hanterar hela återställningsprocessen från lansering till klusteråterställning, och tar bort felbenägna manuella steg från processen.

Aktivera driftsrapporter

Med ClusterControl kan du schemalägga rapporter över flera miljöer som "Daglig systemrapport", "Paketuppgraderingsrapport", "Schemaändringsrapport" samt "Säkerhetskopieringar" och "Tillgänglighet". Dessa rapporter hjälper dig att hålla din miljö säker och funktionsduglig. Du kommer också att se rekommendationer om hur man åtgärdar luckor. Rapporter i HTML-format kan skickas via e-post till SysOps, DevOps eller till och med chefer som vill få regelbundna statusuppdateringar om ett givet systems tillstånd.

Prestandarådgivare

Rådgivare ger specifika råd om hur man löser problem inom områden som prestanda, säkerhet, logghantering, konfiguration, lagringsutrymme och annat. ClusterControl kommer med en lista med fördefinierade rådgivare som är avsedda att spåra tillståndet för olika mätvärden och tillståndet för dina databaser. Vid behov skapas en varning. De kan utökas med manuella skript. För mer information följ vår senaste blogg om "Hur man automatiserar analys av databasarbetsbelastning med ClusterControl Performance Advisors".

Bland olika prestandarådgivare för operativsystem, kan du hitta nedanstående relaterat till MongoDB.

MongoDB sharding rådgivare
anslutningar som används
replikeringskontroll
replikeringsfönster

Implementera i molnet

Från och med version 1.6 låter ClusterControl dig skapa MongoDB 3.4 ReplicaSets i molnet. De molnplattformar som stöds är Amazon AWS, Google Cloud och Microsoft Azure.

Guiden leder dig genom skapande av virtuella datorer och MongoDB-inställningar, allt på ett ställe.

ClusterControl distribuera MongoDB ReplicaSet i molnet

Processen låter dig välja OS-parametrar inklusive nätverksinställningar. Det finns inget behov av att kopiera SSH-nycklar, de kommer att läggas till automatiskt. När jobbet är klart kommer du att se ditt kluster i huvudinstrumentpanelen. Från och med nu kan du hantera ditt MongoDB-kluster som alla andra i ClusterControl.

ClusterControl distribuera MongoDb RelicaSet i molnet, VM-nätverksinställningar

Säkerhetstips

Vid denna tidpunkt bör ditt nya kluster vara igång. Innan du tillåter användare och applikationsprocesser att komma åt data måste du definiera klustersäkerhetsinställningar. I våra tidigare bloggar tog vi upp farhågor om standardsäkerhetskonfigurationen. Här är några av de viktigaste sakerna du måste tänka på innan du skickar ditt nya kluster till andra team.

Ändra standardportar - som standard kommer MongoDB att binda till standardportar:27017 för MongoDB ReplicaSets eller Shard Routers, 27018 för shards och 27019 för Config-servrar. Användning av standardportar rekommenderas inte eftersom det förenklar möjligheten för en hackerattack.

Aktivera autentisering - utan autentisering kan användare logga in utan lösenord. Aktivera autentisering på alla dina miljöer (utveckling, certifiering och produktion).

security:
    Authentication: on

Använd starka lösenord - om det behövs, använd en lösenordsgenerator för att generera komplexa lösenord.

Lägg till replikeringsnyckelfil - med nyckelfilen aktiverad kommer autentiseringen av replikeringsströmmen att krypteras.

Kryptera dina säkerhetskopior - ClusterControl gör att du kan kryptera dina säkerhetskopior.

För vidare läsning har vi en blogg om hur man säkrar MongoDB.

Aktivera automatisk återställning av kluster

Den sista men inte minsta funktionen att aktivera skulle vara automatisk återställning av noder och kluster.

ClusterControl kan fungera för dig som en utökad 24/7 DBA-teammedlem. Det finns två huvudfunktioner här. Automatisk nodåterställning och automatisk klusteråterställning.

När automatisk nodåterställning är aktiverad kommer ClusterControl att reagera på nodproblem och i händelse av fel kommer den att försöka återställa enskilda noder. Detta är för att ta itu med saker som en process som körs av minne eller tjänst som kräver start efter ett strömavbrott, vad som än orsakar ett problem med tjänsten nere.

Alternativet för klusteråterställning är ännu mer sofistikerat. Den kommer att utföra en övergång vid behov.

I så fall kommer en återställning av ändringar som inte replikeras till slavarna att placeras i en "återställningsmapp", så det är upp till administratören att återställa den.

För att ställa in automatisk återställning av noder och kluster behöver du bara aktivera dem i huvudinstrumentpanelen.


  1. Hur man hanterar dokument i MongoDB

  2. MongoDB 'count()' är väldigt långsam. Hur förfinar/arbetar vi med det?

  3. MongoDB-lösning för dokument över 16 MB?

  4. Hur man använder SCAN med alternativet MATCH i Predis