ApsaraDB for MongoDB prend en charge la haute disponibilité et la répartition lecture/écriture pour les instances en replica set. Pour exploiter ces fonctionnalités, connectez-vous correctement à votre instance et configurez les paramètres nécessaires.
Contexte
Le nœud primaire d'une instance en replica set n'est pas fixe. En cas de défaillance du nœud primaire, le système déclenche un basculement primaire/secondaire et rétrograde l'ancien nœud primaire au statut de nœud secondaire.
Si vous vous connectez à la base de données via l'endpoint direct du nœud primaire, toutes les opérations de lecture et d'écriture sont envoyées vers ce nœud, ce qui peut entraîner une charge élevée. Si un basculement primaire/secondaire se produit, le nœud auquel vous êtes connecté devient un nœud secondaire et votre client ne peut plus effectuer d'opérations d'écriture. Cette situation peut avoir un impact sévère sur votre activité.
Haute disponibilité
ApsaraDB for MongoDB fournit une URI de chaîne de connexion pour garantir la haute disponibilité. Cette URI contient les adresses de tous les nœuds de l'instance. Après un basculement primaire/secondaire, les requêtes d'écriture sont automatiquement acheminées vers le nouveau nœud primaire, évitant ainsi toute interruption des opérations d'écriture.
Pour plus d'informations sur la connexion à une instance en replica set, consultez la rubrique Connexion à une instance en replica set.
Pour assurer la haute disponibilité dans un environnement de production, connectez vos applications à l'instance à l'aide de l'URI de chaîne de connexion.
Tous les pilotes officiels MongoDB drivers prennent en charge les URI de chaîne de connexion.
Obtenir l'adresse de haute disponibilité
Accédez à la page Replica Set Instances, sélectionnez le groupe de ressources et la région, puis cliquez sur l'ID de l'instance cible.
Dans le volet de navigation de gauche, cliquez sur Database Connections.
-
Récupérez l'URI de chaîne de connexion de haute disponibilité. Dans la section Private Connection - Virtual Private Cloud, repérez la ligne Connection String URI. Cette ligne est marquée comme Recommended. Copiez l'adresse. Le format de l'adresse est le suivant :
mongodb://root:****@dds-InstanceID.mongodb.rds.aliyuncs.com:3717,dds-InstanceID.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-ReplicaSetID.Lorsque vous utilisez l'URI de chaîne de connexion pour vous connecter, le client détecte automatiquement les rôles des nœuds primaires et secondaires. En cas de basculement primaire/secondaire, le client redirige automatiquement les opérations d'écriture vers le nouveau nœud primaire, garantissant ainsi la haute disponibilité.
Répartition lecture/écriture
L'URI de chaîne de connexion propose les paramètres readPreference et readPreferenceTags. Le paramètre readPreference contrôle la répartition lecture/écriture et l'équilibrage de charge. Le paramètre readPreferenceTags priorise l'acheminement des requêtes de lecture vers les nœuds portant des tags spécifiques.
Vous pouvez combiner les paramètres readPreference et readPreferenceTags pour prendre en charge divers cas d'utilisation.
|
Repli en cas d'échec de lecture |
Nœud cible |
Paramètre |
|
Acheminer les requêtes de lecture vers le nœud primaire en cas d'échec |
Privilégier le nœud primaire |
|
|
Privilégier les nœuds secondaires et en lecture seule |
|
|
|
Privilégier les nœuds secondaires (instances sur disque cloud uniquement) |
|
|
|
Privilégier les nœuds en lecture seule |
|
|
|
Ne pas acheminer les requêtes de lecture vers le nœud primaire en cas d'échec |
Lire uniquement depuis les nœuds secondaires et en lecture seule |
|
|
Lire uniquement depuis les nœuds secondaires (instances sur disque cloud uniquement) |
|
|
|
Lire uniquement depuis les nœuds en lecture seule |
|
Répartition lecture/écriture avec une URI de chaîne de connexion
Pour mettre en œuvre la répartition lecture/écriture, ajoutez les paramètres readPreference et readPreferenceTags à l'URI de chaîne de connexion.
Par exemple, pour acheminer toutes les requêtes d'écriture vers le nœud primaire et les requêtes de lecture exclusivement vers les nœuds en lecture seule sans repli, ajoutez &readPreference=secondary&readPreferenceTags=role:readonly à l'URI de chaîne de connexion. L'exemple suivant présente une URI complète :
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&readPreference=secondary&readPreferenceTags=role:readonly
L'environnement de test utilisait les versions de pilotes suivantes :
pymongo 3.11.4
mongodb-driver-sync 4.6.1
mongosh 2.2.15