sql >> Database >  >> NoSQL >> MongoDB

MongoDB implementeren voor hoge beschikbaarheid

Inleiding

MongoDB heeft geweldige ondersteuning voor hoge beschikbaarheid via ReplicaSets. Het inzetten van een ReplicaSet is echter niet voldoende voor een productieklaar systeem. Dat laatste vereist een beetje planning. Implementatie is slechts de eerste stap, daarna moeten we de operationele teams bewapenen met monitoring, waarschuwingen, beveiliging, detectie van afwijkingen of fouten, automatisch herstel/failover, back-upbeheer en andere tools om de omgeving draaiende te houden.

Vereisten

Voordat u kunt beginnen met uw MongoDB-implementatie met ClusterControl, zijn enkele voorbereidingen vereist. De ondersteunde platforms zijn RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS en Debian 7.x/8.x. De minimale vereisten voor OS-bronnen zijn 2 GB RAM, 2 CPU en 20 GB schijfruimte op x86 architectuur. ClusterControl kan zelf draaien op gewone VM's of barebone-hosts die on-prem, achter een firewall of op cloud-VM's draaien.

Bovendien vereist ClusterControl dat poorten die door de volgende services worden gebruikt, worden geopend/ingeschakeld:
ICMP (echo reply/request)
SSH (standaard is 22)
HTTP (standaard is 80)
HTTPS (standaard is 443)
MySQL (standaard is 3306) (interne database)
CMON RPC (standaard is 9500)
CMON RPC TLS (standaard is 9501)
CMON-evenementen (standaard is 9510)
CMON SSH (standaard is 9511)
CMON Cloud (standaard is 9518)

Streamingpoort voor back-ups via netcat (standaard is 9999)

De gemakkelijkste en handigste manier om ClusterControl te installeren, is door het installatiescript te gebruiken dat wordt geleverd door Verschillend. Download eenvoudig het script en voer het uit als de rootgebruiker of gebruiker met sudo root-toestemming. Als u een meer handmatige aanpak nodig heeft, bijvoorbeeld als uw servers helemaal geen internettoegang hebben, kunt u de instructies in de ClusterControl-documentatie volgen.

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

Volg de installatiewizard waar u wordt begeleid bij het opzetten van een interne ClusterControl-databaseserver en zijn inloggegevens, het cmon-wachtwoord voor ClusterControl-gebruik, enzovoort. U zou de volgende regel moeten krijgen zodra de installatie is voltooid:

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

De volgende stap is het genereren van een SSH-sleutel die we later zullen gebruiken om de wachtwoordloze SSH in te stellen. Als u een sleutelpaar heeft dat u wilt gebruiken, kunt u het aanmaken van een nieuw sleutelpaar overslaan.

U kunt elke gebruiker in het systeem gebruiken, maar deze moet de mogelijkheid hebben om supergebruikersbewerkingen (sudoer) uit te voeren. In dit voorbeeld hebben we de rootgebruiker gekozen:

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

Stel wachtwoordloze SSH in op alle nodes die u wilt bewaken/beheren via ClusterControl. In dit geval zullen we dit instellen op alle knooppunten in de stapel (inclusief ClusterControl-knooppunt zelf). Voer op het ClusterControl-knooppunt de volgende opdrachten uit om ssh-sleutels te kopiëren en geef het root-wachtwoord op wanneer daarom wordt gevraagd:

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

U kunt vervolgens controleren of het werkt door de volgende opdracht uit te voeren op het ClusterControl-knooppunt:

$ ssh [email protected] "ls /root"

Zorg ervoor dat u het resultaat van de bovenstaande opdracht kunt zien zonder dat u een wachtwoord hoeft in te voeren.
Als de installatie is voltooid, moet u kunnen inloggen op de webinterface via

https://<your_vm_name>/clustercontrol/#

Na de eerste keer inloggen ziet u een venster met opties om te beginnen met uw eerste implementatie of om een ​​bestaand cluster te importeren.

ClusterControl Bestaande cluster implementeren en importeren

Repository's configureren

Laten we, voordat we beginnen met de implementatie, eens kijken naar het pakketbeheersysteem. Het implementatieproces van ClusterControl ondersteunt het hele proces van clusterinstallatie. Dat omvat OS-aanpassingen en het downloaden en installeren van pakketten. Als uw databaseknooppunten beperkte toegang tot internet hebben en u pakketten niet rechtstreeks van het knooppunt kunt downloaden, kunt u een pakketrepository rechtstreeks op de ClusterControl-host maken.

ClusterControl-pakketrepository

Er zijn drie manieren om MongoDB-pakketten in ClusterControl te onderhouden.

Gebruik repositories van leveranciers

Installeer de software door de favoriete softwarerepository van de databaseleverancier in te stellen en te gebruiken. ClusterControl zal de nieuwste versie installeren van wat is opgeslagen door de MongoDB-repository.

Stel geen leveranciersopslagplaatsen in

Installeer de software met behulp van de reeds bestaande softwarerepository die al op het besturingssysteem is ingesteld. De gebruiker moet de softwarerepository handmatig instellen op elk databaseknooppunt en ClusterControl zal deze repository gebruiken voor pakketimplementatie. Dit is goed als de databaseknooppunten zonder internetverbindingen werken en uw bedrijf een extern pakketsysteem heeft met MongoDB-pakketten.

Gespiegelde opslagplaatsen gebruiken (nieuwe opslagplaats maken)

Maak en spiegel de repository van de huidige leverancier en implementeer vervolgens met behulp van de lokale gespiegelde repository. Hiermee kunt u ook de recente versies van de softwarepakketten die zijn gebruikt om een ​​databasecluster voor een specifieke leverancier in te richten, 'bevriezen' (d.w.z. gebruik alleen Percona-pakketten).

ClusterControl automatiseert het maken van een interne pakketrepository

ReplicaSet implementeren

ClusterControl ondersteunt MongoDB/Percona Server voor MongoDB 3.x ReplicaSet. Om te beginnen met de implementatie van het nieuwe cluster, ga je naar de deploy-optie in de rechterbovenhoek. Gebruik bij het installeren van uw databaseknooppunten altijd schone en minimale VM's. Bestaande pakketafhankelijkheden kunnen indien nodig worden verwijderd. Nieuwe pakketten worden geïnstalleerd en bestaande pakketten kunnen worden verwijderd wanneer het knooppunt wordt voorzien van de vereiste software.

De allereerste stap van het implementatieproces is het verstrekken van ssh-referenties die geschikt zijn voor de hosts waarop u uw cluster implementeert. Omdat ClusterControl wachtwoordloze ssh gebruikt om verbinding te maken met uw hosts en deze te configureren, is een ssh-sleutel vereist.

ClusterControl implementeert MongoDB-clusterwizard

Het is raadzaam om een ​​onbevoegd gebruikersaccount te gebruiken om in te loggen op de hosts, zodat een sudo-wachtwoord kan worden verstrekt om administratieve taken te vergemakkelijken. Als het gebruikersaccount niet om een ​​sudo-wachtwoord vraagt, is dit niet nodig. Je hebt ook de mogelijkheid om iptables en AppArmor of SELinux op de host uit te schakelen om het probleem met de eerste implementatie te voorkomen.

Op het volgende scherm kunt u ervoor kiezen om MongoDB-binaire bestanden van MongoDB Inc of van Percona te installeren. Ook hier moet u uw MongoDB-beheerdersaccount en wachtwoord opgeven, aangezien beveiliging op gebruikersniveau verplicht is.

ClusterControl implementeert MongoDB-wizard, ReplicaSet

Op dit scherm kunt u ook zien welk configuratiesjabloon wordt gebruikt. ClusterControl gebruikt sjablonen voor configuratiebestanden om herhaalbare implementaties te garanderen. Sjablonen worden opgeslagen op de ClusterControl-host en kunnen rechtstreeks worden bewerkt via de opdrachtregel of via de gebruikersinterface van ClusterControl. U kunt er ook voor kiezen om de leveranciersrepository's te gebruiken, als u dat wilt, of uw eigen repository te kiezen. Bovendien kunt u automatisch een nieuwe repository maken op de ClusterControl-host. Dit maakt het mogelijk om de versie van MongoDB die ClusterControl zal implementeren in de huidige release te bevriezen. Nadat u hier de juiste configuratie heeft uitgevoerd, klikt u op Implementeren om door te gaan.

Sharding implementeren

ClusterControl kan ook Sharded Clusters implementeren. Hiervoor worden twee methoden ondersteund. Ten eerste kunt u een bestaande MongoDB ReplicaSet converteren naar een Sharded Cluster, zoals hieronder weergegeven.

ClusterControl MongoDB-scherven implementeren

Wanneer op "Convert to Shard" wordt geklikt, wordt u gevraagd om ten minste één Config-server toe te voegen (voor productieomgevingen moet u er drie toevoegen) en een router, ook wel een "mongos"-proces genoemd. De laatste fase is het kiezen van uw MongoDB-configuratiesjablonen voor de configuratieserver en router, evenals uw gegevensmap. Klik ten slotte op implementeren. Als het klaar is, wordt het weergegeven in de weergave Databaseclusters. Het toont uw scherfgezondheid in plaats van individuele instanties. Het is ook mogelijk om indien nodig extra scherven toe te voegen.

Converteren naar Scherf

Als u schaalproblemen tegenkomt, kunt u deze ReplicaSet schalen door meer secondaries toe te voegen of uit te schalen door sharding. U kunt een bestaande ReplicaSet converteren naar een shard-cluster, maar dit is een lang proces waarbij u gemakkelijk fouten kunt maken. In ClusterControl hebben we dit proces geautomatiseerd, waarbij we automatisch de Config-servers, shard-routers toevoegen en sharding inschakelen.

Om een ​​ReplicaSet om te zetten in een shard-cluster, kunt u deze eenvoudig activeren via de vervolgkeuzelijst voor acties:

ClusterControl Converteren naar Shard

Back-upbeleid plannen

Het is essentieel om de back-up van uw database te bewaren en dat uw database een goed en gemakkelijk back-upproces heeft. ClusterControl biedt ondersteuning voor volledig consistente back-up en herstel van uw MongoDB-replicaset of sharded-cluster.

Back-ups kunnen handmatig worden gemaakt of worden gepland. De centralisatie van back-ups wordt ondersteund, waarbij back-ups worden opgeslagen op het Controller-bestandssysteem, inclusief op het netwerk gemonteerde mappen, of worden geüpload naar een vooraf geconfigureerde cloudprovider - momenteel ondersteunde providers zijn Google Cloud Platform, Amazon Web Services en Microsoft Azure. Hierdoor kunt u optimaal profiteren van de geavanceerde functionaliteit voor levenscyclusbeheer van Amazon en Google, onder meer voor aangepaste bewaarschema's, archivering op lange termijn en encryptie in rust.

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.

Operationele rapporten inschakelen

Met ClusterControl kunt u rapporten voor meerdere omgevingen plannen, zoals "Dagelijks systeemrapport", "Pakketupgraderapport", "Schemawijzigingsrapport", evenals "Back-ups" en "Beschikbaarheid". Deze rapporten helpen u uw omgeving veilig en operationeel te houden. U ziet ook aanbevelingen voor het oplossen van hiaten. Rapporten in HTML-indeling kunnen worden gemaild naar SysOps, DevOps of zelfs managers die regelmatig statusupdates willen ontvangen over de gezondheid van een bepaald systeem.

Prestatieadviseurs

Adviseurs geven specifiek advies over het aanpakken van problemen op gebieden zoals prestaties, beveiliging, logbeheer, configuratie, opslagruimte en andere. ClusterControl wordt geleverd met een lijst met vooraf gedefinieerde adviseurs die bedoeld zijn om de status van verschillende statistieken en de status van uw databases bij te houden. Indien nodig wordt er een alert aangemaakt. Deze kunnen worden uitgebreid met handmatige scripts. Voor meer informatie kunt u onze recente blog over "Hoe u database-werkbelastinganalyse automatiseert met ClusterControl Performance Advisors" volgen.

Onder de verschillende prestatieadviseurs voor besturingssystemen vindt u de onderstaande met betrekking tot MongoDB.

MongoDB sharding-adviseurs
gebruikte verbindingen
replicatiecontrole
replicatievenster

Implementeren in de cloud

Vanaf versie 1.6 kunt u met ClusterControl een MongoDB 3.4 ReplicaSets in de cloud maken. De ondersteunde cloudplatforms zijn Amazon AWS, Google Cloud en Microsoft Azure.

De wizard leidt u op één plek door het maken van de VM-machine en de MongoDB-instellingen.

ClusterControl implementeert MongoDB ReplicaSet in de cloud

Tijdens het proces kunt u OS-parameters kiezen, inclusief netwerkconfiguratie. Het is niet nodig om SSH-sleutels te kopiëren, deze worden automatisch toegevoegd. Nadat de taak is voltooid, ziet u uw cluster in het hoofddashboard. Vanaf nu kunt u uw MongoDB-cluster beheren zoals elk ander in ClusterControl.

ClusterControl implementeert MongoDb RelicaSet in cloud, VM-netwerkinstellingen

Beveiligingstips

Op dit punt zou uw nieuwe cluster actief moeten zijn. Voordat u gebruikers en toepassingsprocessen toegang geeft tot gegevens, moet u instellingen voor clusterbeveiliging definiëren. In onze vorige blogs hebben we zorgen geuit over de standaard beveiligingsconfiguratie. Hier zijn enkele van de belangrijkste dingen waarmee u rekening moet houden voordat u uw nieuwe cluster doorgeeft aan andere teams.

Wijzig standaardpoorten - MongoDB zal standaard binden aan standaardpoorten:27017 voor MongoDB ReplicaSets of Shard Routers, 27018 voor shards en 27019 voor Config-servers. Het gebruik van standaardpoorten wordt niet aanbevolen, omdat dit de mogelijkheid van een hackeraanval vereenvoudigt.

Verificatie inschakelen - zonder authenticatie kunnen gebruikers inloggen zonder wachtwoord. Schakel authenticatie in op al uw omgevingen (ontwikkeling, certificering en productie).

security:
    Authentication: on

Gebruik sterke wachtwoorden - gebruik indien nodig een wachtwoordgenerator om complexe wachtwoorden te genereren.

Replicatonsleutelbestand toevoegen - met het sleutelbestand ingeschakeld, wordt de authenticatie van de replicatiestroom gecodeerd.

Versleutel uw back-ups - Met ClusterControl kunt u uw back-ups versleutelen.

Voor meer informatie hebben we een blog over het beveiligen van MongoDB.

Automatisch herstel cluster inschakelen

De laatste maar niet de minste functie die moet worden ingeschakeld, is automatisch herstel van knooppunten en clusters.

ClusterControl kan voor u aan de slag als uitgebreid 24/7 DBA-teamlid. Er zijn hier twee hoofdfuncties. Automatisch herstel van nodes en automatisch herstel van clusters.

Als automatisch herstel van knooppunten is ingeschakeld, reageert ClusterControl op problemen met knooppunten en in het geval van storingen probeert het afzonderlijke knooppunten te herstellen. Dit is om zaken aan te pakken zoals een proces waarbij geheugen of service wordt uitgevoerd en dat moet worden gestart na een stroomstoring, ongeacht wat een probleem met de service veroorzaakt.

De optie voor clusterherstel is nog geavanceerder. Het zal indien nodig een omschakeling uitvoeren.

In dat geval wordt het terugdraaien van wijzigingen die niet naar de slaven zijn gerepliceerd, in een 'rollback'-map geplaatst, dus het is aan de beheerder om dit te herstellen.

Om automatisch herstel van knooppunten en clusters in te stellen, hoeft u ze alleen maar in te schakelen in het hoofddashboard.


  1. Opgeslagen JavaScript-functies gebruiken in de aggregatiepijplijn, MapReduce of runCommand

  2. Redis probleem met meerdere invoegingen

  3. vertraagde_jobs versus resque versus bonenstaak?

  4. mangoest opslaan versus invoegen versus maken