So installierst du die Apache Cassandra NoSQL-Datenbank auf einem Ubuntu 22.04 Cluster mit einem Knoten
Apache Cassandra ist ein verteiltes Open-Source NoSQL-Datenbankmanagementsystem. Cassandra kann horizontal skaliert werden, indem weitere Knoten hinzugefügt werden, über die die Daten automatisch repliziert werden. Die Knoten können ohne Ausfallzeit hinzugefügt oder entfernt werden. Die Knoten können logisch als Cluster oder Ring organisiert und über mehrere Rechenzentren verteilt werden, um die Geschwindigkeit und Zuverlässigkeit von Hochleistungsanwendungen zu verbessern.
In diesem Tutorial lernen wir, wie man Apache Cassandra auf einem Ubuntu 22.04 Cluster mit einem Knoten installiert.
Voraussetzungen
- Ein Server mit Ubuntu 22.04 und mindestens 2 GB RAM.
- Ein Nicht-Sudo-Benutzer mit Root-Rechten.
- Alles ist auf dem neuesten Stand.
$ sudo apt update && sudo apt upgrade
Schritt 1 – Java installieren
Apache Cassandra benötigt Java 8 oder Java 11, um zu funktionieren. Die neueste Version von Cassandra bietet volle Unterstützung für Java 11, das wir verwenden werden.
$ sudo apt install openjdk-11-jdk
Bestätige die Java-Installation.
$ java -version openjdk 11.0.15 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Schritt 2 – Apache Cassandra installieren
Der erste Schritt besteht darin, das offizielle Repository von Cassandra hinzuzufügen.
Führe den folgenden Befehl aus, um das Repository zur Repository-Liste des Systems hinzuzufügen.
$ echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version von Cassandra 4.0.5 verfügbar. Der obige Befehl verwendet 40x
, um die 4.0-Serie von Cassandra zu repräsentieren.
Füge den Repository-Schlüssel zur Liste der vertrauenswürdigen Repositorys des Systems hinzu.
$ wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo tee /etc/apt/trusted.gpg.d/cassandra.asc
Aktualisiere die Repository-Liste des Systems.
$ sudo apt update
Installiere Cassandra.
$ sudo apt install cassandra
Schritt 3 – Cassandra-Dienst überprüfen
Cassandra erstellt und startet automatisch den Service Daemon. Überprüfe den Status des Dienstes.
$ sudo systemctl status cassandra
Du solltest die folgende Ausgabe erhalten.
? cassandra.service - LSB: distributed storage system for structured data Loaded: loaded (/etc/init.d/cassandra; generated) Active: active (running) since Mon 2022-07-25 11:40:42 UTC; 12min ago Docs: man:systemd-sysv-generator(8) Tasks: 48 (limit: 2241) Memory: 1.3G CPU: 38.219s CGroup: /system.slice/cassandra.service ??4602 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA -> Jul 25 11:40:42 cassandra systemd[1]: Starting LSB: distributed storage system for structured data... Jul 25 11:40:42 cassandra systemd[1]: Started LSB: distributed storage system for structured data.
Du kannst den Status auch mit dem Befehl nodetool
überprüfen.
$ nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 69.08 KiB 16 100.0% 6690243a-950d-4d64-9463-aa722f8064d4 rack1
Schritt 4 – Cassandra konfigurieren
Der Standardspeicherort der Konfigurationsdateien für Cassandra ist /etc/cassandra
. Der Standardspeicherort für die Log- und Datenverzeichnisse ist /var/log/cassandra
und /var/lib/cassandra
.
Einstellungen auf JVM-Ebene wie die Heap-Größe können über die Datei /etc/cassandra/cassandra-env.sh
festgelegt werden. Du kannst zusätzliche JVM-Befehlszeilenargumente an die Variable JVM_OPTS
übergeben. Die Argumente werden an Cassandra übergeben, wenn es startet.
4.1 Aktivieren der Benutzerauthentifizierung
Um die Benutzerauthentifizierung zu aktivieren, musst du zunächst ein Backup der Datei /etc/cassandra/cassandra.yaml
erstellen.
$ sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
Öffne die Datei cassandra.yaml
, um sie zu bearbeiten.
$ sudo nano /etc/cassandra/cassandra.yaml
Finde die folgenden Parameter in dieser Datei.
... authenticator: AllowAllAuthenticator ... authorizer: AllowAllAuthorizer ... roles_validity_in_ms: 2000 ... permissions_validity_in_ms: 2000 ...
Ändere die Werte der Parameter wie unten angegeben.
... authenticator: org.apache.cassandra.auth.PasswordAuthenticator ... authorizer: org.apache.cassandra.auth.CassandraAuthorizer ... roles_validity_in_ms: 0 ... permissions_validity_in_ms: 0 . . .
Du kannst je nach deinen Anforderungen weitere Einstellungen vornehmen. Wenn sie auskommentiert sind, dann entferne die Kommentare.
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte Cassandra neu, um die geänderten Einstellungen zu aktivieren.
$ sudo systemctl restart cassandra
4.1.1 – Hinzufügen eines Administrator-Superusers
Jetzt, wo wir die Authentifizierung aktiviert haben, müssen wir einen Benutzer anlegen. Dazu verwenden wir das Cassandra Command Shell Utility. Melde dich mit den Anmeldedaten für den Standardbenutzer cassandra
an.
$ cqlsh -u cassandra -p cassandra
Du erhältst die folgende Shell.
Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. cassandra@cqlsh>
Erstelle einen neuen Superuser. Ersetze [username]
und [yourpassword]
durch deine Anmeldedaten.
cassandra@cqlsh> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
Melde dich von der Shell ab.
cassandra@cqlsh> exit
Melde dich wieder mit dem neuen Superuser-Konto an.
$ cqlsh -u username -p yourpassword
Entferne die erweiterten Rechte des Standardkontos cassandra
.
username@cqlsh> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false; username@cqlsh> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
Erteile dem Superuser-Konto alle Berechtigungen.
username@cqlsh> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
Melde dich von der Shell ab.
username@cqlsh> exit
4.2 – Bearbeiten der Konfigurationsdatei der Konsole
Wenn du die Cassandra Shell anpassen möchtest, kannst du dies tun, indem du die Datei cqlshrc
bearbeitest. Der Standardspeicherort für die Datei ist das Verzeichnis ~/.cassandra
. Wenn du sie aus einem anderen Verzeichnis laden möchtest, kannst du dem Tool cqlsh
das Argument --cqlshrc /customdirectory
übergeben. In der Standardinstallation von Cassandra ist die Datei nicht enthalten. Deshalb müssen wir sie selbst erstellen.
Erstelle die Datei cqlshrc
in dem Verzeichnis ~/.cassandra
. Wir brauchen sudo
nicht zu benutzen, um eine der Funktionen im Verzeichnis ~/.cassandra
auszuführen. Cassandra verlangt, dass die Dateien in diesem Verzeichnis dem lokalen Konto gehören und nicht von anderen Konten oder Gruppen aus zugänglich sein sollten.
$ touch ~/.cassandra/cqlshrc
Wenn das Verzeichnis ~/.cassandra
nicht vorhanden ist, dann erstelle es mit dem folgenden Befehl.
$ mkdir ~/.cassandra
Öffne die Datei zum Bearbeiten.
$ nano ~/.cassandra/cqlshrc
Im Github-Repository von Cassandra findest du eine Beispieldatei cqlshrc
. Du kannst je nach Bedarf einzelne oder alle Abschnitte von dort kopieren. Alle Einstellungen sind mit ;;
kommentiert. Entferne die Kommentare, indem du die doppelten Semikolons entfernst, und nimm dann die Änderungen vor, die du brauchst.
Wir werden die Shell so konfigurieren, dass sie sich automatisch mit den Superuser-Anmeldedaten anmeldet. Ersetze [username]
und [password]
durch die im vorherigen Schritt erstellten Anmeldedaten.
.... [authentication] ;; If Cassandra has auth enabled, fill out these options username = [username] password = [password] ....
Bearbeite alle anderen Einstellungen, die du ändern möchtest. Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Aktualisiere die Berechtigungen für die Datei cqlshrc
. Dadurch wird verhindert, dass andere Benutzergruppen auf die Datei zugreifen können.
$ chmod 600 ~/.cassandra/cqlshrc
Melde dich mit deinen neuen Änderungen in der Cassandra-Shell an.
$ cqlsh Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. navjot@cqlsh>
Hinweis: Die Methode, den Benutzernamen und das Passwort in der Datei cqlshrc
zu speichern, wird ab der Version 4.1 von Cassandra veraltet sein. Um mehr darüber zu erfahren, kannst du den Eintrag auf der Cassandra-Website lesen.
4.3 – Umbenennen des Clusters
Zum Schluss benennen wir den Cluster von Test Cluster in einen Namen deiner Wahl um.
Logge dich in das Terminal cqlsh
ein.
$ cqlsh
Ersetze im unten stehenden Befehl [clustername]
durch deinen neuen Clusternamen.
username@cqlsh> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
Beende die Shell.
username@cqlsh> exit
Öffne die Datei /etc/cassandra/cassandra.yaml
zum Bearbeiten.
$ sudo nano /etc/cassandra/cassandra.yaml
Ersetze den Wert der Variable cluster_name
durch den Namen deiner Wahl.
... # The name of the cluster. This is mainly used to prevent machines in # one logical cluster from joining another. cluster_name: '[new_name]' ...
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Lösche den Cassandra-System-Cache.
$ nodetool flush system
Starte Cassandra neu.
$ sudo systemctl restart cassandra
Melde dich in der Shell an, um den neuen Namen zu sehen.
$ cqlsh Connected to howtoforge at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. navjot@cqlsh>
Fazit
In diesem Lernprogramm hast du gelernt, wie du Apache Cassandra auf einem AlmaLinux- oder Rocky-Linux-Server installierst. Außerdem hast du gelernt, wie du die Benutzerauthentifizierung hinzufügst und einige grundlegende Konfigurationen vornimmst. Wenn du mehr wissen willst, besuche die offizielle Cassandra-Dokumentation. Wenn du Fragen hast, schreibe sie unten in die Kommentare.