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.
[email protected]>

Erstelle einen neuen Superuser. Ersetze [username] und [yourpassword] durch deine Anmeldedaten.

[email protected]> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;

Melde dich von der Shell ab.

[email protected]> exit

Melde dich wieder mit dem neuen Superuser-Konto an.

$ cqlsh -u username -p yourpassword

Entferne die erweiterten Rechte des Standardkontos cassandra.

[email protected]> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
[email protected]> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;

Erteile dem Superuser-Konto alle Berechtigungen.

[email protected]> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';

Melde dich von der Shell ab.

[email protected]> 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.
[email protected]>

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.

[email protected]> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';

Beende die Shell.

[email protected]> 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.
[email protected]>

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.

Das könnte dich auch interessieren …