Apache Cassandra: Tecnologia NoSQL de alta disponibilidade
O Apache Cassandra é um Sistema de gestão de bases de dados NoSQL desenvolvido para garantir rápida escalabilidade e alta disponibilidade dos dados. Hoje ensinamos como devem instalar e configurar o Apache Cassandra em duas máquinas.
O Apache Cassandra foi criado inicialmente pelo Facebook, como open source, em 2008. Atualmente o projeto é baseado na tecnologia emergente NoSQL e pertence à Fundação Apache.
Principais características do Apache Cassandra
- É descentralizado: não existe um ponto de falha central, todos os nodes têm as mesmas funcionalidades;
- Tolerância a falhas: os dados são replicados por vários nodes, suporta também replicação por múltiplos datacenters;
- Escalabilidade: adicionar novos nodes ao cluster é rápido sem colocar em causa a performance do sistema, existem sistemas de produção Cassandra com milhares de nodes;
Tutorial para a implementação de um cluster Cassandra com dois nodes
Cenário – Duas Máquina Virtuais com Ubuntu 14.04 no mesmo segmento de rede.
- Node1 : 172.16.10.119/24
- Node2: 172.16.10.120/24
A implementação é igual para os dois nós, sendo diferente apenas nos ficheiros de configuração do Cassandra de cada um. Para instalar o Apache Cassandra devem seguir os seguintes passos:
Passo 1 - Adicionar o repositório do Java e atualizar os repositórios do sistema
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get update |
Passo 2 - Instalar o Java 8
sudo apt-get install oracle-java8-set-default |
Passo 3 - Adicionar o repositório do Cassandra 3.6 e respetiva chave
echo "deb http://www.apache.org/dist/cassandra/debian 36x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add – sudo apt-get update |
Caso encontrem este erro:
GPG error: http://www.apache.org 36x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
Adicionem a seguinte chave pública e façam novamente update aos repositórios
sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA sudo apt-get update |
Passo4 - Instalar o Apache Cassandra
sudo apt-get install cassandra |
Após a instalação o Cassandra já deverá estar em execução no sistema. Pode-se verificar através do seguinte comando:
sudo service cassandra status |
Apagar os “datasets” default de forma a evitar potenciais erros depois da configuração inicial
sudo rm -rf /var/lib/cassandra/data/system/* |
Configurar os nós do cluster: os ficheiros de configuração encontram-se no diretório /etc/cassandra, podem editar o ficheiro cassandra.yaml com um editor de texto ao vosso critério
sudo nano /etc/cassandra/cassandra.yaml |
Vamos então alterar os seguintes campos:
seeds: Contém os endereços IP dos nós do nosso cluster;
listen_address: Endereço IP que os outros nodes vão usar para se ligar a este nó;
rpc_address: Endereço IP para se ligarem ao Cassandra Shell através de outro nó;
endpoint_snitch: É usado para localizar os nodes e tratar dos pedidos de encaminhamento entre nodes, para uma implementação só de um cluster o default SimpleSnitch é suficiente mas o recomendado para produção é o GossipingPropertyFileSnitch onde o rack e datacenter estão definidos no ficheiro cassandra-rackdc.properties e propagados para outros nodes via gossip, os outros tipos estão explícitos no ficheiro de configuração e podem ser utilizados consoante o cenário em questão;
auto_bootstrap: Não está presente na configuração por default mas irá ser adicionado manualmente no fim da configuração para false que é o recomendado para novos clusters sem dados;
Logo a configuração para esta implementação será a seguinte:
Nó 1
-seeds: “172.16.10.119,172.16.10.120”
listen_address: 172.16.10.119
rpc_address: 172.16.10.119
endpoint_snitch: GossipingPropertyFileSnitch
auto_bootstrap: false
Nó 2
-seeds: “172.16.10.119,172.16.10.120”
listen_address: 172.16.10.120
rpc_address: 172.16.10.120
endpoint_snitch: GossipingPropertyFileSnitch
auto_bootstrap: false
Após as configurações estarem concluídas, vamos testar se o cluster já está a funcionar como previsto:
sudo service cassandra start |
Podem verificar o estado do serviço com os nós usando o comando: sudo nodetool status
Se já conseguem ver os dois nodes no cluster, a configuração está concluída e estão prontos a começar a construir a vossas bases de dados no Cassandra Shell (CQLSH).
Num próximo tutorial vamos ensinar a usar o Cassandra, criando uma estrutura de dados. Estejam atentos.
Este artigo tem mais de um ano
+1
Bom tutorial, que venha o próximo!
Posso fazer isto com um raspberry Pi 3 ?
Muito bom!
Parabéns ao Filipe e ao Pedro! 😉
Super Upvote +1 !
“sudo service cassandra status”
Considerem substituir isto por uma versão que use systemd, o sysvinit já não é usado na larga maioria das distros, incluindo RHEL e Debian (os dois grandes suspeitos para correrem clusters de cassandra em produção).
Fora esse reparo, está um guia básico de Cassandra engraçado. Seria interessante explorar tópicos mais avançados de gestão do cluster, como gestão de deletes/tombstones, node repairs, e mesmo fazer o contraste entre o modelo relacional e nosql. Mas vou esperar pelos próximos capítulos 🙂
boa