Replicação no Cassandra

Transcrição

Replicação no Cassandra
Sistemas Distribuídos - 2012\2
Prof. Vagner J. do Sacramento Rodrigues
Cassandra
Replicação
Leandro, Michelle, Renan
Replicação
● Vantagens:
○ maior disponibilidade: os dados permanecem
acessíveis diante de falhas
○ maior segurança: dados redundantes
● Desvantagens:
○ controle de consistência: é preciso manter as
réplicas atualizadas
Definições Básicas
● réplica: cópia de um Row
○ não existe uma réplica principal
● fator de replicação: número de nós que devem
armazenar uma réplica
● estratégia de replicação: maneira com que as
réplicas serão distribuídas entre os nós
● data center: agrupamento lógico de nós em um
cluster com finalidades de replicação
● rack: agrupamento lógico de nós em um data
center
● endpoint: nó passível de receber uma réplica
no processo de replicação
Replicação
A estratégia de replicação é definida na criação
do Keyspace, juntamente com o fator de
replicação.
Replicação
A alteração desses parametros pode ser feita via
cli, porém exige a reparação dos nós
update keyspace Keyspace1 with strategy_options =
{replication_factor:3}
Durante o período de atualização é preciso estar
ciente de que nós podem não responder às
consultas
Estratégias de Replicação
Basicamente fazem o seguinte:
1. O Snitch retorna uma lista com os endpoints
(nós que podem receber uma réplica)
2. Cria um iterador para uma lista formada à
partir dos endpoints retornados e seus
tokens
3. Insere nos endpoints retornados pelo
iterador até que o fator de replicação seja
satisfeito
Duas estratégias fornecidas:
● SimpleStrategy
● NetworkTopologyStrategy
Simple Strategy
● Rack Unaware
● Usado em clusters de um único data center
Funcionamento:
1. O particionador determina a posição da
primeira réplica (primeiro nó que possui
token maior que o token da entrada)
2. As N-1 réplicas são alocadas nos próximos
nós do anel seguindo o sentido horário
(ordem dos tokens)
Simple Strategy
fator de replicação = 3
Simple Strategy (vnodes)
fator de replicação = 3
Network Topology Strategy
● Rack aware
● Usada quando se tem (ou se planeja ter) um
cluster com múltiplos data centers
● Um fator de replicação para cada data
center
CREATE KEYSPACE exemplo
WITH REPLICATION = {
'CLASS' :'NetworkTopologyStrategy',
'dc1': 3, 'dc2':3
};
Network Topology Strategy
É criado um anel virtual para cada data center
A partir de então, em cada data center se faz o
seguinte:
1. A primeira réplica é colocada em um nó
determinado pelo particionador.
2. Se percorre o anel em sentido horário onde
a próxima réplica é inserida em um nó
pertencente a um rack diferente do nó da
réplica anterior. Se não existe tal rack, as
réplicas restantes são colocadas sem a
restrição dos racks
Network Topology Strategy
Network Topology Strategy
Nós devem alternar data centers no anel para
evitar sobrecargas de réplicas em um único nó
Snitch
● Fornece informações para o Cassandra à
respeito dos nós no cluster
● Além da replicação, é usado nas requisições
para roteamento eficiente
● Através dele é possível fazer diversas
consultas:
○ qual o rack de um nó?
○ qual o datacenter de um nó?
○ quais são os nós mais próximos que eu posso
inserir uma réplica?
○ quais os nós de um datacenter?
Snitch
● Defini-se o tipo do snitch no arquivo de
configuração do cassandra
● Todos os nós devem ter a mesma
configuração
SimpleSnitch
● Não leva em conta organização de racks e
data centers
● Retorna sempre uma lista de todos os nós
do anel
public String getRack(InetAddress endpoint){ return "rack1";}
public String getDatacenter(InetAddress endpoint){ return "datacenter1";}
public List<InetAddress> getSortedListByProximity(InetAddress address,
Collection<InetAddress> unsortedAddress)
{
List<InetAddress> preferred = new ArrayList<InetAddress>(unsortedAddress);
sortByProximity(address, preferred);
return preferred;
}
RackInferringSnitch
● Leva em conta racks e data centers
● Infere o rack e data center de um nó à partir
do seu indereço IP
endereço:192.168.80.X
data center:168
rack:80
PropertyFileSnitch
● Leva em conta racks e data centers
● Obtém o rack e data center de um nó à
partir de um arquivo definido pelo usuário
( cassandra-topology.properties)
# Data Center 1
192.168.80.1=DC1:RAC1
192.168.80.2=DC1:RAC2
# Data Center 1
192.168.80.3=DC2:RAC1
192.168.80.4=DC2:RAC2
GossipingPropertyFileSnitch
● Guarda o rack e o data center do nó atual
● Informações são propagadas para os outros
nós através do gossip.
● Quando o arquivo cassandra-topology.properties
o PropertyFileSnitch pode ser usado como
Snitch reserva
DynamicSnitching
● Utilizado para auxiliar o Snitch em
operações de leitura
● Mantém um nó como sendo o mais eficiente
para se fazer leituras
● Utiliza um limiar que define quando esse nó
preferencial deve ser substituido
Referências
●
●
●
●
●
●
●
●
●
●
●
Advantages of replication in distributed systems http://www.indiastudychannel.
com/resources/102074-Advantages-Replication-distributed-system.aspx
Replication in Distributed File Systems http://crystal.uta.
edu/~kumar/cse6306/papers/Smita_RepDFS.pdf
Apache Cassandra Glossary
http://io.typepad.com/glossary.
html
An Intro to Cassandra and NetworkTopologyStrategy http://www.onsip.
com/blog/2011/07/15/intro-to-cassandra-and-networktopologystrategy
Cassandra 1.2 create keyspace http://kwlum80.blogspot.com.br/2012/10/cassandra-12create-keyspace.html
Cassandra Wiki - Operations
http://wiki.apache.org/cassandra/Operations
About Replication in Cassandra 1.1 http://www.datastax.com/docs/1.
1/cluster_architecture/replication
About data distribution and replication in Cassandra 1.2 http://www.datastax.com/docs/1.
2/cluster_architecture/data_distribution#about-data-distribution-and-replication
About Replica Placement Strategy in Cassandra 0.8 http://www.datastax.com/docs/0.
8/cluster_architecture/replication#replication-strategy
Types of snitches in Cassandra 1.2
http://www.datastax.com/docs/1.
2/cluster_architecture/snitches
http://svn.apache.org/repos/asf/cassandra/trunk/src/java/org/apache/cassandra/locator/