So installierst du Apache Cassandra auf AlmaLinux / Rocky Linux 8

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 AlmaLinux und Rocky Linux 8 OS installiert. Die Befehle für beide Betriebssysteme sind identisch, sofern nicht anders angegeben.

Voraussetzungen

  • Ein Server mit AlmaLinux oder Rocky Linux und mindestens 2 GB RAM.
  • Ein Nicht-Sudo-Benutzer mit Root-Rechten.
  • Alles ist auf dem neuesten Stand.
    $ sudo dnf update
    

Schritt 1 – Java installieren

Apache Cassandra benötigt Java 8, um zu funktionieren. Die neueste Version von Cassandra bietet experimentelle Unterstützung für Java 11, aber für unseren Lehrgang werden wir Java 8 verwenden.

$ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Bestätige die Java-Installation.

$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

Schritt 2 – Apache Cassandra installieren

Der erste Schritt besteht darin, das offizielle Repository von Cassandra hinzuzufügen.

Führe den folgenden Befehl aus, um die Repository-Datei /etc/yum.repos.d/cassandra.repo zu erstellen und gib die Details ein.

$ sudo tee  /etc/yum.repos.d/cassandra.repo <<EOF
> [cassandra]
> name=Apache Cassandra
> baseurl=https://www.apache.org/dist/cassandra/redhat/40x/
> gpgcheck=1
> repo_gpgcheck=1
> gpgkey=https://www.apache.org/dist/cassandra/KEYS
> EOF

Jetzt, wo die Repository-Datei erstellt ist, installierst du Cassandra.

$ sudo dnf install cassandra -y

Schritt 3 – Cqlsh installieren

Wir werden das Tool CQL Shell(cqlsh) verwenden, um mit Cassandra zu interagieren. Das Tool ist mit Python 2.7 oder Python 3.6+ kompatibel. Für unseren Lehrgang werden wir Python 3.8 verwenden. Installiere Python 3.8.

$ sudo dnf install python38

Lege Python 3.8 als Standard-Python-Version fest.

$ sudo update-alternatives --config python
There are 3 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python3
   3           /usr/bin/python3.8

Enter to keep the current selection[+], or type selection number: 3

Es werden dir mehrere Optionen angezeigt. Wir wählen die Nummer 3, um Python 3.8 in unserem Fall als Standardversion festzulegen.

Bestätige die Python-Installation.

$ python --version
Python 3.8.8

Nachdem du das Dienstprogramm update-alternatives verwendet hast, musst du den Befehl python3 nicht mehr verwenden.

Installiere cqlsh mit dem Python-Paketmanager pip.

$ pip3 install --user cqlsh

Bestätige die Installation von cqlsh.

$ cqlsh --version
cqlsh 6.0.0

Schritt 4 – Erstelle eine Systemd Unit-Datei für Cassandra

Erstelle und öffne die /etc/systemd/system/cassandra.service zum Bearbeiten.

$ sudo nano /etc/systemd/system/cassandra.service

Füge den folgenden Code in die Datei ein.

[Unit]
Description=Apache Cassandra
After=network.target

[Service]
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always

[Install]
WantedBy=multi-user.target

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Lade den Service-Daemon neu.

$ sudo systemctl daemon-reload

Aktiviere und starte den Cassandra-Dienst.

$ sudo systemctl enable cassandra --now

Überprüfe den Status des Dienstes.

$ sudo systemctl status cassandra
? cassandra.service - Apache Cassandra
   Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-30 11:07:43 UTC; 12s ago
 Main PID: 4679 (java)
    Tasks: 48 (limit: 23696)
   Memory: 1.3G
   CGroup: /system.slice/cassandra.service
           ??4679 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256>

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.09 KiB  16      100.0%            2fe7ccae-2af9-4841-9bff-bffa29f10dc5  rack1

Schritt 5 – 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/conf/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.

5.1 Aktivieren der Benutzerauthentifizierung

Um die Benutzerauthentifizierung zu aktivieren, musst du zunächst ein Backup der Datei /etc/cassandra/conf/cassandra.yaml erstellen.

$ sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup

Öffne die Datei cassandra.yaml, um sie zu bearbeiten.

$ sudo nano /etc/cassandra/conf/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

5.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

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 ab.

cassandra@cqlsh> exit

Melde dich mit dem neuen Superuser-Konto wieder 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 ab.

username@cqlsh> exit

5.2 – Die Konfigurationsdatei der Konsole bearbeiten

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 das Argument --cqlshrc /customdirectory an das Tool cqlsh übergeben, während es läuft.

Unter /etc/cassandra/conf/cqlshrc.sample findest du eine Beispieldatei, die alle Einstellungen enthält, die du für die Cassandra Shell konfigurieren kannst.

Kopiere die Beispieldatei und benenne sie in das Verzeichnis ~/.cassandra um.

$ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc

Aktualisiere die Datei cqlshrc mit den erforderlichen Berechtigungen.

$ sudo chmod 600 ~/.cassandra/cqlshrc
$ sudo chown $USER:$USER ~/.cassandra/cqlshrc

Öffne die Datei zur Bearbeitung.

$ nano ~/.cassandra/cqlshrc

Wir werden die Shell so konfigurieren, dass sie sich automatisch mit den Superuser-Anmeldedaten anmeldet. Suche den folgenden Abschnitt und fülle ihn mit deinem Benutzernamen und Passwort aus.

....

[authentication]
;; If Cassandra has auth enabled, fill out these options
username = [superuser]
password = [password]

....

Bearbeite alle anderen Einstellungen, die du ändern möchtest. Einige der Einstellungen sind mit ;; kommentiert. Hebe die Kommentare auf, indem du die doppelten Semikolons entfernst, und nimm dann die Änderung vor.

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

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.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
username@cqlsh>

5.3 – Den Cluster umbenennen

Zum Schluss benennen wir den Cluster von Test Cluster in den von dir gewählten Namen um.

Melde dich im Terminal cqlsh an.

$ 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/conf/cassandra.yaml zum Bearbeiten.

$ sudo nano /etc/cassandra/conf/cassandra.yaml

Ersetze den Wert der Variable cluster_name durch den von dir gewählten Namen.

...

# 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 Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
username@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.

Das könnte dich auch interessieren …