Introduzione

Apache Cassandra è un database NoSQL gratuito distribuito con licenza open source e ottimizzato per la gestione di grandi quantità di dati. Fornisce scalabilità lineare e alta disponibilità senza compromettere le prestazioni. Apache Cassandra è utilizzato da diverse aziende che dispongono di set di dati di grandi dimensioni e attivi, tra cui Reddit, NetFlix, Instagram e Github.

In questo articolo, spiegheremo come installare Apache Cassandra su Debian 10, Buster.

Prerequisiti

Le istruzioni presuppongono che si sia effettuato l'accesso come root o utente con privilegi sudo.

Se il vostro intento è installare il Apache Cassandra su di un server in remoto continuate a leggere, altrimenti saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Java

Al momento della stesura di questo articolo, l'ultima versione stabile di Apache Cassandra è 3.11 e richiede OpenJDK 8, che non è disponibile nei repository ufficiali Debian 10 Buster.

Abilitiamo il repository AdoptOpenJDK e installiamo java.

Aggiorna l'elenco dei pacchetti e installa le dipendenze necessarie per aggiungere un nuovo repository su HTTPS:

sudo apt update
sudo apt install apt-transport-https ca-certificates wget curl dirmngr gnupg software-properties-common

Importa la chiave GPG del repository e aggiungi il repository APT AdoptOpenJDK al tuo sistema:

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

Installa Java 8 eseguendo questi comandi:

sudo apt update
sudo apt install adoptopenjdk-8-hotspot

Una volta completato, verificalo stampando la versione Java:

java -version

L'output dovrebbe assomigliare a questo:

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

Installare Apache Cassandra

Installeremo Apache Cassandra usando il pacchetto deb dal repository del fornitore. Per fare ciò, è necessario abilitare il repository Apache Cassandra.

Aggiungi il repository Cassandra all'elenco delle fonti di sistema eseguendo il comando seguente, al momento l'ultima versione stabile è la 311:

echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

Importa la chiave pubblica del repository usando il comando curl seguente:

curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -

Il comando sopra dovrebbe rispondere con OK. Ciò significa che la chiave è stata importata correttamente e i pacchetti da questo repository saranno considerati attendibili.

Aggiorna l'indice dei pacchetti e installa il pacchetto Apache Cassandra:

sudo apt update

Se riscontri un messaggio di errore simile al seguente:

GPG error: http://www.apache.org 311x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA

Aggiungi la chiave pubblica di Apache Cassandra in questo modo:

sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA

Quindi aggiornare nuovamente la lista dei pacchetti:

sudo apt update

A questo punto è possibile installare Cassandra:

sudo apt install cassandra

Al termine del processo di installazione, il servizio Cassandra verrà avviato automaticamente, in caso contrario è possibile avviare Cassandra con il seguente comando:

sudo service cassandra start

Per verificare che Cassandra sia in esecuzione, digitare:

nodetool status

Dovresti vedere un messaggio di output simile al seguente:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
UN  127.0.0.1  103.67 KiB  256          100.0%            1d7218c2-6c7f-4287-9695-3d957572cdcf  rack1

Se ricevi un messaggio di errore di connessione, apri il seguente file:

sudo nano /etc/cassandra/cassandra-env.sh

Cerca la seguente riga:

...
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"
...

Decommentala e aggiuingi l'indirizzo IP pubblico del tuo server al posto di <public name>.

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Riavvia Cassandra con il seguente comando:

 sudo service cassandra restart

Per verificare che Cassandra sia in esecuzione, digitare:

nodetool status

Questo è tutto. Apache Cassandra è stato installato con successo.

Configurare Apache Cassandra

I dati di Apache Cassandra sono archiviati nella directory /var/lib/cassandra. I file di configurazione si trovano in /etc/cassandra e le opzioni di avvio di Java possono essere configurate nel file /etc/default/cassandra.

Per impostazione predefinita, Cassandra è in ascolto solo sull'host locale. Se il client che si collega al database è in esecuzione sullo stesso computer, non è necessario modificare l'interfaccia di associazione.

Per interagire con Cassandra tramite la riga di comando, utilizzare lo strumento cqlsh fornito con il pacchetto Cassandra.

cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.5 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>

Per uscire dalla shell di cassandra digitare exit:

exit

Rinominare Apache Cassandra Cluster

Per impostazione predefinita, il cluster Cassandra è denominato "Test Cluster". Se si desidera modificarlo, attenersi alla seguente procedura:

Accedi al terminale Cassandra CQL con cqlsh:

cqlsh

Immettere il comando seguente per modificare il nome del cluster in "Noviello Cluster":

UPDATE system.local SET cluster_name = 'Noviello Cluster' WHERE KEY = 'local';

Al termine, digitare exit per uscire dal terminale:

exit

Adesso è necessario modificare il file di configurazione cassandra.yaml  inserendo il nome del nuovo cluster, quindi aprire il file:

sudo nano /etc/cassandra/cassandra.yaml

Cambia il parametro cluster_name, con il nome desiderato:

cluster_name: 'Noviello Cluster'

Cancella la cache di sistema:

nodetool flush system

Riavviare il servizio Cassandra eseguendo:

sudo systemctl restart cassandra

Oppure con il seguente comando:

 sudo service cassandra restart

Abilitare le funzioni di sicurezza

Abilitare l'autenticazione per l'accesso utente.

Effettua prima un backup del file di configurazione di Cassandra cassandra.yaml:

cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup

Apri il file di configurazione di Cassandra:

sudo nano /etc/cassandra/cassandra.yaml

Abbina le seguenti variabili nel file ai valori mostrati di seguito. Se alcuni dei seguenti valori sono commentati, decommentarli. Le restanti proprietà presenti nel file di configurazione devono essere impostate in base ai requisiti specifici del progetto e al modo in cui si prevede di utilizzare Cassandra. La configurazione predefinita dovrebbe funzionare bene per lo sviluppo.

. . .

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

. . .

Dopo aver modificato il file, riavvia Cassandra:

 sudo service cassandra restart
nodetool status

Aggiungere un Superutente di amministrazione

Attenzione, questa configurazione funziona solo se è stata seguita la configurazione del paragrafo precedente.

Accedi al terminale di comando di Cassandra con le credenziali mostrate di seguito per l'utente predefinito "cassandra":

cqlsh -u cassandra -p cassandra

Crea un nuovo superutente (superuser). Sostituisci  nuovo_utente e TUA_PASSWORD con le informazioni desiderate:

CREATE ROLE nuovo_utente WITH PASSWORD = 'TUA_PASSWORD' AND SUPERUSER = true AND LOGIN = true;

Esci digitando exit:

exit

Accedere nuovamente con il nuovo account superutente utilizzando le nuove credenziali e rimuovere le autorizzazioni elevate dall'account Cassandra:

cqlsh -u nuovo_utente -p TUA_PASSWORD
ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;

Concedi tutte le autorizzazioni al nuovo account superutente. Sostituisci nuovo_utente con il nome dell'utente da te creato:

GRANT ALL PERMISSIONS ON ALL KEYSPACES TO nuovo_utente;

Esci digitando exit:

exit

Conclusione

Ti abbiamo mostrato come installare Apache Cassandra su Debian 10, e facoltativamente, rinominare il cluster predefinito. Per ulteriori informazioni su come iniziare con Cassandra, visitare la pagina della documentazione ufficiale.