Apache Cassandra: Tecnologia NoSQL de alta disponibilidade

7 Comentários

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.

Partilhar:
Tags:

Comentários

7

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Joao
    Joao

    Bom tutorial, que venha o próximo!

  2. Avatar de Luís
    Luís

    Posso fazer isto com um raspberry Pi 3 ?

  3. Avatar de Amilcar Alho
    Amilcar Alho

    Muito bom!
    Parabéns ao Filipe e ao Pedro! 😉

  4. Avatar de Miguel
    Miguel

    Super Upvote +1 !

  5. Avatar de Pedro Oliveira
    Pedro Oliveira

    “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 🙂