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

Información 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, y cada copia se encuentra en un nodo diferente. Todas las réplicas son de igual importancia; no hay réplica principal ni principal.

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 de cada espacio de claves de Edge:

  1. Accede a un nodo de Cassandra.
  2. Ejecuta el siguiente comando:
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -e "select keyspace_name, replication from system_schema.keyspaces;"

    Donde $(hostname -i) se resuelve en la dirección IP del nodo de Cassandra. También puedes reemplazar $(hostname -i) por la dirección IP del nodo.

    cassuser: Si habilitaste la autenticación de Cassandra, pasa el nombre de usuario de Cassandra. Esto es opcional y se puede omitir si no tienes habilitada la autenticación de Cassandra.

    casspass: Si habilitaste la autenticación de Cassandra, pasa la contraseña de Cassandra. Esto es opcional y se puede omitir si no tienes habilitada la autenticación de Cassandra.

Verás un resultado como el que se muestra a continuación, en el que cada fila representa un espacio de claves:

  keyspace_name       | replication                                                                 
  kms                 | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  system_distributed  | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
  apprepo             | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  

Puedes ver que, en el centro de datos 1, dc-1, el factor de replicación predeterminado para el espacio de claves de km es tres en una instalación con tres nodos Cassandra. Para ciertos espacios de claves internos de Cassandra (como system, system_schema, etc.), la estrategia y el factor de replicación pueden ser diferentes. Este es un comportamiento intencional del sistema.

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

Información 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 la operación se pueda considerar exitosa. Se pueden asignar diferentes niveles de coherencia a distintos espacios de claves de Edge.

Cuando se conecta 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ó 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 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 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 mediante la validación de 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 perimetrales o del Servidor de administración, haz lo siguiente:

  1. Accede a un nodo del procesador de mensajes.
  2. Cambia al directorio /opt/apigee/edge-message-processor/conf:
    cd /opt/apigee/edge-message-processor/conf
  3. Para lograr coherencia de lectura y escritura:
    grep -ri "consistency.level" *
  4. Accede al nodo del servidor de administración.
  5. Cambia al directorio /opt/apigee/edge-management-server/conf:
    cd /opt/apigee/edge-management-server/conf
  6. Repite el paso 3.

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