Terug naar blog

Hoe u MongoDB-replicatie en automatische failover configureert

Hoe u MongoDB-replicatie en automatische failover configureert

Een replica set is gedefinieerd als een databasecluster van meerdere nodes met replicatie en automatische failover daartussen geconfigureerd. Om ervoor te zorgen dat de PRIMARY-database correct wordt gekozen, is het belangrijk om een oneven aantal leden in de set te hebben (inclusief of exclusief de Arbiter node). 

De geselecteerde database is verantwoordelijk voor alle hoofdtaken. Het verwerkt inkomende schrijfbewerkingen en slaat de informatie op in de oplog. Deze informatie kan worden geopend en gerepliceerd door de SECONDARY replica-leden om toe te passen op hun eigen datasets. Als gevolg hiervan zullen alle servers in de set dezelfde inhoud vertegenwoordigen en de beschikbaarheid ervan garanderen:

How to Configure MongoDB Replication and Automated Failover 1-Replica set- graphic

Stel nu een situatie voor waarin een onverwacht probleem (zoals een hardware- of verbindingsfout) ervoor zorgt dat de primaire database downtime ervaart. In zo'n geval start het systeem automatisch een nieuw verkiezingsproces om de normale werking te herstellen zonder dat handmatige tussenkomst vereist is. Het voordeel van een dergelijk systeem is dat u het beste krijgt van replicatie, zoals verhoogde beschikbaarheid, failover-redundantie en herstel na rampen, zonder dat u zich zorgen hoeft te maken over het afzonderlijk beheren van meerdere databases.

Als u een vergelijkbaar systeem wilt gebruiken, laat deze handleiding u zien hoe u een MongoDB replica set configureert met de CloudSigma PaaS. Zoals u in deze gids zult zien, gebruiken we drie leden, wat doorgaans voldoende is om een goede marge van informatieveiligheid en capaciteit te bieden voor het verwerken van I/O-bewerkingen voor de meest voorkomende toepassingen. Naast de daadwerkelijke configuratie van de replicatie, leren we ook hoe we de omgeving voorbereiden, authenticatie tussen de DB-nodes instellen en hoe we kunnen controleren of uw werk succesvol is geweest.

Stap 1: Maak een nieuwe omgeving

Om te beginnen heeft u ten minste 3 MongoDB-nodes nodig om een replica set te configureren. Ga dus gang en maak een nieuwe omgeving als volgt:

2-Create an Environment How to Configure MongoDB Replication and Automated Failover

In ons voorbeeld wijzen we alle MongoDB-instanties van versie 4.0.2 toe aan dezelfde omgeving. U kunt de Omgevingsnaam indien nodig wijzigen in de aangegeven ruimte en doorgaan met het installatieproces.

De volgende stap in het proces is het beveiligen van de communicatie tussen deze nodes met behulp van het authenticatiesleutelbestand.

Stap 2: Voeg een authenticatiesleutelbestand toe

Authenticatie is een cruciaal onderdeel van elke replicatie. Het is een beveiligingsproces dat alleen toegang verleent aan een lid van de replica set nadat deze zich correct heeft geïdentificeerd met een uniek authenticatiesleutelbestand. Dit houdt uw gegevens veilig voor ongewenste toeschouwers en derden. Hier leest u hoe u uw eigen authenticatiesleutelbestand kunt genereren:

  1. Klik op de Web SSH optie voor een van de database-nodes en log in:

3- Web SSH How to Configure MongoDB Replication and Automated Failover

    2. Vervolgens kunt u uw eigen sleutelbestand invoeren of een nieuwe genereren met openssl met behulp van het volgende commando:

In dit commando vertegenwoordigt 741 de sleutelgrootte in bytes en my.key is de naam van de sleutel.

    3. Tijd om het nieuwe sleutelbestand te distribueren over al uw MongoDB-instanties. Hier leest u hoe u dat doet:

  • Open de Bestandsbeheerder door te klikken op de Config knop naast een van de database-nodes:

4-Click on the Config

  • Zoek het my.key bestand in het configuratietabblad onder het pad: /home/jelastic/my.key. Open het en kopieer de inhoud van het bestand:

5- configuration tab How to Configure MongoDB Replication and Automated Failover

  • Onder het pad /var/lib/jelastic/keys vindt u de keys map. Maak een Nieuw bestand dat de MongoDB-instanties zullen gebruiken om elkaars identiteit te authenticeren. In ons geval maken we een bestand genaamd mongo-set.key:

6-keys directory

  • Plak de eerder gekopieerde inhoud in dit bestand en pas de wijzigingen toe door te klikken op Opslaan voor alle instanties:

7-Paste the clipboard content

Als resultaat van dit proces is het mongo-set.key bestand gedistribueerd over al onze MongoDB-nodes.

Step 3: Configureer de MongoDB-replicatie

Nu we de beveiliging van de instanties hebben gewaarborgd, kunnen we overgaan tot het daadwerkelijk configureren van de replica set. Laten we beginnen:

  1. Begin door naar het configuratietabblad voor MongoDB-nodes te gaan en het mongo.conf bestand te openen in de etc map. Scrol omlaag tot u de sectie replication vindt. Haal deze uit het commentaar en voeg de volgende string toe met een unieke naam voor uw replica set. In ons voorbeeld noemen we deze db-replication:
      2. Vervolgens voegen we een nieuwe parameter toe genaamd keyFile in de security-sectie. Dit dient om een pad op te geven naar het sleutelbestand dat zich momenteel op het volgende pad bevindt: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. Klik op de juiste knop om Opslaan de wijzigingen voor alle instanties in het editorvenster. 

      4. Nu moet u Herstarten al uw DB-nodes om de nieuwe configuratieparameters toe te passen:

9-Restart your DB nodes How to Configure MongoDB Replication and Automated Failover

Een ding om in gedachten te houden is dat wanneer u klaar bent met het configureren van de replica set en u alle nodes of de PRIMARY node herstart, het verkiezingsproces voor de nieuwe PRIMARY database zal beginnen tijdens de herstart.

     5. Kies de MongoDB-server die u als PRIMARY wilt gebruiken en open deze via het SSH-protocol:

10-access the MongoDB server How to Configure MongoDB Replication and Automated Failover

Onthoud: zodra de PRIMARY database is gekozen, zijn de andere leden van de replica set niet langer toegankelijk voor directe schrijfbewerkingen. Dit betekent dat alle wijzigingen en configuraties alleen kunnen worden uitgevoerd en toegepast op de huidige PRIMARY node. Dus tenzij u prioriteiten heeft ingesteld, moet u de verbindingsreeks in uw applicatie wijzigen naar de nieuwe PRIMARY node.

     6. Maak vervolgens verbinding met de gerepliceerde database met uw respectieve inloggegevens:

11-Access the database How to Configure MongoDB Replication and Automated Failover

In dit commando:

  • {user} –verwijst naar de gebruikersnaam van de beheerder die naar uw e-mail wordt verzonden (dit is meestal standaard admin).
  • {password} –dit is het wachtwoord dat naar uw e-mail is verzonden, samen met de bijbehorende gebruikersnaam.
  • {DB_name}- vertegenwoordigt de naam van de database die u wilt repliceren in deze replica set (we gebruiken de standaard admin in ons voorbeeld).

In het geval van een nieuwe verkiezing kunt u dezelfde inloggegevens van de admin-gebruiker gebruiken om in te loggen op een nieuwe PRIMARY database.

     7. Nu de verbinding tot stand is gebracht, moet u de volgende regels uitvoeren om de parameters voor de huidige MongoDB-node te definiëren en de replica set te initiëren:

In de bovenstaande regels vervangt u de waarden tussen de haakjes door uw eigen bijbehorende gegevens:

  • {replica_set} – dit is de naam van uw gerepliceerde databasegroep die u aan het begin van deze sectie hebt opgegeven. In ons geval was dit db-replication.
  • {current_db_ip} – geeft het IP-adres aan van de databasecontainer die u hebt geselecteerd:

12-initiate your replica set How to Configure MongoDB Replication and Automated Failover

In ons geval zijn de uitgevoerde regels:

13-config

14-rs.initiate()

        8. Voer vervolgens het volgende commando uit voor alle overige databases:

Hier verwijst {db_ip} naar het IP-adres van elke database:

15-rs.add(

       9. Zodra u alle replicatieleden hebt toegevoegd, krijgt u een volledig functionele replica set. We raden aan om aan het einde van het proces te controleren of alles correct is geconfigureerd. Voer hiervoor het volgende commando uit: rs.status(). Dit toont u de volledige informatie over uw replica set, als volgt:

16-execute the rs.status()

Stap 4: De ReplicaSet Arbiter instellen

We raden aan om in bepaalde gevallen een Arbiter-node te gebruiken. Wat is een Arbiter-node? Replicatie is doorgaans betrouwbaarder als de replica set een oneven aantal nodes bevat. Dus als u momenteel een even aantal nodes in uw set heeft, kunt u een Arbiter-node toevoegen om een quorum te behouden, aangezien deze reageert op heartbeat- en verkiezingsverzoeken van andere leden in de set. Hier zijn enkele details over Arbiter-nodes:

  • De Arbiter slaat geen gegevens op; hij stemt alleen bij verkiezingen als een andere node is uitgevallen.
  • Het is zeer licht van gewicht en verbruikt niet te veel resources.
  • Het wisselde gebruikersgegevens uit tussen versleutelde replica's.
  • Om de hoogste beschikbaarheid te behouden, kunt u proberen de Arbiter op een afzonderlijke node uit te voeren.

Hier leest u hoe u een Arbiter-node aan uw replica-set kunt toevoegen:

  1. Eerst zullen we horizontaal schalen en een extra node aan het cluster toevoegen:

17-ReplicaSet Arbiter

18-Scale out database cluster

2. Nu de node is toegevoegd, hebben we een nieuw sleutelbestand nodig. Ga naar de keys-directory en maak een sleutelbestand mongo-set.key. Kopieer de inhoud van de sleutel van een van de eerder geconfigureerde database-nodes en plak deze hier allemaal, net zoals we eerder deden.

3. Ga naar het mongod.conf-configuratiebestand. Haal de replicatiesectie uit het commentaar en voeg repISetName toe (dit is db-replication in ons geval). Ga ook naar de security-sectie en voeg de keyFile-parameter toe ( /var/lib/jelastic/keys/mongo-set.key in ons geval).

4. Start ten slotte de nieuwe node opnieuw op om deze nieuwe configuratieparameters toe te passen:

19- Restart newly

Het is belangrijk om te onthouden dat u op dit moment NIET alle nodes in het cluster opnieuw hoeft op te starten. Start alleen de nieuw toegevoegde Arbiter-node opnieuw op. Het opnieuw opstarten van alle nodes zal leiden tot een nieuwe PRIMARY-verkiezing (tenzij u prioriteiten hebt opgegeven om een specifieke database-node als PRIMARY te selecteren).

 5. Ten slotte kan de Arbiter aan de replica-set worden toegevoegd. Voer hiervoor de volgende opdracht uit op de PRIMARY-node:

Hier is {db_ip} het IP-adres van de nieuwe node:

20-IP address of a newly added node

 6. Nu kunt u controleren of de nieuwe node de Arbiter is geworden. U kunt dit doen door via SSH in te loggen op de nieuwe node en verbinding te maken met de MongoDB-instantie met de inloggegevens die u per e-mail hebt ontvangen op het moment dat de node werd aangemaakt:

21-connect MongoDB instance

Dit toont aan dat de nieuwe node die we zojuist aan het cluster hebben toegevoegd, fungeert als de Arbiter van db-replication. Dit zorgt voor een quorum in elke situatie, waardoor de replica-set betrouwbaarder wordt.

Stap 5: Beschikbaarheid van databasecluster testen

Vervolgens kunnen we ons MongoDB-cluster zo instellen dat er op afstand verbinding mee kan worden gemaakt en bewerkingen kunnen worden uitgevoerd. In het volgende voorbeeld zullen we verbinding maken en een paar controleopdrachten uitvoeren met behulp van een eenvoudige PHP-applet.

Hiervoor hebt u een applicatieserver nodig, zoals Apache. U kunt er een aan uw omgeving toevoegen zoals wij hebben gedaan, of een nieuwe maken in een afzonderlijke omgeving.

  1. Begin door te klikken op Change Environment Topology en de server toe te voegen:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. Open de Configuration Manager -tab voor de Apache server door te klikken op de Config -knop zoals hieronder weergegeven:

3. Zoek en open het index.php-bestand in de /var/www/webroot/ROOT-directory en plak de volgende code in plaats van de standaardinhoud:

De volgende waarden in de bovenstaande code moeten worden vervangen door uw respectieve gegevens:

  • {replica_set_name} – voer de naam van uw replica set in.
  • {db_username} – voeg de admin-gebruiker van de gekozen primaire database toe (dit is standaard admin).
  • {db_password} – voer het wachtwoord van de admin-gebruiker in.
  • {NodeID} – vermeld het identificatienummer van de bijbehorende node. U kunt dit vinden op het CloudSigma PaaS-dashboard.
  • {environment_domain} – voeg het omgevingsdomein toe. U kunt dit ook vinden op het CloudSigma PaaS-dashboard:

Zorg ervoor dat u de ID's van elke node in uw replica set specificeert in de juiste mongodbConnectionURI sectie.

Het invoeren van de bijbehorende waarden en het uitvoeren van de code zal u een reeks strings tonen die vergelijkbaar is met deze:

Zorg ervoor dat u op Opslaan klikt voor het bestand op dit punt!

4. Om Apache te laten communiceren met de MongoDB-server, is een speciale module vereist. U kunt deze module toevoegen binnen configs. Ga naar de etc map en open het php.ini-bestand. Zoek de [mongodb] sectie. Hier hoeft u alleen maar de puntkomma te verwijderen voor de extension=mongodb.so regel om deze extensie in te schakelen:

      5. Pas de nieuwe configuraties toe door te klikken op Opslaan in het editorvenster. Zoals altijd moeten we de nodes herstarten om de wijzigingen toe te passen. Klik op de Restart Nodes knop naast de Application Server om dit te doen:

    6. Klik nu op de Open in Browser knop om het uit te testen:

Als u op dit pictogram klikt, wordt er een nieuw browsertabblad geopend dat alle informatie over de leden/nodes van uw replica set en hun toegankelijkheid als volgt weergeeft:

Omdat we het commando ping (regel 6 van het index.php ), toont de eerste regel het resultaat van het controleren van de beschikbaarheid van de replica set:

Dit betekent dat de replica set succesvol is getest. 

Het volgende blok in de resultaten toont gedetailleerde informatie over de replica set hosts. Deze gegevens zijn verkregen dankzij de getServers functie (regel 11 van het index.php). Op dezelfde manier kunt u ook enkele waarden controleren die zijn toegewezen tijdens het proces van het maken van deze replica set:

  • host – het IP-adres van een specifieke database.
  • port – dit is de poort van het huidige replicatielid.
  • [“is_primary”] en [“is_secondary”] – parameters die de serverstatus aangeven. Overeenkomstige waarden voor de gekozen primaire MongoDB-server zijn true, false en voor twee andere MongoDB-servers – respectievelijk false, true.

Additionally, you can start and stop database nodes at any time to track changes. You can also refresh the page to do the same. This allows you to ensure that your MongoDB cluster is always available, up, and running as you configured it.

Met CloudSigma PaaS kunnen gebruikers profiteren van de voordelen van het gebruik van replica sets zonder zich al te veel zorgen te hoeven maken over de configuratie en de back-end. Deze handleiding laat zien hoe eenvoudig het opzetten van uw eigen MongoDB-cluster kan zijn met slechts een paar simpele stappen. U kunt meer leren over MongoDB, hoe u dit instelt voor Ubuntu of public cloud servers, evenals welke andere geavanceerde functies de CloudSigma PaaS te bieden heeft. We nodigen u ook uit om een proefperiode te starten van de PaaS om gratis vertrouwd te raken met het dashboard en de marketplace en wat ze te bieden hebben. 

Probeer PaaS 7 dagen gratis uit

author

Preslav Dobrev

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.