Come installare il database Apache Cassandra NoSQL su un cluster Ubuntu 22.04 a nodo singolo
Questo tutorial esiste per queste versioni del sistema operativo
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 16.04 (Xenial Xerus)
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa Java
- Passaggio 2 - Installa Apache Cassandra
- Passaggio 3: controlla il servizio Cassandra
- Passaggio 4 - Configura Cassandra
- 4.1 Abilitare l'autenticazione utente
- 4.1.1 - Aggiunta di un amministratore con privilegi avanzati
- 4.2 - Modifica il file di configurazione della console
- 4.3 - Rinomina il cluster
Apache Cassandra è un sistema di gestione di database distribuiti NoSQL open source. Cassandra può essere scalata orizzontalmente aggiungendo più nodi attraverso i quali i dati vengono replicati automaticamente. I nodi possono essere aggiunti o rimossi senza tempi di inattività. I nodi possono essere organizzati logicamente come un cluster o un anello e configurati su più data center per migliorare la velocità e l'affidabilità delle applicazioni ad alte prestazioni.
In questo tutorial impareremo come installare Apache Cassandra su un cluster Ubuntu 22.04 a nodo singolo.
Prerequisiti
-
A Server running Ubuntu 22.04 with a minimum of 2GB of RAM.
-
A non-sudo user with root privileges.
-
Everything is updated.
$ sudo apt update && sudo apt upgrade
Passaggio 1: installa Java
Apache Cassandra richiede Java 8 o Java 11 per funzionare. L'ultima versione di Cassandra include il pieno supporto per Java 11, che è quello che useremo.
$ sudo apt install openjdk-11-jdk
Conferma l'installazione di Java.
$ java -version openjdk 11.0.15 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Passo 2 - Installa Apache Cassandra
Il primo passo è aggiungere il repository ufficiale di Cassandra.
Eseguire il seguente comando per aggiungere il repository all'elenco dei repository di sistema.
$ echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
Al momento della stesura di questo tutorial, l'ultima versione disponibile di Cassandra è la 4.0.5. Il comando precedente usa
40x
per rappresentare la serie 4.0 di Cassandra.Aggiungere la chiave del repository all'elenco dei repository attendibili dei sistemi.
$ wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo tee /etc/apt/trusted.gpg.d/cassandra.asc
Aggiorna l'elenco dei repository di sistema.
$ sudo apt update
Installa Cassandra.
$ sudo apt install cassandra
Passaggio 3: controlla il servizio Cassandra
Cassandra crea e avvia automaticamente il demone del servizio. Controlla lo stato del servizio.
$ sudo systemctl status cassandra
Dovresti ottenere il seguente output.
? cassandra.service - LSB: distributed storage system for structured data Loaded: loaded (/etc/init.d/cassandra; generated) Active: active (running) since Mon 2022-07-25 11:40:42 UTC; 12min ago Docs: man:systemd-sysv-generator(8) Tasks: 48 (limit: 2241) Memory: 1.3G CPU: 38.219s CGroup: /system.slice/cassandra.service ??4602 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA -> Jul 25 11:40:42 cassandra systemd[1]: Starting LSB: distributed storage system for structured data... Jul 25 11:40:42 cassandra systemd[1]: Started LSB: distributed storage system for structured data.
Puoi anche verificare lo stato usando il comando
nodetool
.$ 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.08 KiB 16 100.0% 6690243a-950d-4d64-9463-aa722f8064d4 rack1
Passaggio 4: configurare Cassandra
La posizione predefinita dei file di configurazione per Cassandra è
/etc/cassandra
. La posizione predefinita per le directory di log e dati è/var/log/cassandra
e/var/lib/cassandra
.Le impostazioni a livello di JVM come la dimensione dell'heap possono essere impostate tramite il file
/etc/cassandra/cassandra-env.sh
. Puoi passare ulteriori argomenti della riga di comando JVM alla variabileJVM_OPTS
. Gli argomenti vengono passati a Cassandra all'avvio.4.1 Abilitare l'autenticazione dell'utente
Per abilitare l'autenticazione utente, il primo passo è fare un backup del file
/etc/cassandra/cassandra.yaml
.$ sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
Apri il file
cassandra.yaml
per la modifica.$ sudo nano /etc/cassandra/cassandra.yaml
Individuare i seguenti parametri in questo file.
... authenticator: AllowAllAuthenticator ... authorizer: AllowAllAuthorizer ... roles_validity_in_ms: 2000 ... permissions_validity_in_ms: 2000 ...
Modificare i valori dei parametri come indicato di seguito.
... authenticator: org.apache.cassandra.auth.PasswordAuthenticator ... authorizer: org.apache.cassandra.auth.CassandraAuthorizer ... roles_validity_in_ms: 0 ... permissions_validity_in_ms: 0 . . .
È possibile configurare altre impostazioni in base alle proprie esigenze. Se sono commentati, decommentarli.
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia Cassandra per abilitare le impostazioni modificate.
$ sudo systemctl restart cassandra
4.1.1 - Aggiunta di un amministratore con privilegi avanzati
Ora che abbiamo abilitato l'autenticazione, dobbiamo creare un utente. Per fare ciò, utilizzeremo l'utilità della shell Cassandra Command. Accedi con le credenziali dell'utente predefinito
cassandra
.$ cqlsh -u cassandra -p cassandra
Otterrai la seguente shell.
Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. >
Crea un nuovo superutente. Sostituisci
[username]
e[yourpassword]
con le tue credenziali.> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
Esci dalla shell.
> exit
Accedi nuovamente con il nuovo account di superutente.
$ cqlsh -u username -p yourpassword
Rimuovi i permessi elevati dall'account
cassandra
predefinito.> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false; > REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
Concedi tutte le autorizzazioni all'account superutente.
> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
Esci dalla shell.
> exit
4.2 - Modifica il file di configurazione della console
Se vuoi personalizzare Cassandra Shell, puoi farlo modificando il file
cqlshrc
. La posizione predefinita per il file è nella directory~/.cassandra
. Se vuoi caricarlo da una directory diversa, puoi passare l'argomento--cqlshrc /customdirectory
allo strumentocqlsh
durante l'esecuzione. L'installazione predefinita di Cassandra non include il file. Pertanto, dovremo crearlo.Crea il file
cqlshrc
nella directory~/.cassandra
. Non abbiamo bisogno di usaresudo
per eseguire nessuna delle funzioni nella directory~/.cassandra
. Cassandra richiede che i file in questa directory siano di proprietà dell'account locale e non siano accessibili da altri account o gruppi.$ touch ~/.cassandra/cqlshrc
Se la directory
~/.cassandra
non è presente, allora creala usando il seguente comando.$ mkdir ~/.cassandra
Apri il file per la modifica.
$ nano ~/.cassandra/cqlshrc
Il repository Github di Cassandra fornisce un file
cqlshrc
di esempio. Puoi copiare una o tutte le sezioni da lì a seconda delle tue esigenze. Tutte le impostazioni sono commentate usando;;
. Decommentali rimuovendo il doppio punto e virgola e quindi apporta la modifica in base alle tue esigenze.Configureremo la shell per accedere automaticamente con le credenziali di superutente. Sostituisci
[username]
e[password]
con le credenziali create nel passaggio precedente..... [authentication] ;; If Cassandra has auth enabled, fill out these options username = [username] password = [password] ....
Modifica qualsiasi altra impostazione che desideri modificare. Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Aggiorna le autorizzazioni per il file
cqlshrc
. Ciò impedisce a qualsiasi altro gruppo di utenti di accedere al file.$ chmod 600 ~/.cassandra/cqlshrc
Accedi alla shell Cassandra con le tue nuove modifiche.
$ cqlsh Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. >
Nota: il metodo di memorizzazione di nome utente e password nel file
cqlshrc
diventerà deprecato dalla versione 4.1 di Cassandra. Per saperne di più, puoi leggere la voce sul sito di Cassandra.4.3 - Rinominare il Cluster
Infine, rinomineremo il nome del cluster da Test Cluster al nome scelto.
Accedi al terminale
cqlsh
.$ cqlsh
Sostituisci
[clustername]
con il tuo nuovo nome cluster nel comando seguente.> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
Esci dal guscio.
> exit
Apri il file
/etc/cassandra/cassandra.yaml
per la modifica.$ sudo nano /etc/cassandra/cassandra.yaml
Sostituisci il valore della variabile
cluster_name
con il nome che preferisci.... # The name of the cluster. This is mainly used to prevent machines in # one logical cluster from joining another. cluster_name: '[new_name]' ...
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Svuota la cache del sistema Cassandra.
$ nodetool flush system
Riavvia Cassandra.
$ sudo systemctl restart cassandra
Accedi alla shell per vedere il nuovo nome.
$ cqlsh Connected to howtoforge at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. >
Conclusione
In questo tutorial, hai imparato come installare Apache Cassandra su un server AlmaLinux o Rocky Linux. Hai anche imparato come aggiungere l'autenticazione utente ed eseguire alcune configurazioni di base. Per saperne di più, visita la documentazione ufficiale di Cassandra. Se hai domande, pubblicale nei commenti qui sotto.