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/