Installare Apache Cassandra su CentOS 8

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:
- Accedi a cqlsh:
cqlsh
- Aggiorna il nome del cluster nel system.local:
cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
- Esci dalla shell:
cqlsh> exit;
- 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'
- Svuota la cache del sistema e riavvia il servizio:
nodetool flush system
systemctl restart cassandra
- 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)
- Se un nodo fallisce dopo modifiche di configurazione:
- systemctl stop cassandra
- ripristinare il file cassandra.yaml dalla copia di backup
- systemctl start cassandra
- 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.
Materiali simili

Posizionare il router Wi-Fi per la migliore copertura

Salvare il parcheggio in Google Maps

Risolvere Prime Video che non funziona su iPhone

Arbitraggio crypto: bot, rischi e strategie

Come diventare influencer su Instagram UK
