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

Edge para la nube privada v. 4.17.01

Acerca del factor de replicación de Cassandra

Cassandra almacena réplicas de datos en varios nodos para garantizar la confiabilidad y la tolerancia a errores. La estrategia de replicación de cada espacio de claves de Edge determina los nodos en los que se colocan 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, cada una en un nodo diferente. Todas las réplicas son igualmente importantes; no hay una réplica principal o maestra.

En un sistema de producción con tres o más nodos de 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 para 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. O puedes reemplazar $(hostname -i) por la dirección IP del nodo.

Para cada espacio de claves, verás un resultado como el siguiente:

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

Puedes ver que, para el centro de datos 1, dc-1, el factor de replicación predeterminado para el espacio de claves kms es tres para 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 verá afectado.

Por ejemplo, si aumentas la cantidad de nodos de Cassandra a seis, pero dejas el factor de replicación en tres, no te aseguras de que todos los nodos de Cassandra tengan una copia de todos los datos. Si un nodo falla, 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 para que se considere que se realizó correctamente. Se pueden asignar diferentes niveles de coherencia a distintos espacios de claves de Edge.

Cuando se conectan a Cassandra para operaciones de lectura y escritura, los nodos de Message Processor 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 se definen para usar un nivel de coherencia de uno.

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

LOCAL_QUORUM = (replication_factor/2) + 1 

Como se describió anteriormente, 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 esta se realice correctamente. 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 se especifica el nivel de coherencia como LOCAL_QUORUM, Edge evita la latencia requerida, ya que valida las operaciones en varios centros de datos. Si un espacio de claves usara el valor QUORUM de Cassandra como nivel de coherencia, las operaciones de lectura y escritura tendrían que validarse en todos los centros de datos.

Para ver el nivel de coherencia que usan los nodos del procesador de mensajes de Edge 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 obtener coherencia de escritura:
    > grep -ri "write.consistencylevel" *
  4. Para mantener la 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 verá afectado.