Partager via


Diagnostiquer et résoudre les problèmes de disponibilité des Kits de développement logiciel (SDK) Azure Cosmos DB dans les environnements multirégionaux

S’APPLIQUE À : NoSQL

Cet article décrit le comportement de la dernière version des Kits de développement logiciel (SDK) Azure Cosmos DB lorsque vous constatez un problème de connectivité avec une région particulière ou lorsqu’un basculement de région se produit.

Tous les Kits de développement logiciel (SDK) Azure Cosmos DB vous donnent la possibilité de personnaliser les préférences régionales. Les propriétés suivantes sont utilisées dans différents Kits de développement logiciel (SDK) :

Lorsque le Kit de développement logiciel (SDK) initialise avec une configuration qui spécifie les préférences régionales, il obtient d’abord les informations de compte, y compris les régions disponibles à partir du point de terminaison global. Il applique ensuite une intersection entre les préférences régionales configurées et les régions disponibles du compte et utilise l’ordre dans la préférence régionale pour hiérarchiser le résultat.

Si la configuration des préférences régionales contient des régions qui ne sont pas une région disponible dans le compte, les valeurs sont ignorées. Si ces régions non valides sont ajoutées ultérieurement au compte, le Kit de développement logiciel (SDK) les utilise s’ils sont plus élevés dans la configuration de préférence.

Type de compte Lectures Écritures
Région d’écriture unique Région préférée avec ordre le plus élevé Région primaire
Régions d’écriture multiples Région préférée avec ordre le plus élevé Région préférée avec ordre le plus élevé

Si vous ne définissez pas de région préférée, le client du Kit de développement logiciel (SDK) se connecte par défaut à la région primaire :

Type de compte Lectures Écritures
Région d’écriture unique Région primaire Région primaire
Régions d’écriture multiples Région primaire Région primaire

Notes

La région primaire fait référence à la première région de la liste des régions du compte Azure Cosmos DB. Si les valeurs spécifiées comme préférences régionales ne correspondent à aucune région Azure existante, elles sont ignorées. S’ils correspondent à une région existante mais que le compte n’y est pas répliqué, le client se connecte à la région préférée suivante qui correspond ou à la région primaire.

Avertissement

La logique de basculement et de disponibilité décrite dans ce document peut être désactivée sur la configuration du client, ce qui n’est pas recommandé, sauf si l’application utilisateur va gérer elle-même les erreurs de disponibilité. Voici ce qu’il faut faire pour y parvenir :

Dans des circonstances normales, le client du Kit de développement logiciel (SDK) se connecte à la région préférée (si une préférence régionale est définie) ou à la région primaire (si aucune préférence n’est définie) et les opérations sont limitées à cette région, sauf si l’un des scénarios ci-dessous se produit.

Dans les cas suivants, le client qui utilise le Kit de développement logiciel (SDK) Azure Cosmos DB expose les journaux et inclut les informations relatives aux nouvelles tentatives dans le cadre des informations de diagnostic de l’opération :

  • La propriété RequestDiagnosticsString incluse dans les réponses dans le Kit de développement logiciel (SDK) .NET V2.
  • La propriété Diagnostics incluse dans les réponses et les exceptions dans le Kit de développement logiciel (SDK) .NET V3.
  • La méthode getDiagnostics () incluse dans réponses et les exceptions dans le Kit de développement logiciel (SDK) Java V4.

Lors de la détermination de la région suivante par ordre de préférence, le client du Kit de développement logiciel (SDK) utilise la liste des régions du compte, en hiérarchisant les régions préférées (le cas échéant).

Pour obtenir des informations complètes sur les garanties de contrat SLA au cours de ces événements, consultez la section Contrats SLA pour la disponibilité.

Suppression d’une région du compte

Lorsque vous supprimez une région d’un compte Azure Cosmos DB, tout client SDK qui utilise activement le compte détectera la suppression de la région grâce à un code de réponse principale. Le client marque ensuite le point de terminaison régional comme non disponible. Le client réitère l’opération en cours et toutes les opérations ultérieures sont acheminées de manière permanente vers la région suivante par ordre de préférence. Si la liste de préférences ne comportait qu’une seule entrée (ou si elle était vide), mais que le compte a d’autres régions disponibles, elle sera routée vers la région suivante dans la liste du compte.

Ajout d’une région à un compte

Toutes les cinq minutes, le client SDK Azure Cosmos DB lit la configuration du compte et actualise les régions dont il a connaissance.

Si vous supprimez une région et la rajoutez ultérieurement au compte, si la région ajoutée a un ordre de préférences régionales plus élevé dans le Kit de développement logiciel (SDK) de configuration que la région sélectionnée, le Kit de développement logiciel (SDK) reviendra à l’utilisation de cette région de façon permanente. Une fois la région ajoutée détectée, toutes les requêtes ultérieures sont dirigées vers elle.

Si vous configurez le client pour qu’il se connecte de préférence à une région que le compte Azure Cosmos DB ne possède pas, la région par défaut est ignorée. Si vous ajoutez cette région ultérieurement, le client la détecte et bascule définitivement vers cette région.

Basculement de la région d’écriture vers un compte à une seule région d’écriture

Si vous initiez un basculement de la région d’écriture actuelle, la demande d’écriture suivante échouera avec une réponse principale connue. Lorsque cette réponse est détectée, le client interroge le compte pour connaître la nouvelle région d’écriture, retente l’opération en cours et achemine définitivement toutes les futures opérations d’écriture vers la nouvelle région.

Panne régionale

Si le compte dispose d’une seule région d’écriture et que la panne régionale se produit pendant une opération d’écriture, le comportement est similaire à un basculement manuel. Pour les demandes de lecture ou les comptes à plusieurs régions d’écriture, le comportement est similaire à la suppression d’une région.

Garanties de cohérence de session

Lorsque vous utilisez la cohérence de session, le client doit garantir qu’il peut lire ses propres écritures. Dans les comptes à une seule région d’écriture où la préférence pour la région de lecture est différente de la région d’écriture, il peut arriver que l’utilisateur génère une écriture et, lorsqu’il effectue une lecture à partir d’une région locale, que celle-ci n’ait pas encore reçu la réplication des données (contrainte de la vitesse de la lumière). Dans ce cas, le Kit de développement logiciel (SDK) reçoit un échec spécifique de l’opération de lecture et tente à nouveau la lecture sur la région primaire pour garantir la cohérence de la session. Pour les comptes avec plusieurs régions d’écriture, la même sémantique de session s’applique, mais étant donné qu’il existe plusieurs régions d’écriture disponibles, les nouvelles tentatives sont émises à l’aide de la liste de régions par défaut ou de l’ordre de région du compte.

Problèmes de connectivité temporaires sur le protocole TCP

Dans les scénarios où le client SDK Azure Cosmos DB est configuré pour utiliser le protocole TCP, pour une requête donnée, il peut y avoir des situations où les conditions réseau empêchent temporairement la communication avec un point de terminaison particulier. Ces conditions réseau temporaires peuvent apparaître comme des délais d’attente TCP et des erreurs de service non disponible (HTTP 503). Si possible, le client retentera la requête localement sur le même point de terminaison pendant quelques secondes.

Si l’utilisateur a configuré une liste de régions préférée avec plusieurs régions et que le client a épuisé toutes les nouvelles tentatives locales, il peut tenter de réessayer cette opération unique dans la région suivante de la liste de préférences. Les opérations d’écriture ne peuvent être retentées dans d’autres régions que si le compte Azure Cosmos DB comporte plusieurs régions d’écriture activées, tandis que les opérations de lecture peuvent être retentées dans n’importe quelle région disponible.

Étapes suivantes