So installieren Sie einen MongoDB Sharded Cluster auf CentOS 7

Sharding ist ein MongoDB-Prozess zur Speicherung von Datensätzen auf verschiedenen Maschinen. Es ermöglicht Ihnen eine horizontale Skalierung von Daten, Partitionsdaten über unabhängige Instanzen hinweg, und es kann sich um’Replica Sets‘ handeln. Die Partitionierung des Datensatzes bei’Sharding‘ erfolgt über den Shard-Schlüssel. Sharding ermöglicht es Ihnen, weitere Maschinen basierend auf dem Datenwachstum auf Ihrem Stapel hinzuzufügen.

Sharding und Replikation

Machen wir es uns einfach. Wenn Sie Musiksammlungen haben, speichert und bewahrt’Sharding‘ Ihre Musiksammlungen in einem anderen Ordner auf. Replikation‘ hingegen synchronisiert Ihre Musiksammlungen nur mit anderen Instanzen.

Drei Sharding-Komponenten

Shard – Wird verwendet, um alle Daten zu speichern, und in einer Produktionsumgebung ist jeder Shard ein Replikat. Bietet Hochverfügbarkeit und Datenkonsistenz.

Config Server – Wird zum Speichern von Cluster-Metadaten verwendet und enthält eine Zuordnung von Cluster-Datensatz und Shards. Diese Daten werden von mongos/query server verwendet, um Operationen durchzuführen. Es wird empfohlen, mehr als 3 Instanzen in der Produktion zu verwenden.

Mongos/Query Router – Dies sind nur Mongo-Instanzen, die als Anwendungsschnittstellen ausgeführt werden. Die Anwendung stellt Anfragen an Mongos-Instanzen, und dann liefern Mongos die Anfragen mit Hilfe des Shard-Keys an die Shards-Replikasets.

Voraussetzungen

  • 2 centOS 7 Server als Config Replica Sets
      • 10.0.15.31 × × × × configsvr1
      • 10.0.15.32 × × × × configsvr2
  • 4 CentOS 7 Server als Shard Replica Sets
      • 10.0.15.21 × × × × shardsvr1
      • 10.0.15.22 × × × × shardsvr2
      • 10.0.15.23 × × × × shardsvr33
      • 10.0.15.24 × × × × shardsvr4
  • 1 CentOS 7 Server als mongos/Query Router
      • 10.0.15.11 × × × × × Mongos
  • Root-Rechte
  • Jeder Server, der mit einem anderen Server verbunden ist.

Schritt 1 – SELinux deaktivieren und Hosts konfigurieren

Für dieses Tutorial werden wir SELinux deaktivieren. Ändern Sie die SELinux-Konfiguration von „erzwingen“ auf „deaktiviert“.

Verbinden Sie sich mit allen Knoten über OpenSSH.

ssh root@SERVERIP

Deaktivieren Sie SELinux, indem Sie die Konfigurationsdatei bearbeiten.

vim /etc/sysconfig/selinux

Ändern Sie den SELinux-Wert auf’disabled‘.

SELINUX=disabled

Speichern und beenden.

Bearbeiten Sie anschließend die Hosts-Datei auf jedem Server.

vim /etc/hosts

Fügen Sie die folgende Host-Konfiguration ein:

    10.0.15.31      configsvr1
     10.0.15.32      configsvr2
     10.0.15.11      mongos
     10.0.15.21      shardsvr1
     10.0.15.22      shardsvr2
     10.0.15.23      shardsvr3
     10.0.15.24      shardsvr4

Speichern und beenden.

Starten Sie nun alle Server neu:

reboot

Schritt 2 – MongoDB auf allen Instanzen installieren

Wir werden die neueste MongoDB (MongoDB 3.4) für alle Fälle verwenden. Fügen Sie ein neues MongoDB-Repository hinzu, indem Sie die folgenden Befehle ausführen:

cat <<'EOF' >> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF

Installieren Sie nun mongodb 3.4 aus dem mongodb-Repository mit dem Befehl yum unten.

sudo yum -y install mongodb-org

Nachdem mongodb installiert ist, verwenden Sie den Befehl „mongo“ oder „mongod“ wie folgt, um die Versionsdetails zu überprüfen.

mongod --version

MongoDB auf allen Instanzen installieren

Schritt 3 – Config Server Replica Set erstellen

Im Abschnitt Voraussetzungen haben wir bereits einen Config-Server mit 2 Maschinen ‚configsvr1‘ und ‚configsvr2‘ definiert. Und in diesem Schritt werden wir es als Replikat-Set konfigurieren.

Wenn auf dem Server ein mongod-Dienst läuft, stoppen Sie ihn mit dem folgenden systemctl-Befehl.

systemctl stop mongod

Bearbeiten Sie die Standardkonfiguration von mongodb ‚mongod.conf‚.

vim /etc/mongod.conf

Ändern Sie den DB-Speicherpfad in Ihr eigenes Verzeichnis. Wir verwenden ‚/data/db1‘ für den ersten Server und ‚/data/db2‘ für den zweiten Konfigurationsserver.

storage:
   dbPath: /data/db1

Ändern Sie den Wert der Zeile’bindIP‘ auf Ihre interne Netzwerkadresse. ‚configsvr1‘ mit der IP-Adresse 10.0.15.31 und der zweite Server mit 10.0.15.32.

bindIP: 10.0.15.31

Legen Sie im Abschnitt Replikation einen Replikationsnamen fest.

replication:
   replSetName: "replconfig01"

Und unter Sharding-Abschnitt, definieren Sie eine Rolle der Instanzen. Wir werden diese beiden Instanzen als’configsvr‘ verwenden.

sharding:
   clusterRole: configsvr

Speichern und beenden.

Als nächstes müssen wir ein neues Verzeichnis für MongoDB-Daten erstellen und dann die Eigentümerrechte dieses Verzeichnisses auf den Benutzer „mongod“ ändern.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Als nächstes starten Sie den mongod-Dienst mit dem folgenden Befehl.

mongod --config /etc/mongod.conf

Sie können überprüfen, ob der mongod-Dienst auf Port 27017 läuft, mit dem Befehl netstat.

netstat -plntu

Config Server Replica Set erstellen

Configsvr1 und Configsvr2 sind bereit für das Replikat-Set. Verbinden Sie sich mit dem Server „configsvr1“ und greifen Sie auf die Mongoshell zu.

ssh root@configsvr1
mongo --host configsvr1 --port 27017

Starten Sie den Replikat-Satznamen mit allen configsvr-Mitgliedern über die folgende Abfrage.

rs.initiate(
  {
    _id: "replconfig01",
    configsvr: true,
    members: [
      { _id : 0, host : "configsvr1:27017" },
      { _id : 1, host : "configsvr2:27017" }
    ]
  }
)

Wenn Sie ein Ergebnis erhalten ‚{ „ok“ : 1 }‚, bedeutet das, dass die configsvr bereits mit dem Replikat-Set konfiguriert ist.

Initiieren Sie den Namen des Replikatsets mit allen configsvr-Mitgliedern.

und Sie können sehen, welcher Knoten Master ist und welcher Knoten sekundär ist.

rs.isMaster()
rs.status()

Die Konfiguration des Config Server Replica Set ist abgeschlossen.

Konfiguration des Config Server Replica Set

Schritt 4 – Shard Replica Sets erstellen

In diesem Schritt werden wir 4 centos 7 Server als’Shard‘ Server mit 2’Replica Set‘ konfigurieren.

  • 2 Server -‚shardsvr1‚ und‘shardsvr2‚ mit Replikasatzname:‘shardreplica01‚.
  • 2 Server -‚shardsvr3‚ und‘shardsvr4‚ mit Replikasatzname:‘shardreplica02‚.

Verbinden Sie sich mit jedem Server und stoppen Sie den mongod-Dienst (wenn der Dienst ausgeführt wird), und bearbeiten Sie die MongoDB-Konfigurationsdatei.

systemctl stop mongod
vim /etc/mongod.conf

Ändern Sie den Standardspeicher in Ihr spezifisches Verzeichnis.

storage:
   dbPath: /data/db1

Ändern Sie in der Zeile’bindIP‘ den Wert auf Ihre interne Netzwerkadresse.

bindIP: 10.0.15.21

Im Abschnitt Replikation können Sie‘shardreplica01‚ für die erste und zweite Instanz verwenden. Und verwenden Sie‘shardreplica02‚ für den dritten und vierten Shard-Server.

replication:
   replSetName: "shardreplica01"

Als nächstes definieren Sie die Rolle des Servers. Wir werden all dies als shardsvr-Instanzen verwenden.

sharding:
   clusterRole: shardsvr

Speichern und beenden.

Erstellen Sie nun ein neues Verzeichnis für MongoDB-Daten.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Starten Sie den mongod-Dienst.

mongod --config /etc/mongod.conf

Überprüfen Sie mit dem folgenden Befehl, ob MongoDB läuft:

netstat -plntu

Sie werden sehen, dass MongoDB auf der lokalen Netzwerkadresse läuft.

Shard Replica-Sets erstellen

Als nächstes erstellen Sie ein neues Replikat-Set für diese 2 Shardinstanzen. Verbinde dich mit’shardsvr1′ und greife auf die Mongoshell zu.

ssh root@shardsvr1
mongo --host shardsvr1 --port 27017

Initiieren Sie das Replikat-Set mit dem Namen‘shardreplica01‚, und die Elemente sind‘shardsvr1‚ und‘shardsvr2‚.

rs.initiate(
   {
     _id : "shardreplica01",
     members: [
       { _id : 0, host : "shardsvr1:27017" },
       { _id : 1, host : "shardsvr2:27017" }
     ]
   }
 )

Wenn kein Fehler vorliegt, sehen Sie die Ergebnisse wie unten gezeigt.

Ergibt sich aus shardsvr3 und shardsvr4 mit dem Replikasatznamen‘shardreplica02‚.

Initiieren des Replikatsets

Wiederholen Sie diesen Schritt auf shardsvr3- und shardsvr4-Servern mit unterschiedlichem Replikasatznamen‘shardreplica02‚.

Jetzt haben wir 2 Replikatsätze als Shard erstellt -‚shardreplica01‚ und‘shardreplica02‚.

Schritt 5 – Konfigurieren von Mongos/Abfrage-Router

Der’Query Router‘ oder Mongos sind nur Instanzen, die’Mongos‘ ausführen. Sie können Mongos mit der Konfigurationsdatei oder nur mit einer Befehlszeile ausführen.

Melden Sie sich am Mongoserver an und stoppen Sie den MongoDB-Dienst.

ssh root@mongos  
systemctl stop mongod

Führen Sie Mongos mit dem folgenden Befehl aus.

mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

Verwenden Sie die Option ‚–configdb‘, um den Konfigurationsserver zu definieren. Wenn Sie in der Produktion sind, verwenden Sie mindestens 3 Konfigurationsserver.

Sie werden die Ergebnisse unten sehen.

Successfully connected to configsvr1:27017
 Successfully connected to configsvr2:27017

Mongos-Instanzen laufen.

Konfigurieren von Mongos/Abfrage-Router

Schritt 6 – Shards zu mongos/Query Router hinzufügen

Öffnen Sie eine weitere Shell aus Schritt 5, verbinden Sie sich erneut mit dem Mongoserver und greifen Sie auf die Mongoshell zu.

ssh root@mongos
mongo --host mongos --port 27017

Füge Shardserver mit sh mongodb-Abfrage hinzu.

Für Instanzen von‘shardreplica01.

sh.addShard( "shardreplica01/shardsvr1:27017")
sh.addShard( "shardreplica01/shardsvr2:27017")

Für Instanzen von‘shardreplica02.

sh.addShard( "shardreplica02/shardsvr3:27017")
sh.addShard( "shardreplica02/shardsvr4:27017")

Stellen Sie sicher, dass kein Fehler vorliegt und überprüfen Sie den Shard-Status.

sh.status()

Du wirst den Status wie im Screenshot unten gezeigt freigeben.

Shards zu mongos/Query Router hinzufügen

Wir haben 2 Shard-Replika-Sets und 1 Mongos-Instanz, die auf unserem Stapel laufen.

Schritt 7 – Prüfung

Jetzt testen wir den MongoDB-Server, indem wir Sharding aktivieren und dann Dokumente hinzufügen.

Greifen Sie auf die Mongoserver-Mongoshell zu.

ssh root@mongos
mongo --host mongos --port 27017

Sharding für eine Datenbank aktivieren

Erstellen Sie eine neue Datenbank und aktivieren Sie das Sharding für die neue Datenbank.

use lemp
sh.enableSharding("lemp")
sh.status()

Sharding aktivieren.

Sehen Sie nun den Status der Datenbank – sie wurde auf das Replikat-Set’shardreplica01′ partitioniert.

Sharding für Sammlungen aktivieren

Als nächstes fügen Sie der Datenbank neue Sammlungen mit Shardingunterstützung hinzu. Wir werden eine neue Sammlung mit dem Namen „Stapel“ mit der Shard-Sammlung „Name“ hinzufügen und dann den Status der Datenbank und der Sammlungen sehen.

sh.shardCollection("lemp.stack", {"name":1})
sh.status()

Sharding für Sammlungen aktivieren

Neue Sammlungen’stack‘ mit Shard-Sammlung’name‘ wurden hinzugefügt.

Fügen Sie Dokumente zu den Sammlungen’stack‘ hinzu.

Fügen Sie nun die Dokumente in die Sammlungen ein. Wenn wir Dokumente zur Sammlung auf einem Sharded-Cluster hinzufügen, müssen wir den’Shard-Schlüssel‘ hinzufügen.

Sie können ein Beispiel unten verwenden. Wir verwenden den Shard-Schlüssel „name„, wie wir bei der Aktivierung von Sharding für Sammlungen hinzugefügt haben.

db.stack.save({
    "name": "LEMP Stack",
    "apps": ["Linux", "Nginx", "MySQL", "PHP"],
})

Dokumente, die erfolgreich zur Sammlung hinzugefügt wurden, wie im folgenden Screenshot gezeigt.

Fügen Sie Dokumente zu den Sammlungen'stack' hinzu.

Wenn Sie die Datenbank testen möchten, können Sie sich mit dem Replikat-Set „shardreplica01“ PRIMARY-Server verbinden und die Mongoshell öffnen. Ich melde mich beim PRIMARY-Server’shardsvr2′ an.

ssh root@shardsvr2
mongo --host shardsvr2 --port 27017

Überprüfen Sie die Datenbank, die auf dem Replikat-Set verfügbar ist.

show dbs
use lemp
db.stack.find()

Sie werden sehen, dass die Datenbank, Sammlungen und Dokumente im Replikat-Set verfügbar sind.

Sie werden sehen, dass die Datenbank, Sammlungen und Dokumente im Replikat-Set verfügbar sind.

MongoDB Sharded Cluster auf CentOS 7 erfolgreich installiert und implementiert.

Referenz

Das könnte Dich auch interessieren …