Como instalar o Apache Cassandra no CentOS 8

Objetivo
Instalar e iniciar um nó Apache Cassandra no CentOS 8 para uso em desenvolvimento ou como nó inicial de um cluster de produção. Termos-chave: Cassandra — banco NoSQL distribuído; cqlsh — shell de consulta CQL; nodetool — utilitário de operação.
Principais variações de busca (SEO)
- instalar Apache Cassandra CentOS 8
- Cassandra CentOS 8 tutorial
- configurar Cassandra no Linux
- instalar dsc20 CentOS
- cqlsh CentOS 8
Requisitos
- Um servidor com CentOS 8 com pelo menos 2 GB de RAM.
- Acesso root ou um usuário com sudo.
- Conectividade de rede para baixar pacotes do repositório DataStax.
Important: 2 GB é o mínimo para testes; para produção recomenda-se ≥ 4–8 GB dependendo da carga e do número de nós.
Antes de começar
Atualize o sistema para a versão mais recente antes de instalar novos pacotes:
dnf update
Depois de atualizar, reinicie o servidor se o kernel ou componentes fundamentais foram atualizados.
Instalar Java e Python2
O Apache Cassandra requer OpenJDK 8 e Python2 para algumas ferramentas. Instale-os com:
dnf install java-1.8.0-openjdk-devel python2
Verifique a versão do Java:
java -version
Saída esperada (exemplo):
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: versões mais recentes do Cassandra podem suportar Java 11; consulte a documentação da versão específica antes de migrar em produção.
Adicionar o repositório do Apache Cassandra (DataStax)
O Cassandra não está no repositório padrão do CentOS 8. Crie o arquivo de repositório:
nano /etc/yum.repos.d/cassandra.repo
Adicione estas linhas:
[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
Salve e feche o arquivo. Em seguida, instale o pacote dsc20:
dnf install dsc20
Nota: o pacote dsc20 é fornecido pela DataStax para instalar uma versão compatível do Cassandra. Verifique a origem do repositório e as assinaturas em ambientes de produção.
Criar unidade systemd para Cassandra
Alguns pacotes não geram automaticamente um serviço systemd funcional. Crie o arquivo:
nano /etc/systemd/system/cassandra.service
Cole o seguinte conteúdo:
[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
Salve e recarregue o daemon systemd:
systemctl daemon-reload
Inicie e habilite o serviço para inicialização automática:
systemctl start cassandra
systemctl enable cassandra
Verifique o status:
systemctl status cassandra
Exemplo de saída (resumida):
? 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 ...
Logs importantes mostram que o CQL está escutando na porta 9042 e o Thrift na 9160 (se habilitado).
Testar a instalação com nodetool
Use o utilitário nodetool para conferir o estado do nó:
nodetool status
Saída esperada (exemplo):
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
Explicação rápida: “UN” significa Up e Normal; “Tokens” indica partições virtuais por nó; “Owns” é a porcentagem efetiva de dados atribuída.
Acessar o CQL shell e alterar o nome do cluster
Para acessar o shell CQL:
cqlsh
Exemplo de conexão:
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>
Para renomear o cluster (exemplo):
cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
cqlsh> exit;
Edite também o arquivo de configuração para persistir o nome do cluster:
nano /etc/cassandra/default.conf/cassandra.yaml
Altere:
cluster_name: 'HowtoForge Cluster'
Sincronize o estado do sistema e reinicie o serviço:
nodetool flush system
systemctl restart cassandra
Ao reconectar com cqlsh, verá o novo nome do cluster.
Configurações comuns a revisar
- /etc/cassandra/default.conf/cassandra.yaml — parâmetros de cluster, listen_address, rpc_address, seeds, data_file_directories.
- JVM options — memória heap e GC em /etc/cassandra/jvm.options ou similar.
- Usuário e permissões para diretórios de dados (/var/lib/cassandra) e logs (/var/log/cassandra).
Important: altere listen_address e seeds antes de adicionar nós adicionais ao cluster.
Checklist rápido antes de colocar em produção
- Incrementar RAM e CPU conforme carga prevista.
- Configurar discos dedicados e IOPS adequados para /var/lib/cassandra.
- Definir políticas de backup e snapshots regulares.
- Ajustar parâmetros de réplica e factor de replicação (replication factor).
- Configurar monitoramento (nodetool, métricas JMX, Prometheus/Grafana).
- Testar failover e substituição de nós sem perda de serviço.
Troubleshooting (problemas comuns e soluções)
- Serviço não inicia: verifique logs em /var/log/cassandra e journalctl -u cassandra.
- Erro de permissão: confirme que o usuário cassandra possui propriedade dos diretórios de dados e PID.
- Portas ocupadas: verifique 9042 (CQL) e 7000/7001 (internode) com ss/netstat.
- Memória insuficiente: ajuste heap no arquivo jvm.options ou aumente a RAM.
Segurança e boas práticas
- Não deixe gpgcheck=0 em produção; importe e habilite chaves GPG confiáveis.
- Restrinja acesso de rede às portas do Cassandra com firewall (somente nós e aplicações autorizadas).
- Habilite autenticação e autorização no cassandra.yaml se o cluster for acessível publicamente.
- Considere criptografia em trânsito (internode_encryption) e em repouso conforme necessidades de conformidade.
Nota: a política exata de segurança depende do ambiente e dos requisitos de conformidade (GDPR, LGPD, etc.).
Papel e responsabilidades (checklist por função)
- Administrador de banco: ajustar replication_factor, compaction, backups.
- Engenheiro de infraestrutura: configurar discos, rede, firewall e monitoramento.
- DevOps: automatizar deploy e upgrades (playbooks Ansible/Terraform).
- Desenvolvedor: modelar dados para Cassandra (desnormalização e consultas por primary key).
Mini-metodologia para adicionar nós ao cluster
- Preparar nó: instalar Java, pacotes e configurar arquivo cassandra.yaml com listen_address e seeds apontando para nós existentes.
- Sincronizar horário (NTP).
- Iniciar Cassandra e verificar com nodetool status.
- Monitorar o rebalanceamento e a propriedade de tokens até que o nó esteja UN.
Resumo
Você instalou o Apache Cassandra no CentOS 8: atualizou o sistema, instalou Java e Python2, adicionou o repositório DataStax, instalou dsc20, criou uma unidade systemd, verificou o serviço com nodetool e renomeou o cluster via cqlsh. Em produção, revise segurança, monitoramento e parâmetros de JVM/IO.
Se tiver dúvidas sobre configuração de cluster multinó, ajustes de heap ou políticas de replicação, pergunte indicando a versão exata do Cassandra e o perfil de carga.