Développement
Résilience de la connexion et charge du serveur
Lorsque vous développez des applications clientes, veillez à prendre en compte les meilleures pratiques pertinentes pour la résilience des connexions et la gestion de la charge du serveur.
Prendre en compte d’autres clés et des valeurs plus petites
Azure Cache pour Redis fonctionne mieux avec les valeurs plus petites. Pour répartir les données sur plusieurs clés, envisagez de diviser les plus grandes portions de données en plus petits segments. Pour plus d’informations sur la taille idéale des valeurs, consultez cet article.
Taille importante de la demande ou de la réponse
Une demande/réponse volumineuse peut entraîner des délais d’expiration. Par exemple, supposons que la durée du délai d’expiration que vous avez configurée sur votre client soit de 1 seconde. Votre application demande deux clés (par exemple, « A » et « B ») en même temps (à l’aide de la même connexion réseau physique). La plupart des clients prennent en charge le traitement en pipeline des requêtes, de sorte que les deux requêtes A et B sont envoyées l’une après l’autre sans attendre les réponses. Le serveur renvoie les réponses dans le même ordre. Si la réponse A est volumineuse, elle peut consommer la majeure partie du délai d’expiration des requêtes suivantes.
Dans l’exemple suivant, les requêtes A et B sont envoyées rapidement au serveur. Le serveur commence rapidement à envoyer les réponses A et B. En raison des temps de transfert de données, la réponse B doit attendre l’expiration de la réponse A, même si le serveur a répondu rapidement.
|-------- 1 Second Timeout (A)----------|
|-Request A-|
|-------- 1 Second Timeout (B) ----------|
|-Request B-|
|- Read Response A --------|
|- Read Response B-| (**TIMEOUT**)
Cette demande/réponse est difficile à mesurer. Vous pouvez instrumenter votre code client pour suivre les requêtes et les réponses volumineuses.
Les solutions possibles pour la gestion des réponses volumineuses sont variées, et incluent notamment :
- Optimiser votre application pour prendre en charge un grand nombre de petites valeurs plutôt qu’un petit nombre de grandes valeurs
- La meilleure solution consiste à diviser vos données en valeurs plus petites.
- Lisez le billet What is the ideal value size range for redis? Is 100 KB too large? pour savoir pourquoi il est recommandé d’utiliser des valeurs moins élevées.
- Augmenter la taille de votre machine virtuelle pour obtenir des capacités de bande passante plus élevées
- Une plus grande quantité de bande passante sur votre machine virtuelle cliente ou serveur peut réduire le temps de transfert des données pour les réponses volumineuses.
- Comparez l’utilisation actuelle du réseau par les deux ordinateurs aux limites associées à la taille de votre machine virtuelle. Une bande passante plus élevée seulement sur le serveur ou sur le client peut ne pas suffire.
- Augmenter le nombre d’objets de connexion qu’utilise votre application
- Utilisez un tourniquet (round-robin) pour envoyer des requêtes vers différents objets de connexion.
Distribution de clés
Si vous envisagez d’utiliser le clustering Redis, lisez Bonnes pratiques concernant le clustering Redis avec des clés.
Utilisez le traitement en pipeline
Essayez de choisir un client Redis qui prend en charge le traitement en pipeline Redis. Le traitement en pipeline permet d’utiliser efficacement le réseau et d’obtenir le meilleur débit possible.
Éviter les opérations coûteuses
Certaines opérations Redis, comme la commande KEYS, sont très coûteuses à exécuter et sont donc à proscrire. Pour connaître quelques éléments à prendre en compte concernant les commandes de longue durée, consultez Commandes de longue durée.
Choisir un niveau approprié
Utilisez les niveaux Flash Standard, Premium, Enterprise ou Enterprise pour les systèmes de production. N’utilisez pas le niveau de base en production. Le niveau De base est un système à nœud unique, sans réplication des données ni contrat SLA. En outre, utilisez au moins un cache C1. Les caches C0 s’appliquent uniquement aux scénarios de développement/test simples, car :
- ils partagent un cœur de processeur
- ils utilisent peu de mémoire
- sont sujets à des problèmes de voisinage bruyant
Nous vous recommandons de tester les performances pour choisir le niveau approprié et valider les paramètres de connexion. Pour plus d’informations, consultez Test de performances.
Client dans la même région que le cache
Placez votre instance de cache et votre application dans la même région. La connexion à un cache dans une autre région peut considérablement augmenter la latence et réduire la fiabilité.
Vous pouvez vous connecter à partir d’une localisation en dehors d’Azure, mais ce n’est pas recommandé, en particulier si vous utilisez Redis comme cache. Si vous utilisez le serveur Redis simplement comme magasin de clés/valeurs, la latence n’est sans doute pas votre première préoccupation.
S’appuyer sur l’adresse IP non publique du nom d’hôte
L’adresse IP publique affectée à votre cache peut changer à la suite d’une opération de mise à l’échelle ou d’une amélioration du back-end. Nous vous recommandons de vous appuyer sur le nom d’hôte au lieu d’une adresse IP publique explicite. Voici les formulaires recommandés pour les différents niveaux :
Niveau | Formulaire |
---|---|
De base, Standard, Premium | <cachename>.redis.cache.windows.net |
Enterprise, Enterprise Flash | <DNS name>.<Azure region>.redisenterprise.cache.azure.net. |
Choisir une version Redis appropriée
La version par défaut de Redis utilisée lors de la création d’un cache peut changer au fil du temps. Azure Cache pour Redis peut adopter une nouvelle version lorsqu’une nouvelle version de Redis open source est publiée. Si votre application nécessite une version spécifique de Redis, nous vous recommandons de choisir explicitement cette version de Redis lorsque vous créez le cache.
Utiliser le chiffrement TLS
Azure Cache pour Redis nécessite des communications chiffrées avec le protocole TLS par défaut. Les versions 1.0, 1.1 et 1.2 de TLS sont actuellement prises en charge. Toutefois, TLS 1.0 et 1.1 étant en passe de dépréciation dans l’ensemble du secteur, utilisez TLS 1.2 dans la mesure du possible.
Si votre outil ou bibliothèque de client ne prend pas en charge TLS, vous pouvez activer des connexions non chiffrées par le biais du portail Azure ou des API de gestion. Dans les cas où il est impossible d’établir des connexions chiffrées, nous vous recommandons de placer votre cache et votre application cliente dans un réseau virtuel. Pour plus d’informations sur les ports utilisés dans le scénario de mise en cache du réseau virtuel, consultez ce tableau.
Changement de certificat Azure TLS
Microsoft met à jour les services Azure pour qu’ils utilisent des certificats de serveur TLS issus d’un autre ensemble d’autorités de certification (CA). Cette modification est déployée dans les phases du 13 août 2020 au 26 octobre 2020 (estimation). Azure apporte ce changement parce que les certificats d’autorité de certification actuels ne sont pas conformes à l’une des exigences de ligne de base du forum sur l’autorité de certification/le navigateur. Le problème a été signalé le 1er juillet 2020 et s’applique à plusieurs fournisseurs d’infrastructure à clé publique (PKI) populaires dans le monde entier. La plupart des certificats TLS qu’utilisent les services Azure proviennent aujourd’hui de l’infrastructure à clé publique Baltimore CyberTrust Root. Le service Azure Cache pour Redis continue d’être chaîné à Baltimore CyberTrust Root. Toutefois, ses certificats de serveur TLS seront émis par de nouvelles autorités de certification intermédiaires (ICA) à partir du 12 octobre 2020.
Notes
Cette modification est limitée aux services dans les régions Azure publiques. Elle exclut les clouds souverains (par ex., de Chine) ou gouvernementaux.
Ce changement m’affecte-t-il ?
La plupart des clients d’Azure Cache pour Redis ne sont pas affectés par la modification. Votre application pourrait être affectée si elle spécifie explicitement une liste de certificats acceptables, pratique appelée épinglage de certificat. En cas d’épinglage à un certificat intermédiaire ou feuille au lieu de Baltimore CyberTrust Root, vous devez prendre des mesures immédiates pour modifier la configuration du certificat.
Azure Cache pour Redis ne prend pas en charge l’agrafage OCSP.
Le tableau suivant fournit des informations sur les certificats en cours de déploiement. En fonction du certificat que votre application utilise, il se peut que vous deviez le mettre à jour pour éviter tout perte de connectivité à votre instance Azure Cache pour Redis.
Type d'autorité de certification | Actuel | Post déploiement (12 octobre 2020) | Action |
---|---|---|---|
Root | Thumbprint : d4de20d05e66fc53fe1a50882c78db2852cae474 Expiration : Lundi 12 mai 2025, 16:59:00 Nom de l’objet : CN = Baltimore CyberTrust Root OU = CyberTrust O = Baltimore C = IE |
Pas de modification | Aucun |
Intermédiaires | Thumbprints : CN = Microsoft IT TLS CA 1 Empreinte : 417e225037fbfaa4f95761d5ae729e1aea7e3a42 CN = Microsoft IT TLS CA 2 Empreinte : 54d9d20239080c32316ed9ff980a48988f4adf2d CN = Microsoft IT TLS CA 4 Empreinte : 8a38755d0996823fe8fa3116a277ce446eac4e99 CN = Microsoft IT TLS CA 5 Empreinte : Ad898ac73df333eb60ac1f5fc6c4b2219ddb79b7 Expiration : Vendredi 20 mai 2024 5:52:38 Nom de l’objet : OU = Microsoft IT O = Microsoft Corporation L = Redmond S = Washington C = US |
Thumbprints : CN = Microsoft RSA TLS CA 01 Empreinte : 703d7a8f0ebf55aaa59f98eaf4a206004eb2516a CN = Microsoft RSA TLS CA 02 Thumbprint : b0c2d2d13cdd56cdaa6ab6e2c04440be4a429c75 Expiration : Mardi 8 octobre 2024 12:00:00 ; Nom de l’objet : O = Microsoft Corporation C = US |
Obligatoire |
Que dois-je faire ?
Si votre application utilise le magasin de certificats du système d’exploitation ou épingle la racine Baltimore parmi d’autres, aucune action n’est nécessaire.
Si votre application épingle un certificat TLS intermédiaire ou feuille, nous vous recommandons d’épingler les racines suivantes :
Certificat | Empreinte numérique |
---|---|
Autorité de certification racine Baltimore | d4de20d05e66fc53fe1a50882c78db2852cae474 |
Microsoft RSA Root Certificate Authority 2017 | 73a5e64a3bff8316ff0edccc618a906e4eae4d74 |
Digicert Global Root G2 | df3c24f9bfd666761b268073fe06d1cc8d4f82a4 |
Conseil
Les certificats intermédiaires et feuilles sont censés changer fréquemment. Nous vous recommandons de ne pas pendre de dépendance sur ceux-ci. Au lieu de cela, épinglez votre application à un certificat racine, car il est déployé moins fréquemment.
Pour continuer à épingler des certificats intermédiaires, ajoutez ce qui suit à la liste des certificats intermédiaires épinglés, qui en comprend quelques autres pour minimiser les modifications futures :
Nom commun de l’autorité de certification | Empreinte numérique |
---|---|
Microsoft RSA TLS CA 01 | 703d7a8f0ebf55aaa59f98eaf4a206004eb2516a |
Microsoft RSA TLS CA 02 | b0c2d2d13cdd56cdaa6ab6e2c04440be4a429c75 |
Microsoft Azure TLS Issuing CA 01 | 2f2877c5d778c31e0f29c7e371df5471bd673173 |
Microsoft Azure TLS Issuing CA 02 | e7eea674ca718e3befd90858e09f8372ad0ae2aa |
Microsoft Azure TLS Issuing CA 05 | 6c3af02e7f269aa73afd0eff2a88a4a1f04ed1e5 |
Microsoft Azure TLS Issuing CA 06 | 30e01761ab97e59a06b41ef20af6f2de7ef4f7b0 |
Si votre application valide le certificat dans le code, vous devez le modifier pour reconnaître les propriétés (par exemple, émetteurs, thumbprint) des certificats nouvellement épinglés. Cette vérification supplémentaire doit couvrir tous les certificats épinglés pour être plus sécurisés.
Conseils pour la bibliothèque cliente
Pour plus d’informations, consultez Bibliothèques clientes.