Połączenie do usługi Azure Database for MariaDB z przekierowaniem

Ważne

Usługa Azure Database for MariaDB znajduje się na ścieżce wycofania. Zdecydowanie zalecamy przeprowadzenie migracji do usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MariaDB?.

W tym temacie opisano sposób łączenia aplikacji serwera usługi Azure Database for MariaDB z trybem przekierowania. Przekierowanie ma na celu zmniejszenie opóźnienia sieci między aplikacjami klienckimi i serwerami MariaDB, umożliwiając aplikacjom bezpośrednie łączenie się z węzłami serwera zaplecza.

Zanim rozpoczniesz

Zaloguj się w witrynie Azure Portal. Utwórz serwer usługi Azure Database for MariaDB z aparatem w wersji 10.2 lub 10.3.

Aby uzyskać szczegółowe informacje, zobacz, jak utworzyć serwer usługi Azure Database for MariaDB przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Ważne

Przekierowywanie nie jest obecnie obsługiwane w usłudze Private Link dla usługi Azure Database for MariaDB.

Włączanie przekierowania

Na serwerze usługi Azure Database for MariaDB skonfiguruj redirect_enabled parametr tak, aby ON zezwalał na połączenia z trybem przekierowania. Aby zaktualizować ten parametr serwera, użyj witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

PHP

Obsługa przekierowania w aplikacjach PHP jest dostępna za pośrednictwem rozszerzenia mysqlnd_azure opracowanego przez firmę Microsoft.

Rozszerzenie mysqlnd_azure jest dostępne do dodawania do aplikacji PHP za pośrednictwem listy PECL i zdecydowanie zaleca się zainstalowanie i skonfigurowanie rozszerzenia za pośrednictwem oficjalnie opublikowanego pakietu PECL.

Ważne

Obsługa przekierowania w rozszerzeniu php mysqlnd_azure jest obecnie dostępna w wersji zapoznawczej.

Logika przekierowania

Ważne

Zaktualizowano logikę przekierowania/zachowanie rozpoczynające się w wersji 1.1.0 i zaleca się używanie wersji 1.1.0 lub nowszej.

Zachowanie przekierowania jest określane przez wartość mysqlnd_azure.enableRedirect. W poniższej tabeli przedstawiono zachowanie przekierowania na podstawie wartości tego parametru rozpoczynającego się w wersji 1.1.0 lub nowszej.

Jeśli używasz starszej wersji rozszerzenia mysqlnd_azure (wersja 1.0.0-1.0.3), zachowanie przekierowania jest określane przez wartość mysqlnd_azure.enabled. Prawidłowe wartości to off (działa podobnie jak zachowanie opisane w poniższej tabeli) i on (działa jak preferred w poniższej tabeli).

wartość mysqlnd_azure.enableRedirect Zachowanie
off lub 0 Przekierowanie nie jest używane.
on lub 1 - Jeśli połączenie nie używa protokołu SSL po stronie sterownika, nie zostanie nawiązane żadne połączenie. Zwracany jest następujący błąd: "mysqlnd_azure.enableRedirect jest włączona, ale opcja SSL nie jest ustawiona w parametry połączenia. Przekierowanie jest możliwe tylko w przypadku protokołu SSL".
— Jeśli protokół SSL jest używany po stronie sterownika, ale przekierowanie nie jest obsługiwane na serwerze, pierwsze połączenie zostanie przerwane. Zwracany jest następujący błąd: "przerwano Połączenie ion, ponieważ przekierowanie nie jest włączone na serwerze MariaDB lub pakiet sieciowy nie spełnia protokołu przekierowania".
- Jeśli serwer MariaDB obsługuje przekierowanie, ale przekierowane połączenie nie powiodło się z jakiegokolwiek powodu, również przerwać pierwsze połączenie serwera proxy. Zwróć błąd przekierowanego połączenia.
preferred lub 2
(wartość domyślna)
- mysqlnd_azure używa przekierowania, jeśli to możliwe.
— Jeśli połączenie nie korzysta z protokołu SSL po stronie sterownika, serwer nie obsługuje przekierowania lub nie można nawiązać połączenia przekierowania z żadnego niekrytycznego powodu, podczas gdy połączenie serwera proxy jest nadal prawidłowe, następuje powrót do pierwszego połączenia serwera proxy.

W kolejnych sekcjach dokumentu opisano sposób instalowania mysqlnd_azure rozszerzenia przy użyciu listy PECL i ustawiania wartości tego parametru.

Wymagania wstępne

  • Wersje PHP 7.2.15+ i 7.3.2+
  • PHP PEAR
  • php-mysql
  • Serwer usługi Azure Database for MariaDB
  1. Zainstaluj mysqlnd_azure przy użyciu listy PECL. Zaleca się używanie wersji 1.1.0 lub nowszej.

    sudo pecl install mysqlnd_azure
    
  2. Znajdź katalog rozszerzeń (extension_dir), uruchamiając poniższe polecenie:

    sudo php -i | grep "extension_dir"
    
  3. Zmień katalogi na zwrócony folder i upewnij się, że mysqlnd_azure.so znajduje się w tym folderze.

  4. Znajdź folder dla plików ini, uruchamiając poniższe polecenie:

    sudo hp -i | grep "dir for additional .ini files"
    
  5. Zmień katalogi na ten zwrócony folder.

  6. Utwórz nowy .ini plik dla elementu mysqlnd_azure. Upewnij się, że kolejność alfabetu nazwy jest po mysqnld tej nazwie, ponieważ moduły są ładowane zgodnie z kolejnością nazw plików ini. Jeśli na przykład mysqlnd .ini ma nazwę 10-mysqlnd.ini, nadaj nazwę ini mysqlnd jako 20-mysqlnd-azure.ini.

  7. W nowym .ini pliku dodaj następujące wiersze, aby włączyć przekierowywanie.

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

Potwierdzanie przekierowania

Możesz również potwierdzić, że przekierowanie zostało skonfigurowane przy użyciu poniższego przykładowego kodu PHP. Utwórz plik PHP o nazwie mysqlConnect.php i wklej poniższy kod. Zaktualizuj własną nazwę serwera, nazwę użytkownika i hasło.

<?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();
  }
?>

Następne kroki

Aby uzyskać więcej informacji na temat parametry połączenia, zobacz ciągi Połączenie ion.