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 para cada espacio de claves de Edge determina los nodos en los que se encuentran las réplicas y dónde se colocará.

La cantidad total de réplicas de un espacio de claves en un clúster de Cassandra se conoce como factor de replicación de espacio de claves. Un factor de replicación de uno significa que solo hay un 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 está en un nodo diferente. Todas las réplicas son igualmente importantes; no hay una réplica principal o principal.

En un sistema de producción con tres o más nodos Cassandra en cada centro de datos, el valor predeterminado el factor de replicación del espacio de claves de Edge es tres. Como regla general, el factor de replicación no debe superar 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 es 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 antes de que se considere correcta. Se pueden asignar diferentes niveles de coherencia a distintos espacios de claves de Edge.

Cuando te conectas a Cassandra para operaciones de lectura y escritura, Message Processor and Management Por lo general, los nodos del servidor usan el valor 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 una el 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 a un número entero).

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

Cuando se especifica el nivel de coherencia como LOCAL_QUORUM, Edge evita la latencia. necesarios validando las operaciones en varios centros de datos. Si un espacio de claves usaba el ícono de Cassandra QUORUM como nivel de coherencia, las operaciones de lectura y escritura tendrían que validados 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.