Apache Cassandra NoSQL Database installeren op CentOS 8

Apache Cassandra is een open-source NoSQL databasemanagementsysteem met hoge prestaties dat geen enkel punt van mislukking kent. Apache Cassandra gebruikt een clustermodel in plaats van het tabelmodel dat je in MySQL/PostgreSQL ziet. Cassandra is geschikt voor toepassingen die het zich niet kunnen veroorloven gegevens te verliezen. Gegevens worden automatisch gerepliceerd naar meerdere nodes voor fouttolerantie. Uitgevallen nodes kunnen automatisch vervangen worden zonder downtime.

Apache Cassandra is de beste keuze voor je als je op zoek bent naar schaalbaarheid, hoge beschikbaarheid, en hoge prestaties.

In deze handleiding laten we je zien hoe je Apache Cassandra op CentOS 8 kunt installeren.

Vereisten

  • Een server die CentOS 8 draait met minimaal 2 GB RAM.
  • Een root wachtwoord is ingesteld op je systeem.

Aan de slag

Alvorens te beginnen is het aan te raden je server te updaten naar de laatste stabiele versie. Je kunt je server bijwerken met het volgende commando:

dnf update

Zodra je server bijgewerkt is, herstart je hem om de veranderingen toe te passen.

Installeer Java

Apache Cassandra vereist dat OpenJDK 8 en Python2 op het systeem geïnstalleerd zijn. Je kunt OpenJDK 8 en Python2 installeren met het volgende commando:

dnf install java-1.8.0-openjdk-devel python2

Zodra beide pakketten geïnstalleerd zijn, kun je de Java versie verifiëren met het volgende commando:

java -version

Je zou de volgende uitvoer moeten zien:

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Installeer Apache Cassandra

Apache Cassandra is standaard niet beschikbaar in de CentOS 8 standaard repository. Je zult daar dus een repo voor moeten aanmaken. Je kunt een nieuw repo bestand /etc/yum.repos.d/cassandra.repo aanmaken zoals hieronder:

nano /etc/yum.repos.d/cassandra.repo

Voeg de volgende regels toe:

[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

Bewaar en sluit het bestand en installeer dan de Apache Cassandra met het volgende commando:

dnf install dsc20

Als je klaar bent met de installatie, kun je verder gaan met de volgende stap

Maak een Systemd Eenheidsbestand voor Cassandra

Standaard is het Apache Cassandra pakket niet in staat om een dienstbestand voor zichzelf te genereren. Je zult dus een systemd dienstbestand moeten aanmaken om de Cassandra dienst te beheren. Je kunt het aanmaken met het volgende commando:

nano /etc/systemd/system/cassandra.service

Voeg de volgende regels toe:

[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 en sluit het. Herlaad dan de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de Cassandra dienst en zet hem aan om te starten na herstart van het systeem met het volgende commando:

systemctl start cassandra
systemctl enable cassandra

Je kunt ook de status van de Cassandra dienst controleren met het volgende commando:

systemctl status cassandra

Je zou de volgende uitvoer moeten zien:

? cassandra.service - Apache
   Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-12-07 01:25:26 EST; 1min 51s ago
 Main PID: 1888 (java)
    Tasks: 53 (limit: 25044)
   Memory: 272.7M
   CGroup: /system.slice/cassandra.service
           ??1888 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:Threa>

Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,054 Writing [email protected](10104/101040 serialized/live bytes, 259 ops)
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,118 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-4-Data.db >
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,124 Compacting [SSTableReader(path='/var/lib/cassandra/data/system/local/system-local->
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,169 Node localhost/127.0.0.1 state jump to normal
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,294 Compacted 4 sstables to [/var/lib/cassandra/data/system/local/system-local-jb-5,].>
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,322 Starting listening for CQL clients on localhost/127.0.0.1:9042...
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,376 Using TFramedTransport with a max frame size of 15728640 bytes.
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,378 Binding thrift service to localhost/127.0.0.1:9160
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,391 Using synchronous/threadpool thrift server on localhost : 9160
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,422 Listening for thrift clients...

Test Apache Cassandra installatie

Apache Cassandra is nu geïnstalleerd en draait op je server. Je kunt controleren of het draait of niet met het volgende commando:

nodetool status

Je zou het volgende commando moeten zien:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  46.11 KB   256     100.0%            2a680007-8c30-4bde-9a3f-9fa212b96d11  rack1

Configureer Apache Cassandra

Cassandra is standaard zo ingesteld dat het alleen verbinding van de localhost accepteert.

Je kunt je ook aanmelden bij Cassandra via de Cassandra Query Language. Om CQL shell te openen, voer je het volgende commando uit:

cqlsh

Je zou de volgende uitvoer moeten zien:

Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> 

In de bovenstaande uitvoer zou je moeten zien dat het Cassandra cluster de naam “Test Cluster” heeft. Je kunt deze standaard clusternaam ook veranderen.

Log daarvoor in op CQL shell met het volgende commando:

cqlsh

Voer vervolgens het volgende commando uit om de clusternaam te veranderen in “HowtoForge Cluster”, zoals hieronder te zien is:

cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';

Verlaat vervolgens de shell met het volgende commando:

cqlsh>exit;

Vervolgens moet je ook het configuratiebestand cassandra.yaml bewerken en je nieuwe clusternaam definiëren:

nano /etc/cassandra/default.conf/cassandra.yaml

Verander de volgende regel:

cluster_name: 'HowtoForge Cluster'

Sla het bestand op en sluit het als je klaar bent. Wis dan de systeemcache met het volgende commando:

nodetool flush system

Herstart ten slotte de Apache Cassandra dienst om de nieuwe configuratie toe te passen:

systemctl restart cassandra

Log nu in op CQL shell met het volgende commando:

cqlsh

Je zou moeten zien dat de clusternaam nu veranderd is in “HowtoForge Cluster”:

Connected to HowtoForge Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> 

Conclusie

Gefeliciteerd! Je hebt met succes Apache Cassandra geïnstalleerd en geconfigureerd op CentOS 8. Voel je vrij om me te vragen als je vragen hebt.