Guida alle tecnologie

Installare Apache Cassandra su CentOS 8

5 min read Database NoSQL Aggiornato 19 Oct 2025
Installare Apache Cassandra su CentOS 8
Installare Apache Cassandra su CentOS 8

Cluster Apache Cassandra: nodi e replica

Requisiti

  • Un server con CentOS 8 e almeno 2 GB di RAM.
  • Accesso root o un account con privilegi sudo configurato.

Importante: Cassandra richiede privilegi di sistema per creare utenti e directory di dati; eseguire i comandi come root o con sudo.

Prima di iniziare

Aggiorna il sistema alla versione stabile più recente prima di procedere:

dnf update

Dopo l’aggiornamento, riavvia il server per applicare i pacchetti aggiornati.

Installare Java e Python 2

Apache Cassandra richiede OpenJDK 8 e Python 2. Installa i pacchetti con:

dnf install java-1.8.0-openjdk-devel python2

Verifica la versione di Java:

java -version

Esempio di output atteso:

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

Nota: OpenJDK 8 è la versione compatibile con Cassandra 2.x/3.x. Se usi una release più recente di Cassandra, verifica la compatibilità della JVM.

Aggiungere il repository di Cassandra

Cassandra non è incluso nei repo standard di CentOS 8. Crea il file del repository:

nano /etc/yum.repos.d/cassandra.repo

Aggiungi queste righe:

[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

Salva e chiudi il file.

Quindi installa il pacchetto indicato nel tutorial originale:

dnf install dsc20

Nota: il pacchetto installa i componenti DataStax Community necessari. Se utilizzi repository o pacchetti diversi, verifica la documentazione del fornitore.

Creare l’unità systemd per Cassandra

Il pacchetto può non creare automaticamente un servizio systemd; crea un file di servizio per gestire Cassandra:

nano /etc/systemd/system/cassandra.service

Contenuto consigliato del file (versione corretta per systemd):

[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, ricarica systemd e avvia il servizio:

systemctl daemon-reload
systemctl start cassandra
systemctl enable cassandra

Verifica lo stato:

systemctl status cassandra

Esempio di output (ridotto):

? cassandra.service - Apache
   Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-12-07 01:25:26 EST; 1min 51s ago
 Main PID: 1888 (java)
    Tasks: 53 (limit: 25044)
   Memory: 272.7M
   CGroup: /system.slice/cassandra.service
           ??1888 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:Threa>

Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,054 Writing Memtable-local@1642973315(10104/101040 serialized/live bytes, 259 ops)
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,118 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-4-Data.db >
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,322 Starting listening for CQL clients on localhost/127.0.0.1:9042...
Dec 07 01:25:29 centos8 cassandra[1888]:  INFO 01:25:29,376 Using TFramedTransport with a max frame size of 15728640 bytes.

Verificare l’installazione

Controlla lo stato del nodo Cassandra con nodetool:

nodetool status

Esempio di output atteso:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  46.11 KB   256     100.0%            2a680007-8c30-4bde-9a3f-9fa212b96d11  rack1

Accedi alla shell CQL con:

cqlsh

Dovresti vedere qualcosa di simile:

Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>

Configurare il nome del cluster

Per cambiare il nome del cluster da “Test Cluster” a un nome personalizzato:

  1. Accedi a cqlsh:
cqlsh
  1. Aggiorna il nome del cluster nel system.local:
cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
  1. Esci dalla shell:
cqlsh> exit;
  1. Modifica il file di configurazione principale di Cassandra (per CentOS 8 la posizione indicata è quella del pacchetto):
nano /etc/cassandra/default.conf/cassandra.yaml

Cambia la riga:

cluster_name: 'HowtoForge Cluster'
  1. Svuota la cache del sistema e riavvia il servizio:
nodetool flush system
systemctl restart cassandra
  1. Riapri cqlsh per verificare il nuovo nome:
cqlsh

Dovresti vedere “Connected to HowtoForge Cluster at localhost:9160.” come conferma.

Configurazioni comuni e porte

  • Porta CQL predefinita: 9042 (client CQL)
  • Porta Thrift storica: 9160
  • Directory dati tipica: /var/lib/cassandra
  • Directory log tipica: /var/log/cassandra

Nota: il file cassandra.yaml contiene impostazioni chiave (listen_address, rpc_address, seeds, endpoint_snitch, data_file_directories). Modificale con cautela e riavvia il servizio dopo ogni cambiamento.

Controlli e test di accettazione (Criteri di verifica)

  • Il servizio systemd è attivo: systemctl status cassandra deve risultare active (running).
  • nodetool status deve mostrare lo stato UP e lo 0% di ownership non deve essere fuori soglia.
  • cqlsh si connette a 127.0.0.1:9042 o 9160 a seconda della configurazione.
  • I log in /var/log/cassandra non mostrano errori critici all’avvio.

Sicurezza e note GDPR

  • Abilitare autenticazione e autorizzazione (internally: PasswordAuthenticator e PermissionsAuthorizer) se il nodo è esposto in rete.
  • Limitare l’accesso alle porte 9042/9160 tramite firewall (firewalld/iptables): aprire le porte solo ai client e ai nodi del cluster.
  • Crittografia in transito: configurare SSL/TLS per CQL e i servizi inter-nodo se i dati sensibili transitano su reti non fidate.
  • GDPR: se memorizzi dati personali, definisci retention, pseudonimizzazione e procedure di cancellazione; Cassandra replica i dati e la cancellazione eventuale deve propagarsi su tutti i nodi.

Quando non usare Cassandra (controesempi)

  • Non usare Cassandra per carichi fortemente transazionali con molte join relazionali e vincoli ACID; un RDBMS è più adatto.
  • Non è l’ideale per dataset piccoli con bassa scala dove la complessità di gestione non è giustificata.

Alternative e approcci diversi

  • RDBMS: PostgreSQL o MySQL per dati relazionali e transazioni ACID.
  • Altri NoSQL: MongoDB per document store, ScyllaDB come alternativa compatibile con Cassandra con latenza ridotta.
  • Soluzioni gestite: usare servizi cloud (es. Amazon Keyspaces, Azure Managed Cassandra) per ridurre l’overhead operativo.

Checklist di deployment (ruoli)

Amministratore di sistema:

  • Aggiornare CentOS e installare dipendenze (Java, Python)
  • Creare repository e installare pacchetto
  • Creare unità systemd e abilitare il servizio

DevOps/DBA:

  • Verificare nodetool status e replica
  • Configurare seeds, listen_address, rpc_address
  • Definire politiche di backup e retention

Sicurezza:

  • Configurare autenticazione/autorizzazione
  • Abilitare TLS inter-nodo e client-server
  • Configurare firewall e monitoraggio

Runbook di rollback rapido (esempio)

  1. Se un nodo fallisce dopo modifiche di configurazione:
    • systemctl stop cassandra
    • ripristinare il file cassandra.yaml dalla copia di backup
    • systemctl start cassandra
  2. Se il nodo non rientra:
    • rimuoverlo dal cluster con nodetool removenode (solo se necessario)
    • ripristinare i dati da snapshot

Esempio decision flowchart per scegliere Cassandra

flowchart TD
  A[Hai bisogno di alta disponibilità e scalabilità orizzontale?] -->|Sì| B[Cassandra]
  A -->|No| C[RDBMS]
  B --> D{I dati richiedono molte join relazionali?}
  D -->|Sì| C
  D -->|No| E[Adotta Cassandra e progetta schema denormalizzato]

Piccolo glossario (1 riga ciascuno)

  • Nodo: singola istanza di Cassandra in esecuzione.
  • Cluster: insieme di nodi Cassandra che collaborano.
  • Seed: nodo usato per l’avvio e discovery del cluster.
  • Replication factor: numero di copie dei dati su nodi diversi.
  • CQL: Cassandra Query Language, linguaggio client simile a SQL.

Conclusione

Hai installato e configurato Apache Cassandra su CentOS 8. Ora puoi:

  • Verificare lo stato con nodetool e cqlsh.
  • Personalizzare cassandra.yaml per ambiente di produzione.
  • Pianificare backup, monitoraggio e sicurezza.

Se desideri, posso aiutarti a: creare uno schema di example keyspace/table, definire una strategia di replica per più datacenter o generare script di backup.

Domande frequenti

Come verifico rapidamente che Cassandra ascolti sulla porta 9042?

Usa netstat o ss: ss -ltnp | grep 9042 oppure prova a connetterti con cqlsh localhost 9042.

Posso usare una versione più recente di Java?

Dipende dalla versione di Cassandra. Alcune release moderne supportano Java 11+, ma con versioni legacy (2.x/3.x) è consigliato OpenJDK 8. Verifica la documentazione della versione di Cassandra che stai installando.

Autore
Redazione

Materiali simili

Posizionare il router Wi-Fi per la migliore copertura
Rete Wi-Fi

Posizionare il router Wi-Fi per la migliore copertura

Salvare il parcheggio in Google Maps
Guide.

Salvare il parcheggio in Google Maps

Risolvere Prime Video che non funziona su iPhone
Tecnologia

Risolvere Prime Video che non funziona su iPhone

Arbitraggio crypto: bot, rischi e strategie
Crypto

Arbitraggio crypto: bot, rischi e strategie

Come diventare influencer su Instagram UK
Social Media

Come diventare influencer su Instagram UK

Finestre flottanti Android Nougat: guida rapida
Android

Finestre flottanti Android Nougat: guida rapida