MongoDB ist eine Open-Source-Datenbank, eine der beliebtesten dokumentenorientierten Datenbanken (NoSQL). In MongoDB werden Daten im Gegensatz zu Tabellen und Zeilen in einer relationalen Datenbank in JSON-ähnlichen Dokumenten mit dynamischen Schemas gespeichert.
MongoDB ist sowohl auf Skalierbarkeit als auch auf Entwickleragilität ausgelegt. Es ist für Windows, Linux, OS X, Solaris und FreeBSD verfügbar.
In diesem Beitrag werden wir sehen, wie MongoDB auf CentOS 8 / RHEL 8 installiert wird.
MongoDB-Editionen
MongoDB Inc veröffentlicht zwei Server-Editionen von MongoDB für seine Endbenutzer.
-
MongoDB Enterprise-Server
-
MongoDB-Community-Server
Hier sehen wir, wie die MongoDB Community Edition installiert wird. Der MongoDB-Community-Server wird unter Server Side Public License (SSPL) veröffentlicht.
MongoDB-Repository hinzufügen
MongoDB Inc bietet ein dediziertes Software-Repository zum Herunterladen und Installieren der MongoDB-Datenbank.
Fügen Sie das MongoDB-Repository auf Ihrem System hinzu.
MongoDB 4.4
cat << EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
MongoDB 4.2
cat << EOF > /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
EOF
Installieren Sie MongoDB
Nachdem Sie das MongoDB-Repository hinzugefügt haben, verwenden Sie den Befehl dnf, um MongoDB zu installieren.
dnf install -y mongodb-org
mongob-org (Meta-Paket, das die folgenden Komponenten installiert) | |
---|---|
mongodb-org-server | Serverpaket |
mongodb-org-mongos | Geteilter Daemon |
mongodb-org-shell | Befehlszeilenschnittstelle |
mongodb-org-tools | MongoDB-Tools (Importieren, Exportieren, Wiederherstellen, Dump und andere Tools) |
SELinux
Um MongoDB mit aktiviertem SELinux (Erzwingungsmodus) auszuführen, befolgen Sie die Anweisungen zum Anpassen der SELinux-Richtlinie für MongoDB. Überspringen Sie die folgenden Schritte, falls Sie SELinux auf Ihrem System deaktiviert haben.
Installieren Sie das Paket checkpolicy mit dem Befehl dnf.
dnf install -y checkpolicy
Erstellen Sie eine SELinux-Richtliniendatei, um dem MongoDB-Prozess den Zugriff auf die cgroup zu ermöglichen, um den verfügbaren Speicher auf Ihrem System zu ermitteln.
cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;
require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}
#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF
Kompilieren und laden Sie unser benutzerdefiniertes SELinux-Richtlinienmodul mit den folgenden Befehlen.
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
semodule -i mongodb_cgroup_memory.pp
Schritte nach der Installation
Ulimit-Einstellungen
Standardmäßig haben die meisten Systeme ein Limit für die Anzahl der Prozesse, geöffneten Dateien, Speicher usw., die ein bestimmter Benutzer (Anwendungs-Fid) haben kann, und diese Limits können Probleme im MongoDB-Betrieb verursachen.
MongoDB bietet jetzt empfohlene Grenzwerteinstellungen in der systemd-Einheitendatei. Wir müssen die Limits also nicht manuell festlegen.
Zugriffskontrolle aktivieren
Wenn Sie relationale Datenbanken wie MySQL oder PostgreSQL usw. nehmen, ist zumindest ein gewisses Maß an Authentifizierung enthalten, für das sich Benutzer selbst authentifizieren müssen, um Datenbankaktivitäten durchzuführen.
Bei MongoDB ist dies jedoch nicht der Fall. Alle Benutzer können auf jede Datenbank zugreifen und alle Operationen ohne Authentifizierung durchführen.
Um dieses Problem zu beheben, erstellen Sie zunächst einen Admin-Benutzer für den täglichen Betrieb.
Dann müssen wir die Zugriffskontrolle aktivieren, indem wir die Konfigurationsdatei von MongoDB bearbeiten.
vi /etc/mongod.conf
Fügen Sie die folgenden Zeilen hinzu.
security:
authorization: enabled
Huge Pages deaktivieren
Transparente riesige Seiten führen häufig zu Leistungsproblemen für Datenbank-Workloads. Daher empfiehlt MongoDB, die riesigen Seiten zu deaktivieren, um die beste Leistung zu erzielen.
Erstellen Sie ein Verzeichnis und platzieren Sie eine optimierte Profildatei, um riesige Seiten zu deaktivieren.
mkdir /etc/tuned/virtual-guest-no-thp
Erstellen Sie eine Datei.
vi /etc/tuned/virtual-guest-no-thp/tuned.conf
Fügen Sie die folgenden Zeilen in die able-Datei ein.
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
Aktivieren Sie unser neu erstelltes Profil.
tuned-adm profile virtual-guest-no-thp
MongoDB-Dienst starten
Um den MongoDB-Dienst zu starten, führen Sie Folgendes aus:
systemctl start mongod
Um den Status des MongoDB-Dienstes zu überprüfen, führen Sie Folgendes aus:
systemctl status mongod
Ausgabe:● mongod.service – MongoDB-Datenbankserver geladen:geladen (/usr/lib/systemd/system/mongod.service; aktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit Mo 10.08.2020 13:10:15 EDT; Vor 11 Sekunden Dokumente:https://docs.mongodb.org/manual Prozess:3147 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Prozess:3145 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (Code=beendet, Status=0/SUCCESS) Prozess:3143 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (Code=beendet, Status=0/SU> Prozess :3141 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Haupt-PID:3149 (mongod) Speicher:61,1 MB CGroup:/system.slice/mongod.service └─3149 /usr/bin/mongod -f /etc/mongod.confAug 10 13:10:14 centos8.itzgeek.local systemd[1]:MongoDB Database Server wird gestartet...Aug 10 13:10:14 centos8.itzgeek .local mongod[3147]:im Begriff, untergeordneten Prozess zu verzweigen, warten bis dienen> 10. August 13:10:14 centos8.itzgeek.local mongod[3147]:verzweigter Prozess:3149 10. August 13:10:15 centos8.itzgeek.local mongod [3147]:untergeordneter Prozess erfolgreich gestartet, übergeordneter Exiti>Aug 10 13:10:15 centos8.itzgeek.local systemd[1]:Started MongoDB Database Server.Überprüfen Sie die MongoDB-Version.
mongod --version
Output:db version v4.4.0Build Info:{ "version":"4.4.0", "gitVersion":"563487e100c4215e2dce98d0af2a6a5a2d67c5cf", "openSSLVersion":"OpenSSL 1.1.1c FIPS 28 May 2019", "modules" :[], "allocator":"tcmalloc", "environment":{ "distmod":"rhel80", "distarch":"x86_64", "target_arch":"x86_64" }}Verwenden Sie den Befehl netstat, um zu überprüfen, ob die MongoDB auf Port 27017 lauscht.
netstat -antup | grep -i 27017
Ausgabe:tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 6898/mongodLESEN: netstat-Befehl unter CentOS 7 / RHEL 7 nicht gefunden – Quick Fix
Zugriff auf MongoDB
Stellen Sie eine Verbindung zur MongoDB-Shell her, indem Sie den folgenden Befehl eingeben.
mongo
Ausgabe:MongoDB Shell Version v4.4.0connecting to:mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session:session { "id" :UUID("3ecdceaa-5050-41a3-96e3-8f821362523b ") }MongoDB-Serverversion:4.4.0Willkommen bei der MongoDB-Shell.Für interaktive Hilfe geben Sie „help“ ein.Umfassendere Dokumentation finden Sie unter https://docs.mongodb.com/Questions? Probieren Sie die MongoDB Developer Community-Foren https://community.mongodb.com>ausSchlussfolgerung
Das ist alles. Ich hoffe, Sie haben inzwischen MongoDB auf Ihrem CentOS 8 / RHEL 8-System. Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.