Partager via


Se connecter à Azure Database for MariaDB avec la redirection

Important

Azure Database for MariaDB est en voie de mise hors service. Nous vous recommandons vivement de migrer vers Azure Database pour MySQL. Pour plus d’informations sur la migration vers Azure Database pour MySQL, consultez Qu’est-ce qui se passe dans Azure Database for MariaDB ?.

Cette rubrique explique comment connecter une application à votre serveur Azure Database for MariaDB avec le mode de redirection. La redirection vise à réduire la latence réseau entre les applications clientes et les serveurs MariaDB en permettant aux applications de se connecter directement aux nœuds du serveur back-end.

Avant de commencer

Connectez-vous au portail Azure. Créez un serveur Azure Database for MariaDB avec un moteur version 10.2 ou 10.3.

Pour plus d’informations, consultez la rubrique sur la création d’un serveur Azure Database for MariaDB à l’aide du portail Azure ou d’Azure CLI.

Important

La redirection n’est actuellement pas prise en charge avec Private Link pour Azure Database for MariaDB.

Activer la redirection

Sur votre serveur Azure Database for MariaDB, affectez la valeur ON au paramètre redirect_enabled pour autoriser les connexions avec le mode de redirection. Pour mettre à jour ce paramètre de serveur, utilisez le portail Azure ou Azure CLI.

PHP

La prise en charge de la redirection dans les applications PHP est disponible dans l’extension mysqlnd_azure, développée par Microsoft.

L’extension mysqlnd_azure est disponible pour ajouter des applications PHP via PECL et il est vivement recommandé d’installer et de configurer l’extension via le package PECL publié officiellement.

Important

La prise en charge de la redirection dans l’extension mysqlnd_azure PHP est actuellement disponible en préversion.

Logique de redirection

Important

La logique de redirection/comportement depuis la version 1.1.0 a été mise à jour et il est recommandé d’utiliser la version 1.1.0+.

Le comportement de redirection est déterminé par la valeur de mysqlnd_azure.enableRedirect. Le tableau ci-dessous décrit le comportement de la redirection en fonction de la valeur de ce paramètre à partir de la version 1.1.0+ .

Si vous utilisez une version antérieure de l’extension mysqlnd_azure (version 1.0.0-1.0.3), le comportement de la redirection est déterminé par la valeur de mysqlnd_azure.enabled. Les valeurs valides sont off (agit de la même façon que le comportement décrit dans le tableau ci-dessous) et on (agit comme preferred dans le tableau ci-dessous).

Valeur mysqlnd_azure.enableRedirect Comportement
off ou 0 La redirection n’est pas utilisée.
on ou 1 - Si la connexion n’utilise pas le protocole SSL côté pilote, aucune connexion n’est établie. L’erreur suivante est retournée : « mysqlnd_azure.enableRedirect est activé, mais l’option SSL n’est pas définie dans chaîne de connexion. La redirection n’est possible qu’avec SSL. »
- Si SSL est utilisé côté pilote, mais que la redirection n’est pas prise en charge sur le serveur, la première connexion est abandonnée. L’erreur suivante est retournée : « Connecter ion abandonnée, car la redirection n’est pas activée sur le serveur MariaDB ou le package réseau ne répond pas au protocole de redirection . »
- Si le serveur MariaDB prend en charge la redirection, mais que la connexion redirigée a échoué pour une raison quelconque, la première connexion au proxy est également abandonnée. Elle retourne l’erreur de la connexion redirigée.
preferred ou 2
(valeur par défaut)
- mysqlnd_azure utilise la redirection si possible.
- Si la connexion n’utilise pas le protocole SSL côte pilote, si le serveur ne prend pas en charge la redirection, ou si la connexion redirigée échoue pour une raison récupérable alors que la connexion par proxy est encore valide, elle revient à la première connexion par proxy.

Les sections suivantes du document décrivent l’installation de l’extension mysqlnd_azure à l’aide de PECL et la définition de la valeur de ce paramètre.

Composants requis

  • Versions PHP 7.2.15+ et 7.3.2+
  • PHP PEAR
  • php-mysql
  • Serveur Azure Database for MariaDB
  1. Installez mysqlnd_azure avec PECL. Il est recommandé d’utiliser la version 1.1.0+.

    sudo pecl install mysqlnd_azure
    
  2. Localisez le répertoire d’extension (extension_dir) en exécutant ce qui suit :

    sudo php -i | grep "extension_dir"
    
  3. Remplacez les répertoires par le dossier retourné et vérifiez que mysqlnd_azure.so se trouve dans ce dossier.

  4. Localisez le dossier des fichiers .ini en exécutant ce qui suit :

    sudo hp -i | grep "dir for additional .ini files"
    
  5. Remplacez les répertoires par ce dossier retourné.

  6. Créez un .ini fichier pour mysqlnd_azure. Vérifiez que l’ordre alphabétique du nom se trouve après celui-ci mysqnld , car les modules sont chargés en fonction de l’ordre de nom des fichiers ini. Par exemple, si mysqlnd.ini est nommé 10-mysqlnd.ini, nommez le fichier ini mysqlnd 20-mysqlnd-azure.ini.

  7. Dans le nouveau .ini fichier, ajoutez les lignes suivantes pour activer la redirection.

    extension=mysqlnd_azure
    mysqlnd_azure.enableRedirect = on/off/preferred
    

Confirmer la redirection

Vous pouvez également confirmer que la redirection est configurée avec l’exemple de code PHP ci-dessous. Créez un fichier PHP nommé mysqlConnect.php et collez-y le code ci-dessous. Mettez à jour le nom du serveur, le nom d’utilisateur et le mot de passe en les remplaçant par vos propres valeurs.

<?php
$host = '<yourservername>.mariadb.database.azure.com';
$username = '<yourusername>@<yourservername>';
$password = '<yourpassword>';
$db_name = 'testdb';
  echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n";
  $db = mysqli_init();
  //The connection must be configured with SSL for redirection test
  $link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL);
  if (!$link) {
     die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
  }
  else {
    echo $db->host_info, "\n"; //if redirection succeeds, the host_info differs from the hostname you used to connect
    $res = $db->query('SHOW TABLES;'); //test query with the connection
    print_r ($res);
    $db->close();
  }
?>

Étapes suivantes

Pour plus d’informations sur les chaînes de connexion, consultez Chaînes de connexions.