Oefening: hoge beschikbaarheid voor algemeen gebruik

Voltooid

In de vorige les hebt u geleerd over de architectuur voor hoge beschikbaarheid van Azure SQL. In deze oefening leert u hoe de laag Algemeen gebruik van Azure SQL Database zich op dezelfde manier gedraagt als een on-premises exemplaar van een failovercluster. Het kan tijdrovend of lastig zijn om deze functionaliteit on-premises in te stellen, maar in Azure SQL is deze al geïntegreerd.

In deze oefening gebruikt u het hulpprogramma ostress dat u mogelijk in de vorige module hebt gebruikt om een workload te maken. Vervolgens start u een failover met behulp van de module Azure PowerShell in Azure Cloud Shell. Ten slotte bekijkt u het effect van de failover op de ostress-workload.

Standaard hoge beschikbaarheid in de Azure SQL-servicelaag Algemeen gebruik

In deze oefening voert u de volgende stappen uit:

  1. Voer de ostress-workload uit.
  2. Bevestigen dat de omgeving correct is geconfigureerd.
  3. PowerShell gebruiken om een failover van Azure SQL Database te initiëren.
  4. Geef de resultaten in ostress weer.
  5. In de portal zoeken naar tekens dat er een failover heeft plaatsgevonden.

De ostress-workload uitvoeren

De eerste stap bestaat uit het maken van een langlopende workload. Deze workload biedt u de mogelijkheid om te zien hoe een failover de mogelijkheid om gegevens te lezen/schrijven beïnvloedt en hoe lang een failover duurt in de servicelaag Algemeen gebruik voor Azure SQL Database. U gebruikt ostress.

  1. Open een nieuw opdrachtpromptvenster op de lokale computer. Gebruik cd om naar de map te gaan in de opslagplaats die u eerder hebt gekloond of gedownload en die de beschikbaarheidsmodule bevat. U kunt bijvoorbeeld deze opdracht gebruiken:

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

    Het uitvoerbare ostress-bestand bevindt zich in deze map. (Het is klein.) De ostress-workload maakt verbinding en voert een eenvoudige query 50.000 keer uit.

  2. Gebruik het volgende ostress-script om de workload uit te voeren. Vervang serverName door de naam van uw logische Azure SQL Database-server. Vervang password door uw wachtwoord.

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

    Als uw workload correct wordt uitgevoerd, zou u het resultaat van de query 847 herhaaldelijk moeten zien in het opdrachtpromptvenster.

    Als u de uitvoering van de ostress-workload wilt stoppen voordat deze is voltooid, kunt u in de terminal CTRL + C selecteren.

    U kunt de workload opnieuw starten door de opdracht opnieuw uit te voeren.

PowerShell in Azure Cloud Shell gebruiken om een failover te initiëren en de resultaten te bekijken

  1. Voer in de Azure Cloud Shell-terminal aan de rechterkant van de pagina dit PowerShell-script uit om uw omgeving te configureren:

    $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. Configureer de vensters zodanig dat u deze browser en het opdrachtpromptvenster tegelijkertijd kunt zien.

  3. Voer deze code uit in de Azure Cloud Shell-terminal:

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. Bekijk nu de resultaten in ostress vanuit het opdrachtpromptvenster. Terwijl deze opdracht wordt uitgevoerd, kijkt u of er wijzigingen worden weergegeven in het opdrachtpromptvenster. Tijdens de failover hebt u geen toegang tot de database. De failover is na ongeveer 30 seconden voltooid en u ziet dat de workload weer correct wordt uitgevoerd. De logica voor nieuwe pogingen in uw toepassing is belangrijk, omdat als er in Azure een failover wordt uitgevoerd (dit kan een aantal redenen hebben), u niet wilt dat de toepassing vastloopt of langer inactief is dan de duur van het uitvoeren van de failover.

  5. Deze mogelijkheid om op elk moment een failover te maken, kan nuttig zijn in bepaalde scenario's. Houd er rekening mee dat de service verhindert dat u dit te vaak doet. Voer de volgende opdracht uit om nog een failover uit te voeren:

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

    Er wordt een fout weergegeven die vergelijkbaar is met deze:

    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. U kunt de workload in het opdrachtpromptvenster nu stoppen door het venster te selecteren en vervolgens CTRL + C te selecteren. U kunt het venster open laten, omdat u in de volgende oefening dezelfde werkbelasting gebruikt.

    Mogelijk vraagt u zich af of er een failover is uitgevoerd. Er is op dit moment geen duidelijk bericht als 'Failover is uitgevoerd', maar Resource Health kan inzicht geven.

  7. Ga in Azure-portal naar uw Azure SQL Database-database. Selecteer Resource Health in het linkerdeelvenster onder Help. Tussen 5 en 15 minuten na een failover ziet u mogelijk een statusgebeurtenis die lijkt op die op de volgende schermopname. Deze gebeurtenis kan op verschillende dingen duiden, maar één mogelijkheid is dat er iets is gebeurd en dat Azure een failover heeft uitgevoerd.

    Screenshot that shows a health event in the Azure portal.