À propos du facteur de réplication et du niveau de cohérence de Cassandra

À propos du facteur de réplication Cassandra

Cassandra stocke les instances répliquées de données sur plusieurs nœuds pour garantir la fiabilité et la tolérance aux pannes. La stratégie de réplication de chaque espace de clés Edge détermine les nœuds sur lesquels se trouvent les instances répliquées n'est pas placé.

Le nombre total d'instances répliquées pour un espace de clés dans un cluster Cassandra est appelé facteur de réplication de l'espace de clés. Un facteur de réplication de 1 signifie qu'il n'y a qu'un seul de chaque ligne du cluster Cassandra. Un facteur de réplication de deux signifie qu'il existe deux copies de chaque ligne, où chaque copie se trouve sur un nœud différent. Toutes les instances répliquées ont la même importance. il n'y a pas d'instance répliquée principale ni maître.

Dans un système de production comportant au moins trois nœuds Cassandra dans chaque centre de données, le facteur de réplication d'un espace de clés Edge est de trois. En règle générale, le facteur de réplication ne doit pas dépasser le nombre de nœuds Cassandra du cluster.

Procédez comme suit pour afficher le schéma Cassandra, qui indique le facteur de réplication pour chaque espace de clés Edge:

  1. Connectez-vous à un nœud Cassandra.
  2. Exécutez la commande suivante :
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -e "select keyspace_name, replication from system_schema.keyspaces;"

    $(hostname -i) correspond à l'adresse IP du nœud Cassandra. Vous pouvez également remplacer $(hostname -i) par l'adresse IP du nœud.

    cassuser: si vous avez activé l'authentification Cassandra, transmettez le nom d'utilisateur Cassandra. Cette étape est facultative et peut être ignorée si l'authentification Cassandra n'est pas activée.

    casspass: si vous avez activé l'authentification Cassandra, transmettez le mot de passe Cassandra. Cette étape est facultative et peut être ignorée si l'authentification Cassandra n'est pas activée.

Vous obtenez un résultat semblable à celui ci-dessous, où chaque ligne représente un espace de clés:

  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'}
  

Comme vous pouvez le constater, pour le centre de données 1, dc-1, le facteur de réplication par défaut de l'espace de clés kms est de trois pour une installation avec trois nœuds Cassandra. Pour certains espaces de clés internes à Cassandra (tels que system, system_schema, etc.), la stratégie de réplication et le facteur de réplication peuvent être différents. Il s'agit d'un comportement intentionnel du système.

Si vous ajoutez des nœuds Cassandra supplémentaires au cluster, le facteur de réplication par défaut n'est pas concernés.

À propos du niveau de cohérence Cassandra

Le niveau de cohérence Cassandra correspond au nombre minimal de nœuds Cassandra devant confirmer une opération de lecture ou d'écriture avant que l'opération puisse être considérée comme réussie. Différents niveaux de cohérence peuvent être attribués à différents espaces de touches Edge.

Lors de la connexion à Cassandra pour les opérations de lecture et d'écriture, le processeur de messages et la gestion Les nœuds de serveur utilisent généralement la valeur Cassandra de LOCAL_QUORUM pour spécifier le niveau de cohérence d'un espace de clés. Cependant, certains espaces de clés sont définis pour utiliser niveau de cohérence d'un point.

Le calcul de la valeur de LOCAL_QUORUM pour un centre de données est le suivant:

LOCAL_QUORUM = (replication_factor/2) + 1

Comme décrit ci-dessus, le facteur de réplication par défaut pour un environnement de production Edge avec trois nœuds Cassandra font trois. Par conséquent, la valeur par défaut de LOCAL_QUORUM = (3/2) +1 = 2 (la valeur est arrondie à un nombre entier).

Avec LOCAL_QUORUM = 2, au moins deux des trois nœuds Cassandra dans les données doit répondre à une opération de lecture/écriture pour que l'opération aboutisse. Pour un modèle à trois nœuds cluster Cassandra, le cluster pourrait donc tolérer l'interruption d'un nœud par centre de données.

En spécifiant le niveau de cohérence en tant que LOCAL_QUORUM, Edge évite la latence nécessaires en validant les opérations dans plusieurs centres de données. Si un espace de clés utilise le Cassandra QUORUM comme niveau de cohérence, les opérations de lecture/écriture doivent être validés dans tous les centres de données.

Pour voir le niveau de cohérence utilisé par les nœuds du processeur de messages Edge ou du serveur de gestion:

  1. Connectez-vous à un nœud de processeur de messages.
  2. Accédez au répertoire /opt/apigee/edge-message-processor/conf :
    cd /opt/apigee/edge-message-processor/conf
  3. Pour assurer la cohérence de lecture et d'écriture:
    grep -ri "consistency.level" *
  4. Connectez-vous au nœud du serveur de gestion.
  5. Accédez au répertoire /opt/apigee/edge-management-server/conf :
    cd /opt/apigee/edge-management-server/conf
  6. Répétez l'étape 3.

L'ajout de nœuds Cassandra supplémentaires au cluster n'affecte pas le niveau de cohérence.