Concepts et terminologie RDS Proxy - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Concepts et terminologie RDS Proxy

Vous pouvez simplifier la gestion des connexions pour vos instances de base de données Amazon RDS à l'aide de RDS Proxy.

RDS Proxy gère le trafic réseau entre l'application cliente et la base de données. Il le fait d'abord de manière active en comprenant le protocole de la base de données. Il ajuste ensuite son comportement en fonction des opérations SQL de votre application et des jeux de résultats de la base de données.

RDS Proxy réduit la charge de mémoire et d'UC pour la gestion des connexions sur votre base de données. La base de données a besoin de moins de mémoire et de ressources de l'UC lorsque les applications ouvrent de nombreuses connexions simultanées. La logique n'est pas non plus nécessaire dans vos applications pour fermer et rouvrir les connexions qui restent inactives pendant longtemps. De même, il faut logique d'application moindre pour rétablir les connexions en cas de problème de base de données.

L'infrastructure de RDS Proxy est hautement disponible et déployée sur plusieurs zones de disponibilité (AZ). Le calcul, la mémoire et le stockage du proxy RDS sont indépendants du cluster de base de données de votre instance de base de données RDS. Cette séparation permet de réduire la surcharge sur vos serveurs de base de données, afin qu'ils puissent dédier leurs ressources à la gestion des charges de travail de base de données. Les ressources de calcul de RDS Proxy sont sans serveur et automatiquement mises à l'échelle en fonction de la charge de travail de votre base de données.

Présentation des concepts RDS Proxy

RDS Proxy gère l'infrastructure pour effectuer le regroupement de connexions et les autres fonctions décrites dans les sections qui suivent. Vous voyez les serveurs proxy qui figurent dans la console RDS sur la page Proxys.

Chaque proxy gère les connexions à une seule instance de base de données RDS (). Le proxy détermine automatiquement l'instance d'enregistreur actuelle pour l'instance ou le cluster de base de données multi-AZ RDS.

Les connexions qu'un proxy maintient ouvertes et disponibles pour que vos applications de base de données puissent les utiliser constituent le pool de connexions.

Par défaut, RDS Proxy peut réutiliser une connexion après chaque transaction dans votre session. « multiplexage » est le terme utilisé pour cette réutilisation au niveau de la transaction. Lorsque RDS Proxy supprime temporairement une connexion du groupe de connexions pour la réutiliser, cette opération est appelée un emprunt de connexion. lorsque l'opération peut être effectuée sans risque, RDS Proxy renvoie cette connexion au groupe de connexions.

Dans certains cas, RDS Proxy ne peut pas s'assurer que la réutilisation d'une connexion à une base de données en dehors de la session en cours peut être effectuée sans risque. Dans ce cas, il maintient la session sur la même connexion jusqu'à la fin. Ce comportement de secours est appelé épinglage.

Un proxy a un point de terminaison par défaut. Vous vous connectez à ce point de terminaison lorsque vous utilisez une instance de base de données RDS. Vous utilisez cette opération plutôt que de vous connecter au point de terminaison en lecture-écriture qui se connecte directement à l'instance . Pour les clusters de base de de base de données RDS), vous pouvez également créer des points de terminaison supplémentaires en lecture/écriture et en lecture seule. Pour plus d'informations, consultez Présentation des points de terminaison proxy.

Par exemple, vous pouvez toujours vous connecter au point de terminaison du cluster pour les connexions en lecture-écriture sans regroupement de connexions. Vous pouvez toujours vous connecter au point de terminaison du lecteur pour des connexions en lecture seule à charge équilibrée. Vous pouvez toujours vous connecter aux points de terminaison de l'instance pour le diagnostic et le dépannage d'instances de base de données spécifiques d'un cluster. Si vous utilisez d'autres services AWS tels qu'AWS Lambda pour vous connecter à des bases de données RDS, modifiez leurs paramètres de connexion pour utiliser le point de terminaison proxy. Par exemple, vous indiquez au point de terminaison proxy de permettre aux fonctions de Lambda d'accéder à votre base de données tout en profitant des fonctionnalités de RDS Proxy.

Chaque proxy contient un groupe cible. Ce groupe cible incarne le de données RDS auquel le proxy peut se connecter. Le de données RDS associé à un proxy est appelé les cibles de ce proxy. Pour des raisons pratiques, lorsque vous créez un proxy via la console, RDS Proxy crée également le groupe cible correspondant et enregistre automatiquement les cibles associées.

Une famille de moteurs est un ensemble associé de moteurs de base de données qui utilisent le même protocole de base de données. Vous choisissez la famille de moteurs pour chaque proxy que vous créez.

Regroupement de connexions

Chaque proxy effectue le regroupement de connexions pour l'instance d'enregistreur de sa base de données RDS associée. Le regroupement de connexions est une optimisation qui réduit la surcharge associée à l'ouverture et à la fermeture des connexions, tout en maintenant plusieurs connexions ouvertes simultanément. Cette surcharge inclut la mémoire nécessaire pour gérer chaque nouvelle connexion. Cela implique également une surcharge du processeur pour fermer chaque connexion et en ouvrir une nouvelle. Les exemples incluent la liaison Transport Layer Security/Secure Sockets Layer (TLS/SSL), l'authentification, les capacités de négociation, etc. Le regroupement de connexions simplifie la logique de votre application. Vous n'avez pas besoin d'écrire de code d'application pour minimiser le nombre de connexions ouvertes simultanées.

Chaque proxy effectue aussi le multiplexage de connexion, également connu sous le nom de réutilisation de connexion. Grâce au multiplexage, RDS Proxy exécute toutes les opérations d'une transaction à l'aide d'une connexion de base de données sous-jacente. RDS peut ensuite utiliser une connexion différente pour la transaction suivante. Si vous ouvrez de nombreuses connexions simultanées au proxy, celui-ci conserve un plus petit nombre de connexions ouvertes à l'instance ou au cluster de base de données. Cela permet de réduire davantage la surcharge de mémoire pour les connexions sur le serveur de base de données. Cette technique réduit également le risque que des erreurs liées au « nombre de connexions trop élevé » se produisent.

Sécurité RDS Proxy

RDS Proxy utilise les mécanismes de sécurité RDS existants tels que TLS/SSL et AWS Identity and Access Management (IAM). Pour obtenir des informations générales sur ces fonctionnalités de sécurité, reportez-vous à la section Sécurité dans Amazon RDS. Par ailleurs, commencez par découvrir la façon dont RDS utilise l'authentification, l'autorisation et d'autres domaines de sécurité.

RDS Proxy peut agir comme une couche de sécurité supplémentaire entre les applications clientes et la base de données sous-jacente. Par exemple, vous pouvez vous connecter au proxy à l'aide de TLS 1.2, même si l'instance de base de données sous-jacente prend en charge une version antérieure de TLS. Vous pouvez vous connecter au proxy à l'aide d'un rôle IAM. Il en est ainsi même si le proxy se connecte à la base de données à l'aide de la méthode native d'authentification par nom d'utilisateur et mot de passe. Grâce à cette technique, vous pouvez appliquer de fortes exigences d'authentification pour les applications de base de données sans avoir à fournir un effort de migration coûteux pour les instances de base de données elles-mêmes.

Vous stockez les informations d'identification de base de données utilisées par RDS Proxy dans AWS Secrets Manager. Chaque utilisateur de base de données du de données RDS auquel un proxy accède doit disposer d'un secret correspondant dans Secrets Manager. Vous pouvez également configurer l'authentification IAM pour les utilisateurs de RDS Proxy. Vous pouvez ainsi appliquer l'authentification IAM pour l'accès à la base de données, même si les bases de données utilisent l'authentification native par mot de passe. Nous vous recommandons d'utiliser ces fonctions de sécurité au lieu d'intégrer les informations d'identification de base de données dans votre code d'application.

Utilisation de TLS/SSL avec RDS Proxy

Vous pouvez vous connecter à RDS Proxy à l'aide du protocole TLS/SSL.

Note

RDS Proxy utilise des certificats de l'AWS Certificate Manager (ACM). Si vous utilisez RDS Proxy, vous n'avez pas besoin de télécharger des certificats Amazon RDS ou de mettre à jour des applications utilisant des connexions RDS Proxy.

Pour appliquer le protocole TLS à toutes les connexions entre le proxy et votre base de données, vous pouvez spécifier un paramètre Require Transport Layer Security lorsque vous créez ou modifiez un proxy dans leAWS Management Console.

RDS Proxy permet également de garantir que votre session utilise TLS/SSL entre votre client et le point de terminaison RDS Proxy. Pour que RDS Proxy procède ainsi, spécifiez l'exigence côté client. Les variables de session SSL ne sont pas définies pour les connexions SSL à une base de données utilisant RDS Proxy.

  • Pour RDS for MySQL, spécifiez l'exigence côté client avec le paramètre --ssl-mode lorsque vous exécutez la commande mysql.

  • Pour Amazon RDS PostgreSQL, spécifiez sslmode=require comme partie de la chaîne conninfo lorsque vous exécutez la commande psql.

RDS Proxy prend en charge le protocole TLS versions 1.0, 1.1 et 1.2. Vous pouvez vous connecter au proxy à l'aide d'une version de TLS supérieure à celle utilisée dans la base de données sous-jacente.

Par défaut, les programmes client établissent une connexion chiffrée avec RDS Proxy. L'option --ssl-mode fournit davantage de contrôle. Du côté client, RDS Proxy prend en charge tous les modes SSL.

Pour le client, les modes SSL sont les suivants :

PREFERRED

SSL est le premier choix, mais n'est pas obligatoire.

DISABLED

Aucun mode SSL n'est autorisé.

REQUIRED

SSL est obligatoire.

VERIFY_CA

SSL est obligatoire et une vérification de l'autorité de certification (CA) est effectuée.

VERIFY_IDENTITY

SSL est obligatoire et une vérification de l'autorité de certification (CA) et de son nom d'hôte est effectuée.

Lorsque vous utilisez un client avec --ssl-mode VERIFY_CA ou VERIFY_IDENTITY, spécifiez l'option --ssl-ca pointant vers une autorité de certification au format .pem. Pour le fichier .pem à utiliser, téléchargez tous les PEM de la CA racine depuis Amazon Trust Services et placez-les dans un seul fichier .pem.

RDS Proxy utilise des certificats génériques, qui s'appliquent à la fois à un domaine et à ses sous-domaines. Si vous utilisez le client mysql pour vous connecter avec le mode SSL VERIFY_IDENTITY, vous devez actuellement exécuter la commande mysql compatible avec MySQL 8.0.

Basculement

Le basculement est une fonction de haute disponibilité qui remplace une instance de base de données par une autre lorsque l'instance d'origine est indisponible. Un problème lié à une instance de base de données peut entraîner un basculement. Celui-ci peut également faire partie de procédures de maintenance normales, lors d'une mise à niveau de la base de données par exemple. Le basculement s'applique aux instances de base de données RDS dans une configuration multi-AZ.

La connexion via un proxy permet à vos applications de mieux résister aux basculements de bases de données. Lorsque l'instance de base de données d'origine est indisponible, RDS Proxy se connecte à la base de données de secours sans supprimer les connexions d'application inactives. Cela permet d'accélérer et de simplifier le processus de basculement. Cela perturbe moins votre application qu'un redémarrage classique ou un problème de base de données.

Sans RDS Proxy, un basculement provoque une brève interruption de service. Pendant la panne, vous ne pouvez pas effectuer d'opérations d'écriture sur la base de données en cas de basculement. Toutes les connexions de base de données existantes sont interrompues et votre application doit les rouvrir. La base de données est ouverte à de nouvelles connexions et opérations d'écriture lorsqu'une instance de base de données en lecture seule est promue pour remplacer celle qui n'est pas disponible.

Pendant les basculements de base de données, RDS Proxy continue d'accepter les connexions à la même adresse IP et redirige automatiquement les connexions vers la nouvelle instance de base de données principale. Les clients qui se connectent via RDS Proxy ne sont pas sujets aux éléments suivants :

  • Délais de propagation du système de noms de domaine (DNS) lors du basculement.

  • Mise en cache DNS locale.

  • Délai d'expiration de connexion.

  • Incertitude concernant l'instance de base de données qui est le rédacteur en cours.

  • Attente d'une réponse à la requête d'un ancien rédacteur devenu indisponible sans fermer les connexions.

Pour les applications qui conservent leur propre regroupement de connexions, passer par RDS Proxy implique que la plupart des connexions restent actives pendant des basculements ou d'autres interruptions. Seules les connexions qui se trouvent au milieu d'une transaction ou d'une instruction SQL sont annulées. RDS Proxy accepte immédiatement les nouvelles connexions. Lorsque le rédacteur de base de données n'est pas disponible, RDS Proxy place les demandes entrantes dans la file d'attente.

Pour les applications qui ne conservent pas leurs propres regroupements de connexions, RDS Proxy offre des taux de connexion plus rapides et davantage de connexions ouvertes. Il permet de réduire la surcharge coûteuse des reconnexions fréquentes à la base de données. Il effectue cette opération en réutilisant les connexions de base de données maintenues dans le regroupement de connexions de RDS Proxy. Cette approche est particulièrement importante pour les connexions TLS, où les coûts d'installation sont importants.

Transactions

Toutes les instructions d'une seule transaction utilisent toujours la même connexion à la base de données sous-jacente. La connexion devient disponible pour une session différente lorsque la transaction se termine. Voici les conséquences de l'utilisation de la transaction en tant qu'unité de granularité :

  • La connexion peut être réutilisée après chaque instruction individuelle lorsque le paramètre RDS for MySQL autocommit est activé.

  • Inversement, lorsque le paramètre autocommit est désactivé, la première instruction que vous émettez dans une session lance une nouvelle transaction. Par exemple, supposons que vous saisissiez une séquence SELECT, INSERT, UPDATE, ainsi que d'autres instructions en langage de manipulation de données (DML). Dans ce cas, la réutilisation de la connexion ne se produit que lorsque vous émettez COMMIT, ROLLBACK ou que vous mettez fin à la transaction.

  • La saisie d'une instruction en langage de définition de données (DDL) entraîne la fin de la transaction une fois l'instruction terminée.

RDS Proxy détecte lorsqu'une transaction se termine par le protocole réseau utilisé par l'application cliente de base de données. La détection des transactions ne repose pas sur des mots-clés tels que COMMIT ou ROLLBACK apparaissant dans le texte de l'instruction SQL.

Dans certains cas, RDS Proxy peut détecter une demande de base de données qui rend impossible le déplacement de votre session vers une autre connexion. Dans ce cas, il désactive le multiplexage pour cette connexion pendant le reste de votre session. La même règle s'applique si RDS Proxy ne peut pas s'assurer de la praticité du multiplexage pour la session. Cette opération est appelée épinglage. Pour savoir comment détecter et réduire l'épinglage, consultez Contournement de l'épinglage.