GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So stellen Sie einen MongoDB Sharded Cluster unter CentOS 7 bereit

Splitter ist ein MongoDB-Prozess zum Speichern von Datensätzen auf verschiedenen Computern. Es ermöglicht Ihnen, eine horizontale Skalierung von Daten durchzuführen und alle Daten über unabhängige Instanzen hinweg zu partitionieren. Sharding ermöglicht es Ihnen, je nach Datenwachstum weitere Maschinen zu Ihrem Stack hinzuzufügen.

Sharding und Replikation

Machen wir es uns einfach. Wenn Sie Musiksammlungen haben, speichert und bewahrt „Sharding“ Ihre Musiksammlungen in verschiedenen Ordnern auf verschiedenen Instanzen oder Replikat-Sets auf, während „Replikation“ Ihre Musiksammlungen nur mit anderen Instanzen synchronisiert.

Drei Sharding-Komponenten

Splitter - Wird verwendet, um alle Daten zu speichern. Und in einer Produktionsumgebung ist jeder Shard ein Replikatsatz. Bietet Hochverfügbarkeit und Datenkonsistenz.

Konfigurationsserver – Wird zum Speichern von Cluster-Metadaten verwendet und enthält eine Zuordnung von Cluster-Datensatz und Shards. Diese Daten werden vom Mongos/Query-Server verwendet, um Operationen bereitzustellen. 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 Anforderungen an die „mongos“-Instanz, und „mongos“ übermittelt die Anforderungen dann mithilfe von Shard-Schlüsseln an die Shards-Replikatsätze.

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      Shardsvr3
      • 10.0.15.24      Shardsvr4
  • 1 CentOS 7-Server als Mongos/Query Router
      • 10.0.15.11       Mongos
  • Root-Rechte
  • Jeder Server ist mit einem anderen Server verbunden

Schritt 1 – SELinux deaktivieren und Hosts konfigurieren

In diesem Tutorial werden wir SELinux deaktivieren. Ändern Sie die SELinux-Konfiguration von „Erzwingen“ auf „Deaktiviert“.

Stellen Sie über OpenSSH eine Verbindung zu allen Knoten her.

ssh [email protected]

Deaktivieren Sie SELinux, indem Sie die Konfigurationsdatei bearbeiten.

vim /etc/sysconfig/selinux

Ändern Sie den SELINUX-Wert auf „deaktiviert“.

SELINUX=disabled

Speichern und beenden.

Als nächstes bearbeiten Sie die hosts-Datei auf jedem Server.

vim /etc/hosts

Fügen Sie die folgende Hostkonfiguration 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 mit dem Befehl reboot neu.

reboot

Schritt 2 – MongoDB auf allen Instanzen installieren

Wir werden die neueste MongoDB-Version (3.4) für alle Instanzen verwenden. Fügen Sie ein neues MongoDB-Repository hinzu, indem Sie den folgenden Befehl 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 folgenden yum-Befehl.

sudo yum -y install mongodb-org

Nachdem Mongodb installiert ist, können Sie die Datei „mongo ' oder 'Mongott ' Befehl.

mongod --version

Schritt 3 – Konfigurationsserver-Replikatsatz erstellen

Im Abschnitt „Voraussetzungen“ haben wir bereits einen Konfigurationsserver mit 2 Maschinen „configsvr1“ und „configsvr2“ definiert. Und in diesem Schritt konfigurieren wir es als Replikatsatz.

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

systemctl stop mongod

Bearbeiten Sie die standardmäßige mongodb-Konfiguration „mongod.conf ' mit dem Vim-Editor.

vim /etc/mongod.conf

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

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 Replikationsabschnitt einen Replikationsnamen fest.

replication:
  replSetName: "replconfig01"

Definieren Sie im Abschnitt „Sharding“ 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 den Eigentümer dieses Verzeichnisses in den Benutzer „mongod“ ändern.

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

Starten Sie danach den Mongod-Dienst mit dem folgenden Befehl.

mongod --config /etc/mongod.conf

Sie können den Befehl netstat verwenden, um zu überprüfen, ob der Mongod-Dienst auf Port 27017 ausgeführt wird.

netstat -plntu

Configsvr1 und Configsvr2 sind bereit für den Replikatsatz. Verbinden Sie sich mit dem 'configsvr1'-Server und greifen Sie auf die Mongo-Shell zu.

ssh [email protected]
mongo --host configsvr1 --port 27017

Initiieren Sie den Replikatsatznamen mit allen configsvr-Mitgliedern, indem Sie die folgende Abfrage verwenden.

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 dies, dass der configsvr bereits mit dem Replikatsatz konfiguriert ist.

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

rs.isMaster()
rs.status()

Die Konfiguration des Config Server Replica Sets ist abgeschlossen.

Schritt 4 – Erstellen Sie die Shard-Replik-Sets

In diesem Schritt konfigurieren wir 4 'centos 7'-Server als 'Shard'-Server mit 2 'Replica Set'.

  • 2-Server – 'shardsvr1 ' und 'shardsvr2 ' mit dem Namen des Replikatsatzes:'shardreplica01 '
  • 2-Server – 'shardsvr3 ' und 'shardsvr4 ' mit dem Namen des Replikatsatzes:'shardreplica02 '

Stellen Sie eine Verbindung zu jedem Server her, stoppen Sie den Mongod-Dienst (falls ein 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, um Ihre interne Netzwerkadresse zu verwenden.

bindIP: 10.0.15.21

Im Replikationsabschnitt können Sie „shardreplica01 verwenden “ für die erste und zweite Instanz. Und verwenden Sie 'shardreplica02 ' für den dritten und vierten Shard-Server.

replication:
  replSetName: "shardreplica01"

Definieren Sie als Nächstes 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 ausgeführt wird:

netstat -plntu

Sie werden sehen, dass MongoDB auf der lokalen Netzwerkadresse ausgeführt wird.

Erstellen Sie als Nächstes einen neuen Replikatsatz für diese beiden Shard-Instanzen. Verbinden Sie sich mit 'shardsvr1' und greifen Sie auf die Mongo-Shell zu.

ssh [email protected]
mongo --host shardsvr1 --port 27017

Initiieren Sie den Replikatsatz mit dem Namen „shardreplica01 ', und die Mitglieder sind 'shardsvr1 ' und 'shardsvr2 '.

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

Wenn kein Fehler auftritt, werden die Ergebnisse wie folgt angezeigt.

Ergebnisse von shardsvr3 und shardsvr4 mit dem Replikatsatznamen „shardreplica02 '.

Wiederholen Sie diesen Schritt für shardsvr3 und shardsvr4 Server mit anderem Replikatsatznamen „shardreplica02 '.

Jetzt haben wir 2 Replikatsätze erstellt – 'shardreplica01 ' und 'shardreplica02 ' - als die Scherbe.

Schritt 5 – Mongos/Query Router konfigurieren

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 beim Mongos-Server an und stoppen Sie den MongoDB-Dienst.

ssh [email protected]  
systemctl stop mongod

Führen Sie Mongos mit der Befehlszeile wie unten gezeigt aus.

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

Verwenden Sie die Option „--configdb“, um den Konfigurationsserver zu definieren. Wenn Sie in Produktion sind, verwenden Sie mindestens 3 Konfigurationsserver.

Sie sollten ähnliche Ergebnisse wie die folgenden sehen.

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

Mongos-Instanzen werden ausgeführt.

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

Öffnen Sie eine weitere Shell aus dem vorherigen Schritt, verbinden Sie sich erneut mit dem Mongos-Server und greifen Sie auf die Mongo-Shell zu.

ssh [email protected]
mongo --host mongos --port 27017

Fügen Sie den Shard-Server mit der sh mongodb-Abfrage hinzu.

Für „shardreplica01 ' Instanzen:

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

Für „shardreplica02 ' Instanzen:

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()

Der Sharding-Status wird ähnlich wie im folgenden Screenshot angezeigt.

Wir haben 2 Shard-Replikat-Sets und 1 Mongos-Instanz, die auf unserem Stack ausgeführt werden.

Schritt 7 – Testen

Greifen Sie zum Testen der Einrichtung auf die Mongo-Shell des Mongos-Servers zu.

ssh [email protected]
mongo --host mongos --port 27017

Sharding für eine Datenbank aktivieren

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

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

Sehen Sie sich jetzt den Status der Datenbank an, sie wurde in den Replikatsatz „shardreplica01“ partitioniert.

Sharding für Sammlungen aktivieren

Fügen Sie als Nächstes neue Sammlungen mit Sharding-Unterstützung zur Datenbank hinzu. Wir fügen eine neue Sammlung mit dem Namen „Stack“ mit der Shard-Sammlung „Name“ hinzu und sehen dann den Datenbank- und Sammlungsstatus.

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

Neue Sammlungen „Stack“ mit Shard-Sammlung „Name“ wurden hinzugefügt.

Fügen Sie Dokumente zum "Stapel" der Sammlungen hinzu.

Fügen Sie nun die Dokumente den Sammlungen hinzu. Wenn wir der Sammlung Dokumente auf einem Sharded-Cluster hinzufügen, müssen wir den „Shard-Schlüssel“ einschließen.

Im folgenden Beispiel verwenden wir den Shard-Schlüssel „name“. ', wie wir hinzugefügt haben, als wir das Sharding für Sammlungen aktiviert haben.

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

Wie in den folgenden Screenshots gezeigt, wurden Dokumente erfolgreich zur Sammlung hinzugefügt.

Wenn Sie die Datenbank testen möchten, können Sie eine Verbindung mit dem Replikatsatz „shardreplica01“ herstellen ' PRIMARY-Server und öffnen Sie die Mongo-Shell. Ich melde mich beim PRIMARY-Server „shardsvr2“ an.

ssh [email protected]
mongo --host shardsvr2 --port 27017

Überprüfen Sie die auf dem Replikatsatz verfügbare Datenbank.

show dbs
use lemp
db.stack.find()

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

MongoDB Sharded Cluster auf CentOS 7 wurde erfolgreich installiert und bereitgestellt.


Cent OS
  1. So stellen Sie CDP auf einem CentOS-Server bereit

  2. So installieren Sie MongoDB auf CentOS 8 / RHEL 8

  3. So installieren Sie MongoDB 4.2/4.0 unter CentOS 6/RHEL 6

  4. So installieren Sie MongoDB 4.4/4.2 unter CentOS 7/RHEL 7

  5. So installieren Sie FlintCMS unter CentOS 7

So installieren Sie einen Kubernetes-Docker-Cluster unter CentOS 7

So installieren Sie MongoDB in CentOS 8

So installieren Sie MongoDB Compass unter CentOS 8

So installieren Sie MongoDB unter CentOS 6

So richten Sie einen Redis-Cluster in CentOS 8 ein – Teil 3

Wie installiere ich Mongodb in CentOS?