Cvičení – vysoká dostupnost pro obecné účely

Dokončeno

V předchozí lekci jste se dozvěděli o architektuře s vysokou dostupností v Azure SQL. V tomto cvičení se dozvíte, jak se úroveň Pro obecné účely služby Azure SQL Database chová podobně jako místní instance clusteru s podporou převzetí služeb při selhání. Nastavení této funkce může být v místní verzi časově náročné a obtížné, ale díky službám Azure SQL máte všechno nachystané.

V tomto cvičení budete používat nástroj ostress, který jste už možná použili v předchozím modulu k vytvoření úlohy. Pak zahájíte převzetí služeb při selhání pomocí modulu Azure PowerShell v Azure Cloud Shellu. Nakonec zkontrolujete účinek, který převzetí služeb při selhání má v rámci úlohy ostress.

Základní vysoká dostupnost v Azure SQL – úroveň služby Pro obecné účely

V tomto cvičení provedete následující kroky:

  1. Spustíte úlohu ostress.
  2. Ověříte, že máte správně nakonfigurované prostředí.
  3. Pomocí PowerShellu zahájíte převzetí služeb při selhání databáze Azure SQL Database.
  4. Zkontrolujete výsledky v nástroji ostress.
  5. Vyhledáte na portálu známky toho, že došlo k převzetí služeb při selhání.

Spuštění úlohy ostress

Prvním krokem je vytvořit dlouhodobě běžící úlohu. Díky této úloze uvidíte, jak převzetí služeb při selhání ovlivňuje schopnost čtení a zápisu dat a jak dlouho trvá převzetí služeb při selhání na úrovni služby Pro obecné účely pro Azure SQL Database. Použijete nástroj ostress.

  1. V místním počítači otevřete nové okno příkazového řádku. Pomocí cd přejděte do adresáře v úložišti, které jste předtím naklonovali nebo stáhli a které obsahuje modul týkající se dostupnosti. Můžete použít například tento příkaz:

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

    Spustitelný soubor ostress je v této složce. (Je malý.) Úloha ostress se připojí a spustí jednoduchý dotaz 50 000krát.

  2. Ke spuštění úlohy použijte následující skript ostress. Název serverName nahraďte názvem vašeho logického serveru Azure SQL Database. password nahraďte svým heslem.

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

    Pokud vaše úloha pracuje správně, měli byste výsledek dotazu 847 vidět opakovaně v okně příkazového řádku.

    Pokud chcete zastavit běh úlohy ostress před dokončením, stačí v terminálu zadat CTRL+C.

    Pokud budete chtít úlohu spustit znovu, spusťte příkaz.

Použití PowerShellu v Azure Cloud Shellu k zahájení převzetí služeb při selhání a sledování výsledků

  1. V terminálu Azure Cloud Shell vpravo na této stránce spusťte tento skript PowerShellu a nakonfigurujte si prostředí:

    $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. Nakonfigurujte okna tak, abyste viděli tento prohlížeč a zároveň okno příkazového řádku.

  3. V terminálu Azure Cloud Shell spusťte tento kód:

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. Sledujte výsledky úlohy ostress z okna příkazového řádku. Když je tento příkaz spuštěný, měli byste zaregistrovat všechny změny, které se objeví v okně příkazového řádku. Zjistíte, že se během převzetí služeb při selhání nemůžete dostat do databáze. Převzetí služeb při selhání se dokončí přibližně za 30 sekund. Potom úloha opět úspěšně poběží. Logika opakování ve vaší aplikaci je důležitá, protože pokud Azure (z nějakého důvodu) převezme služby při selhání, nebudete chtít, aby aplikace selhala nebo přestala fungovat na delší dobu, než zabere převzetí služeb při selhání.

  5. Tato schopnost provedení převzetí služeb při selhání na základě příkazu může být v některých situacích užitečná. Všimněte si, že služba tuto funkci reguluje, abyste ji nepoužívali příliš často. Spusťte následující příkaz a zkuste provést další převzetí služeb při selhání:

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

    Zobrazí se chyba podobná této:

    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. V okně příkazového řádku teď můžete zastavit úlohu tím, že okno vyberete a pak zadáte CTRL + C. Okno můžete nechat otevřené, protože v dalším cvičení použijete stejnou úlohu.

    Možná se ptáte, zda je možné zjistit, jestli došlo k převzetí služeb při selhání. V současnosti není k dispozici žádná jasná zpráva, že došlo k převzetí služeb při selhání, ale dobrým indikátorem může být funkce Resource Health.

  7. Na portálu Azure Portal přejděte do databáze Azure SQL. V levém podokně v části Nápověda vyberte Resource Health. 5 až 15 minut po převzetí služeb při selhání se pravděpodobně zobrazí událost stavu podobná události na následujícím snímku obrazovky. Tato událost může znamenat několik věcí. Jedna z možností je, že se něco stalo a Azure se převzal služby při selhání.

    Screenshot that shows a health event in the Azure portal.