Ricerca nel sito web

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

  1. Prerequisiti
  2. Passaggio 1 - Installa Java
  3. Passaggio 2 - Installa Apache Cassandra
  4. Passaggio 3: controlla il servizio Cassandra
  5. Passaggio 4 - Configura Cassandra
    1. 4.1 Abilitare l'autenticazione utente
    2. 4.1.1 - Aggiunta di un amministratore con privilegi avanzati
    3. 4.2 - Modifica il file di configurazione della console
    4. 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 variabile JVM_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 strumento cqlsh 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 usare sudo 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.