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

So installieren Sie einen MongoDB Sharded Cluster unter CentOS 7

Splitter ist ein MongoDB-Prozess zum Speichern von Datensätzen auf verschiedenen Computern. Es ermöglicht Ihnen, Daten horizontal zu skalieren, Daten über unabhängige Instanzen hinweg zu partitionieren, und es können „Replikatsätze“ sein. Die Datensatzpartitionierung auf „Sharding“ verwendet Shard-Schlüssel. Sharding ermöglicht es Ihnen, basierend auf dem Datenwachstum auf Ihrem Stack weitere Maschinen 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. „Replizieren“ hingegen ist lediglich das Synchronisieren Ihrer Musiksammlungen mit anderen Instanzen.

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, 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 Anfragen an Mongos-Instanzen, und dann übermittelt Mongos die Anfragen unter Verwendung 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

Für dieses 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 neu:

reboot

Schritt 2 – MongoDB auf allen Instanzen installieren

Wir werden die neueste MongoDB (MongoDB 3.4) für alle Instanzen 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 folgenden Befehl yum.

sudo yum -y install mongodb-org

Verwenden Sie nach der Installation von mongodb „mongo ' oder 'Mongott ' Befehl wie folgt, um die Versionsdetails zu überprüfen.

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 der Mongod-Dienst auf dem Server läuft, stoppen Sie ihn mit dem folgenden systemctl-Befehl.

systemctl stop mongod

Bearbeiten Sie die standardmäßige mongodb-Konfiguration „mongod.conf '.

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 die Eigentumsberechtigungen 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

Mit dem Befehl netstat können Sie ü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 – Shard-Replik-Sets erstellen

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 und stoppen Sie den Mongod-Dienst (falls 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 in Ihre interne Netzwerkadresse.

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 vorliegt, werden die Ergebnisse wie unten gezeigt angezeigt.

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

Wiederholen Sie diesen Schritt auf shardsvr3 und shardsvr4 Server mit anderem Replikatsatznamen „shardreplica02 '.

Jetzt haben wir 2 Replikatsätze als Shard erstellt – „shardreplica01 ' und 'shardreplica02 '.

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 dem folgenden Befehl 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.

Die Ergebnisse werden unten angezeigt.

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 Schritt 5, verbinden Sie sich erneut mit dem Mongos-Server und greifen Sie auf die Mongo-Shell zu.

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

Shard-Server mit sh mongodb-Abfrage hinzufügen.

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 wie im folgenden Screenshot gezeigt.

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

Schritt 7 – Testen

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

Greifen Sie 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.

Dokumente zum Sammlungsstapel hinzufügen.

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.

Sie können unten ein Beispiel verwenden. Wir verwenden 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"],
})

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

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.

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


Cent OS
  1. So installieren Sie MongoDB unter CentOS 8

  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 MongoDB Compass unter CentOS 8

So installieren Sie MongoDB unter CentOS 6

So installieren Sie MongoDB unter CentOS 7

Wie installiere ich MongoDB Version 4.0 auf Centos 7?

Wie installiere ich Mongodb in CentOS?

So installieren Sie Kubernetes-Cluster auf CentOS 8