Exercice - Haute disponibilité à usage général

Effectué

Dans le module, vous avez découvert l’architecture haute disponibilité d’Azure SQL. Dans cet exercice, vous allez découvrir comment le niveau Usage général d’Azure SQL Database se comporte de façon similaire à une instance de cluster de basculement locale. Cette fonctionnalité peut être chronophage ou difficile à configurer localement, mais avec Azure SQL, elle est prête à l’emploi.

Dans cet exercice, vous allez utiliser l’outil ostress que vous avez utilisé dans le module précédent pour créer une charge de travail. Vous allez ensuite lancer un basculement à l’aide du module Azure PowerShell dans Azure Cloud Shell. Enfin, vous allez constater l’effet du basculement sur la charge de travail ostress.

Haute disponibilité De base dans le niveau de service Usage général Azure SQL

Dans cet exercice, vous allez effectuer les étapes suivantes :

  1. exécuter la charge de travail ostress
  2. confirmer que l’environnement est correctement configuré
  3. utiliser PowerShell pour lancer un basculement d’Azure SQL Database
  4. afficher les résultats dans ostress
  5. rechercher dans le portail des signes indiquant qu’un basculement s’est produit.

Exécuter la charge de travail ostress

La première étape consiste à créer une charge de travail de longue durée. Cette charge de travail vous permet de constater comment un basculement affecte la capacité à lire/écrire des données et le temps que prend un basculement dans le niveau de service Usage général pour Azure SQL Database. Vous utiliserez ostress.

  1. Ouvrez une nouvelle fenêtre d’invite de commandes sur votre ordinateur local. Utilisez cd pour accéder au répertoire dans le référentiel que vous avez cloné ou téléchargé précédemment, dans lequel se trouve le module de disponibilité. Par exemple, vous pouvez utiliser cette commande :

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    Le fichier exécutable ostress se trouve dans ce dossier. (Il est petit.) La charge de travail ostress se connecte et exécute une requête simple 50 000 fois.

  2. Utilisez le script ostress suivant pour exécuter la charge de travail. Remplacez serverName par le nom de votre serveur logique Azure SQL Database. Remplacez password par votre mot de passe.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
    

    Si votre charge de travail s’exécute correctement, vous devez voir le résultat de la requête, 847, s’afficher de façon répétée dans la fenêtre d'invite de commandes.

    Si vous souhaitez arrêter l’exécution de la charge de travail ostress avant de l’effectuer, vous pouvez sélectionner Ctrl + C dans le terminal.

    Si vous voulez réexécuter la charge de travail, vous pouvez réexécuter la commande.

Utiliser PowerShell dans Azure Cloud Shell pour lancer un basculement et observer les résultats

  1. Dans le terminal Azure Cloud Shell, sur la droite de cette page, exécutez ce script PowerShell pour configurer votre environnement :

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. Configurez vos fenêtres afin de voir ce navigateur et la fenêtre d'invite de commandes en même temps.

  3. Exécutez ce code dans le terminal Azure Cloud Shell :

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. Observez les résultats dans ostress dans la fenêtre d’invite de commandes. Pendant que cette commande est en cours d’exécution, vous pouvez observer les modifications qui apparaissent dans la fenêtre d’invite de commandes. Vous remarquerez que pendant le basculement, vous ne pouvez pas accéder à la base de données. Le basculement se termine après environ 30 secondes et vous verrez que la charge de travail s’exécute à nouveau correctement. La logique de nouvelle tentative dans votre application est importante, car si Azure bascule (pour différentes raisons), vous ne voulez pas que votre application plante ou qu’elle subisse un temps d’arrêt plus long que pour le basculement.

  5. Cette possibilité de créer un basculement sur commande peut être utile dans certains scénarios. Notez que le service vous limite à le faire trop souvent. Exécutez la commande suivante pour tenter un autre basculement :

    # Create a failover again
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    

    Vous voyez une erreur similaire à celle-ci :

    Invoke-AzSqlDatabaseFailover: Long running operation failed with status 'Failed'. Additional Info:'There was a recent failover on the database or pool if database belongs in an elastic pool.  At least 15 minutes must pass between database failovers.'
    
  6. Vous pouvez maintenant arrêter la charge de travail dans la fenêtre d’invite de commandes en sélectionnant la fenêtre, puis en sélectionnant Ctrl + C. Vous pouvez laisser cette fenêtre ouverte, car vous utiliserez la même charge de travail dans l’exercice suivant.

    Vous vous demandez peut-être s’il existe un moyen de vérifier si un basculement s’est produit. Il n’y a pas actuellement de message clair « Un basculement s’est produit », mais Resource Health peut être un bon indicateur.

  7. Dans le Portail Azure, accédez à votre base de données Azure SQL. Dans le volet gauche, sous Aide, sélectionnez Resource Health. Entre 5 et 15 minutes après un basculement, vous pouvez voir un événement d’intégrité similaire à celui illustré dans la capture d’écran suivante. Cet événement peut indiquer plusieurs choses, mais une d’entre elles est que quelque chose s’est produit et qu’Azure a basculé.

    Capture d’écran montrant un événement d’intégrité dans le Portail Azure.