Acerca del factor de replicación de Cassandra y el nivel de coherencia

Edge para nube privada v. 4.17.09

Información acerca del factor de replicación de Cassandra

Cassandra almacena réplicas de datos en múltiples nodos para garantizar la confiabilidad y la tolerancia a errores. La estrategia de replicación para cada espacio de claves de Edge determina los nodos en los que se ubican las réplicas.

La cantidad total de réplicas de un espacio de claves en un clúster de Cassandra se conoce como el factor de replicación del espacio de claves. Un factor de replicación de uno significa que solo hay una copia de cada fila en el clúster de Cassandra. Un factor de replicación de dos significa que hay dos copias de cada fila, y cada copia se encuentra en un nodo diferente. Todas las réplicas son igual de importantes; no hay una réplica principal ni de instancia principal.

En un sistema de producción con tres o más nodos Cassandra en cada centro de datos, el factor de replicación predeterminado para un espacio de claves de Edge es tres. Como regla general, el factor de replicación no debe exceder la cantidad de nodos de Cassandra en el clúster.

Usa el siguiente procedimiento para ver el esquema de Cassandra, que muestra el factor de replicación de cada espacio de claves de Edge:

  1. Accede a un nodo de Cassandra.
  2. Ejecuta el siguiente comando:
    >/opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    En el que $(hostname -i) se resuelve en la dirección IP del nodo de Cassandra. También puedes reemplazar $(hostname -i) con la dirección IP del nodo.

Para cada espacio de claves, verás el resultado con la siguiente forma:

create keyspace kms
  with placement_strategy = 'NetworkTopologyStrategy'
  and strategy_options = {dc-1 : 3}
  and durable_writes = true;

Puedes ver que en el centro de datos 1, dc-1, el factor de replicación predeterminado para el espacio de claves kms es tres en una instalación con tres nodos de Cassandra.

Si agregas nodos de Cassandra adicionales al clúster, el factor de replicación predeterminado no se ve afectado.

Por ejemplo, si aumentas la cantidad de nodos de Cassandra a seis, pero dejas el factor de replicación en tres, no garantizas que todos los nodos de Cassandra tengan una copia de todos los datos. Si un nodo deja de funcionar, un factor de replicación más alto significa una mayor probabilidad de que los datos del nodo existan en uno de los nodos restantes. La desventaja de un factor de replicación más alto es una mayor latencia en las operaciones de escritura de datos.

Acerca del nivel de coherencia de Cassandra

El nivel de coherencia de Cassandra se define como la cantidad mínima de nodos de Cassandra que deben confirmar una operación de lectura o escritura antes de que se pueda considerar correcta. Se pueden asignar diferentes niveles de coherencia a distintos espacios de claves perimetrales.

Cuando te conectas a Cassandra para realizar operaciones de lectura y escritura, los nodos del procesador de mensajes y del servidor de administración suelen usar el valor de Cassandra de LOCAL_QUORUM para especificar el nivel de coherencia de un espacio de claves. Sin embargo, algunos espacios de claves están definidos para usar un nivel de coherencia de uno.

El cálculo del valor de LOCAL_QUORUM de un centro de datos es el siguiente:

LOCAL_QUORUM = (replication_factor/2) + 1 

Como se describió antes, el factor de replicación predeterminado para un entorno de producción de Edge con tres nodos de Cassandra es tres. Por lo tanto, el valor predeterminado de LOCAL_QUORUM = (3/2) +1 = 2 (el valor se redondea hacia abajo a un número entero).

Con LOCAL_QUORUM = 2, al menos dos de los tres nodos de Cassandra en el centro de datos deben responder a una operación de lectura/escritura para que la operación tenga éxito. Por lo tanto, en el caso de un clúster de Cassandra de tres nodos, el clúster podría tolerar que un nodo esté inactivo por centro de datos.

Cuando especificas el nivel de coherencia como LOCAL_QUORUM, Edge evita la latencia requerida mediante la validación de operaciones en varios centros de datos. Si un espacio de claves usaba el valor QUORUM de Cassandra como nivel de coherencia, las operaciones de lectura y escritura se tendrían que validar en todos los centros de datos.

Para ver el nivel de coherencia que usan los nodos del procesador de mensajes perimetrales o del servidor de administración, haz lo siguiente:

  1. Accede a un nodo de Message Processor.
  2. Cambia al directorio /opt/apigee/edge-message-processor/conf:
    > cd /opt/apigee/edge-message-processor/conf
  3. Para lograr coherencia de escritura:
    > grep -ri “write.consistencylevel” *
  4. Para lograr coherencia de lectura:
    > grep -ri “read.consistencylevel” *
  5. Accede al nodo del servidor de administración.
  6. Cambia al directorio /opt/apigee/edge-management-server/conf:
    > cd /opt/apigee/edge-management-server/conf
  7. Repite los pasos 3 y 4.

Si agregas nodos de Cassandra adicionales al clúster, el nivel de coherencia no se ve afectado.