Ricerca nel sito web

Come installare Apache Cassandra su AlmaLinux/Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa Java
  3. Passaggio 2 - Installa Apache Cassandra
  4. Passaggio 3 - Installa Cqlsh
  5. Passaggio 4 - Crea un file Systemd Unit per Cassandra
  6. Passaggio 5 - Configura Cassandra
    1. 5.1 Abilitare l'autenticazione dell'utente
    2. 5.1.1 - Aggiunta di un amministratore con privilegi avanzati
    3. 5.2 - Modifica il file di configurazione della console
    4. 5.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 AlmaLinux e Rocky Linux 8 OS. I comandi per entrambi i sistemi operativi saranno identici se non diversamente specificato.

    Prerequisiti

    • A Server running AlmaLinux or Rocky Linux with a minimum of 2GB of RAM.

    • A non-sudo user with root privileges.

    • Everything is updated.

      $ sudo dnf update
      

    Passaggio 1: installa Java

    Apache Cassandra richiede Java 8 per funzionare. L'ultima versione di Cassandra include il supporto sperimentale per Java 11, ma per il nostro tutorial continueremo a utilizzare Java 8.

    $ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
    

    Conferma l'installazione di Java.

    $ java -version
    openjdk version "1.8.0_312"
    OpenJDK Runtime Environment (build 1.8.0_312-b07)
    OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
    

    Passo 2 - Installa Apache Cassandra

    Il primo passo è aggiungere il repository ufficiale di Cassandra.

    Esegui il seguente comando per creare il file repository /etc/yum.repos.d/cassandra.repo e inserisci i dettagli.

    $ sudo tee  /etc/yum.repos.d/cassandra.repo <<EOF
    > [cassandra]
    > name=Apache Cassandra
    > baseurl=https://www.apache.org/dist/cassandra/redhat/40x/
    > gpgcheck=1
    > repo_gpgcheck=1
    > gpgkey=https://www.apache.org/dist/cassandra/KEYS
    > EOF
    

    Ora che il file repository è stato creato installa, Cassandra.

    $ sudo dnf install cassandra -y
    

    Passo 3 - Installa Cqlsh

    Useremo lo strumento CQL Shell (cqlsh) per interagire con Cassandra. Lo strumento è compatibile con Python 2.7 o Python 3.6+. Per il nostro tutorial, useremo Python 3.8. Installa Python 3.8.

    $ sudo dnf install python38
    

    Imposta Python 3.8 come versione predefinita di Python.

    $ sudo update-alternatives --config python
    There are 3 programs which provide 'python'.
    
      Selection    Command
    -----------------------------------------------
    *+ 1           /usr/libexec/no-python
       2           /usr/bin/python3
       3           /usr/bin/python3.8
    
    Enter to keep the current selection[+], or type selection number: 3
    

    Ti verranno presentate più opzioni. Sceglieremo il numero 3 per impostare Python 3.8 come versione predefinita nel nostro caso.

    Conferma l'installazione di Python.

    $ python --version
    Python 3.8.8
    

    Dopo aver utilizzato l'utilità update-alternatives, non è necessario utilizzare il comando python3.

    Installa cqlsh usando il gestore di pacchetti pip Python.

    $ pip3 install --user cqlsh
    

    Conferma l'installazione di cqlsh.

    $ cqlsh --version
    cqlsh 6.0.0
    

    Passaggio 4: creare un file Systemd Unit per Cassandra

    Crea e apri /etc/systemd/system/cassandra.service per la modifica.

    $ sudo nano /etc/systemd/system/cassandra.service
    

    Incolla il seguente codice al suo interno.

    [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
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Ricarica il demone del servizio.

    $ sudo systemctl daemon-reload
    

    Abilita e avvia il servizio Cassandra.

    $ sudo systemctl enable cassandra --now
    

    Controlla lo stato del servizio.

    $ sudo systemctl status cassandra
    ? cassandra.service - Apache Cassandra
       Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2021-12-30 11:07:43 UTC; 12s ago
     Main PID: 4679 (java)
        Tasks: 48 (limit: 23696)
       Memory: 1.3G
       CGroup: /system.slice/cassandra.service
               ??4679 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256>
    

    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.09 KiB  16      100.0%            2fe7ccae-2af9-4841-9bff-bffa29f10dc5  rack1
    

    Passaggio 5: 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/conf/cassandra-env.sh. Puoi passare ulteriori argomenti della riga di comando JVM alla variabile JVM_OPTS. Gli argomenti vengono passati a Cassandra all'avvio.

    5.1 Abilitare l'autenticazione dell'utente

    Per abilitare l'autenticazione dell'utente, prima esegui un backup del file /etc/cassandra/conf/cassandra.yaml.

    $ sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup
    

    Apri il file cassandra.yaml per la modifica.

    $ sudo nano /etc/cassandra/conf/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
    

    5.1.1 - Aggiunta di un Superutente amministratore

    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
    

    Crea un nuovo superutente. Sostituisci [username] e [yourpassword] con le tue credenziali.

    > CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
    

    Disconnettersi.

    > 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]';
    

    Disconnettersi.

    > exit
    

    5.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.

    Puoi trovare un file di esempio in /etc/cassandra/conf/cqlshrc.sample contenente tutte le impostazioni che puoi configurare riguardo a Cassandra Shell.

    Copia e rinomina il file di esempio nella directory ~/.cassandra.

    $ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc
    

    Aggiorna il file cqlshrc con le autorizzazioni richieste.

    $ sudo chmod 600 ~/.cassandra/cqlshrc
    $ sudo chown $USER:$USER ~/.cassandra/cqlshrc
    

    Apri il file per la modifica.

    $ nano ~/.cassandra/cqlshrc
    

    Configureremo la shell per accedere automaticamente con le credenziali di superutente. Trova la sezione seguente e compilala con il tuo nome utente e password.

    ....
    
    [authentication]
    ;; If Cassandra has auth enabled, fill out these options
    username = [superuser]
    password = [password]
    
    ....
    

    Modifica qualsiasi altra impostazione che desideri modificare. Alcune delle impostazioni sono commentate usando ;;. Decommentali rimuovendo il doppio punto e virgola e quindi apporta la modifica.

    Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    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.1 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    >
    

    5.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/conf/cassandra.yaml per la modifica.

    $ sudo nano /etc/cassandra/conf/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 Cluster at 127.0.0.1:9042
    [cqlsh 6.0.0 | Cassandra 4.0.1 | 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.