networktopologystrategy cassandra datastax-enterprise cassandra-2.0 datastax

cassandra - networktopologystrategy



ReplicaciĆ³n en cassandra (3)

¿Cómo funciona la replicación en Cassandra? Si tengo 3 bastidores y 3 RF con NetworkTopologyStratagy , ¿los datos se replicarán en los 3 bastidores?

¿Cómo se replicarán exactamente los datos en el clúster? Lo pido porque estamos diseñando nuestro clúster para atender el peor de los casos en que 2 de 3 bastidores bajan, y no queremos perder datos.

Tenemos solo un centro de datos con 3 bastidores.

Si uso:

CREATE KEYSPACE "myKeyspaceName" WITH REPLICATION = {''class'' : ''NetworkTopologyStrategy'', ''DC1'' : 3 }

¿Esto se replicará en los tres bastidores?


En los documentos de Cassandra 1.0, tienen un artículo que explica esto bastante bien: Acerca de la replicación en Cassandra .

Asumo que tienes dos (¿lógico?) Centros de datos. Digamos que tiene dos bastidores en un DC y el último bastidor en otro, y en cada RACK tiene 2 nodos. Tendrás estos definidos en tu archivo de topología para que luzca algo como esto:

server1IP=DC1:RACK1 server2IP=DC1:RACK1 server3IP=DC2:RACK1 server4IP=DC2:RACK1 server5IP=DC2:RACK2 server6IP=DC2:RACK2

Si desea tener 3 copias de los datos disponibles (uno para cada rack lógico), entonces definirá su espacio de claves para usar NetworkTopologyStrategy, con configuraciones de replicación para cada DC, como esta:

CREATE KEYSPACE "myKeyspaceName" WITH REPLICATION = {''class'' : ''NetworkTopologyStrategy'', ''DC1'' : 1, ''DC2'' : 2};

La snitch de PropertyFile también es "compatible con el rack", por lo que cuando se produce una escritura se asegurará de que una copia de los datos esté en un nodo en RACK1 en DC1 , y una copia esté en cada RACK en DC2 . Según lo que está diciendo, podría tener sentido tener tres centros de datos lógicos, cada uno con un rack.

También debería echar un vistazo a este documento en la sección "Elección de las opciones de replicación de Keyspace" que explica cómo configurar la replicación.

EDITAR:

Si utilizo CREATE KEYSPACE "myKeyspaceName" WITH REPLICATION = {''class'': ''NetworkTopologyStrategy'', replicationfactor: 3}. ¿Esto se replicará en los tres bastidores?

No estoy seguro. Pero cada ejemplo que encuentro sobre la definición de una estrategia de replicación del espacio de claves usando NetworkTopologyStrategy con solo un DC, específicamente nombra el DC en lugar de indicar "factor de replicación". Incluso el documento al que vinculaba estados:

NetworkTopologyStrategy toma como opciones la cantidad de réplicas que desea por centro de datos. Incluso para clústeres de centro de datos único (o nodo único), puede utilizar esta estrategia de ubicación de réplicas y simplemente definir la cantidad de réplicas para un centro de datos.

Entonces, suponiendo que nombre su DC DC1 , se vería así:

CREATE KEYSPACE "myKeyspaceName" WITH REPLICATION = {''class'' : ''NetworkTopologyStrategy'', ''DC1'' : 3}

Si lo hizo, y se definieron sus tres bastidores debajo de esa DC, esto replicará una copia en los tres bastidores.


La replicación depende por completo de la estrategia de replicación de su espacio de claves y del diseño de su clúster. Este diseño está definido por dos cosas, centros de datos y bastidores. Los centros de datos son un grupo de bastidores que deben tratarse como si estuvieran separados de las otras máquinas.

Por ejemplo, si tiene 3 centros de datos, puede especificar (utilizando la estrategia de topología de red) que cada uno de esos centros de datos debe tener un número estricto de copias de los datos. Una estrategia típica es especificar que cada centro de datos tenga un RF de 3. En esta situación, usted terminaría con 9 copias en total.

Los racks solo ayudan al clúster a descubrir dónde ubicar réplicas dentro de un centro de datos. Cuando sea posible, C * intenta colocar réplicas dentro de un centro de datos en bastidores separados.

Si su servicio está disponible o no (las lecturas y escrituras son posibles) depende del nivel de coherencia que elija para las operaciones del cliente. El nivel de consistencia de Uno requiere solo una réplica para estar en línea, Quórum requiere 1/2 de réplicas totales + 1. La mayoría de las personas que usan NetworkTopologyStrategy usan Local_One o Local_Quorum (1/2 de los nodos en el DC +1 contactado) que minimizan el tráfico cruzado de DC .

Calculadora para calcular cuántos nodos bajan antes de tener excepciones no disponibles

Replicación

Consistencia


Si ha configurado correctamente su rack-dc, lo que significa que cada nodo está configurado en un rack por separado, entonces sí, tendrá una réplica de datos en cada nodo.