Apache Cassandra installeren op AlmaLinux / Rocky Linux 8

Apache Cassandra is een open-source NoSQL gedistribueerd databasemanagementsysteem. Cassandra kan horizontaal geschaald worden door meer nodes toe te voegen waarover gegevens automatisch gerepliceerd worden. Knooppunten kunnen zonder downtime worden toegevoegd of verwijderd. De knooppunten kunnen logisch georganiseerd worden als een cluster of een ring en over meerdere datacentra worden opgezet om de snelheid en betrouwbaarheid voor krachtige toepassingen te verbeteren.

In deze handleiding leren we hoe je Apache Cassandra installeert op AlmaLinux en Rocky Linux 8 OS. De commando’s voor beide besturingssystemen zullen identiek zijn, tenzij anders vermeld.

Vereisten

  • Een server met AlmaLinux of Rocky Linux met minimaal 2 GB RAM.

  • Een niet-sudo gebruiker met root rechten.

  • Alles is bijgewerkt.

    $ sudo dnf update
    

Stap 1 – Installeer Java

Apache Cassandra heeft Java 8 nodig om te functioneren. De nieuwste versie van Cassandra bevat experimentele ondersteuning voor Java 11, maar voor onze handleiding houden we het bij het gebruik van Java 8.

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

Bevestig de Java installatie.

$ 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)

Stap 2 – Installeer Apache Cassandra

De eerste stap is het toevoegen van de officiƫle repository van Cassandra.

Voer het volgende commando uit om het repository bestand /etc/yum.repos.d/cassandra.repo aan te maken en voer de gegevens in.

$ 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

Nu het repo bestand is aangemaakt installeer je, Cassandra.

$ sudo dnf install cassandra -y

Stap 3 – Installeer Cqlsh

We zullen het CQL Shell(cqlsh) gereedschap gebruiken om met Cassandra te interageren. Het gereedschap is compatibel met Python 2.7 of Python 3.6+. Voor onze tutorial zullen we Python 3.8 gebruiken. Installeer Python 3.8.

$ sudo dnf install python38

Stel Python 3.8 in als de standaard Python versie.

$ 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

Je krijgt meerdere opties te zien. We kiezen nummer 3 om in ons geval Python 3.8 als standaard versie in te stellen.

Bevestig de Python installatie.

$ python --version
Python 3.8.8

Nadat je het update-alternatives hulpprogramma gebruikt hebt, hoef je het python3 commando niet meer te gebruiken.

Installeer cqlsh met pip Python pakket manager.

$ pip3 install --user cqlsh

Bevestig de cqlsh installatie.

$ cqlsh --version
cqlsh 6.0.0

Stap 4 – Maak een Systemd Unit bestand voor Cassandra

Maak en open het /etc/systemd/system/cassandra.service om te bewerken.

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

Plak er de volgende code in.

[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

Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Herlaad de dienstdaemon.

$ sudo systemctl daemon-reload

Schakel de Cassandra dienst in en start hem.

$ sudo systemctl enable cassandra --now

Controleer de status van de dienst.

$ 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>

Je kunt de status ook controleren met het nodetool commando.

$ 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

Stap 5 – Configureer Cassandra

De standaard locatie van configuratiebestanden voor Cassandra is op /etc/cassandra. De standaardlocatie voor de log- en gegevensmappen is /var/log/cassandra en /var/lib/cassandra.

Instellingen op JVM niveau, zoals de heap grootte, kunnen ingesteld worden via het /etc/cassandra/conf/cassandra-env.sh bestand. Je kunt extra JVM command-line argumenten doorgeven aan de variabele JVM_OPTS. De argumenten worden aan Cassandra doorgegeven als die start.

5.1 Schakel gebruikersauthenticatie in

Om gebruikersauthenticatie in te schakelen neem je eerst een backup van het /etc/cassandra/conf/cassandra.yaml bestand.

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

Open het cassandra.yaml bestand om het te bewerken.

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

Zoek de volgende parameters in dit bestand.

authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000

Verander de waarden van de parameters zoals hieronder aangegeven.

. . .

authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
roles_validity_in_ms: 0
permissions_validity_in_ms: 0

. . .

Je kunt andere instellingen naar eigen behoefte instellen. Als ze van commentaar zijn voorzien, maak ze dan oncommentaar.

Als je klaar bent, sla je het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Herstart Cassandra om de gewijzigde instellingen in te schakelen.

$  sudo systemctl restart cassandra

5.1.1 – Voeg een Beheerder Supergebruiker toe

Nu we authenticatie hebben ingeschakeld, moeten we een gebruiker aanmaken. Om dat te doen gebruiken we het Cassandra Command shell hulpprogramma. Log in met de inloggegevens voor de standaard gebruiker cassandra.

$ cqlsh -u cassandra -p cassandra

Maak een nieuwe superuser aan. Vervang [username] en [yourpassword] door je inloggegevens.

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

Log uit.

[email protected]> exit

Log weer in met de nieuwe superuser account.

$ cqlsh -u username -p yourpassword

Verwijder de verhoogde rechten van de standaard cassandra account.

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

Verleen alle rechten aan de superuser account.

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

Log uit.

[email protected]> exit

5.2 – Bewerk het configuratiebestand van de console

Als je de Cassandra Shell wilt aanpassen, kun je dat doen door het cqlshrc bestand te bewerken. De standaard plaats voor het bestand is in de ~/.cassandra directory. Als je het uit een andere directory wilt laden, kun je tijdens het draaien het argument --cqlshrc /customdirectory doorgeven aan het programma cqlsh.

Je vindt een voorbeeldbestand op /etc/cassandra/conf/cqlshrc.sample dat alle instellingen bevat die je kunt instellen met betrekking tot de Cassandra Shell.

Kopieer en hernoem het voorbeeldbestand naar de ~/.cassandra directory.

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

Werk het cqlshrc bestand bij met de vereiste permissies.

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

Open het bestand om het te bewerken.

$ nano ~/.cassandra/cqlshrc

We zullen de shell instellen om automatisch in te loggen met de superuser credentials. Zoek het volgende gedeelte en vul het in met je gebruikersnaam en wachtwoord.

....

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

....

Bewerk alle andere instellingen die je wilt veranderen. Sommige van de instellingen zijn van commentaar voorzien met ;;. Haal ze uit het commentaar door dubbele puntkomma’s weg te halen en breng dan de verandering aan.

Als je klaar bent, sla je het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Log in op de Cassandra shell met je nieuwe veranderingen.

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

5.3 – Hernoem de cluster

Tenslotte hernoemen we de naam van de cluster van Test Cluster naar de door jou gekozen naam.

Meld je aan in de cqlsh terminal.

$ cqlsh

Vervang de [clustername] door je nieuwe clusternaam in het onderstaande commando.

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

Sluit de shell af

[email protected]> exit

Open het bestand /etc/cassandra/conf/cassandra.yaml om het te bewerken.

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

Vervang de waarde van de variabele cluster_name door de naam van je keuze.

...

# The name of the cluster. This is mainly used to prevent machines in
# one logical cluster from joining another.
cluster_name: '[new_name]'

...

Sla het bestand op als je klaar bent door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Wis de systeemcache van Cassandra.

$  nodetool flush system

Start Cassandra opnieuw op.

$ sudo systemctl restart cassandra

Log in op de shell om de nieuwe naam te zien.

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

Conclusie

In deze handleiding heb je geleerd hoe je Apache Cassandra op een AlmaLinux of Rocky Linux server kunt installeren. Je leerde ook hoe gebruikersauthenticatie toe te voegen en enkele basis configuraties uit te voeren. Om meer te leren kun je de officiƫle Cassandra documentatie bezoeken. Als je vragen hebt, stel ze dan in de commentaar hieronder.