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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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.