Cvičení – geograficky distribuované skupiny automatického převzetí služeb při selhání se škálováním pro čtení

Dokončeno

Seznámili jste se s geografickou replikací a skupinami automatického převzetí služeb při selhání. V tomto cvičení nakonfigurujete skupiny pro automatické převzetí služeb při selhání pro databázi Azure SQL. Potom iniciujete převzetí služeb při selhání a zkontrolujete výsledky.

Skupiny automatického převzetí služeb při selhání v Azure SQL

Pokud chcete nakonfigurovat skupiny automatického převzetí služeb při selhání pro jednu nebo více databází a zobrazit výsledky, je nutné provést následující kroky:

  1. Nakonfigurujete prostředí.
  2. Vytvoříte prázdný server Azure SQL Database v oblasti převzetí služeb při selhání.
  3. Vytvoříte skupinu převzetí služeb při selhání mezi servery.
  4. Nakonfigurujete síť.
  5. Přidáte do skupiny převzetí služeb při selhání jednu nebo více databází.
  6. Nakonfigurujete si aplikace příkazového řádku.
  7. Získáte informace o spuštěných aplikacích.
  8. Inicializujete převzetí služeb při selhání.
  9. Provedete navrácení služeb po obnovení.

Toto cvičení vás provede konfigurací skupin automatického převzetí služeb při selhání pro vaši databázi AdventureWorks. Následně použijete jednoduchou aplikaci příkazového řádku, abyste pochopili, kde dochází ke čtení a zápisu, a uvědomili si důležitost logiky opakování v aplikacích. Nakonec si vyzkoušíte zajímavé cvičení, ve kterém zjistíte, kolik replik pro čtení, které mají také skupinu automatického převzetí služeb při selhání, je přidruženo k databázi úrovně služeb Pro důležité obchodní informace.

Konfigurace prostředí

  1. Zkopírujte následující kód do poznámkového bloku nebo jiného textového editoru. Zadejte své údaje. Zadejte heslo pro ověřování SQL. Do $drLocation zadejte oblast, do které chcete umístit svou skupinu převzetí služeb při selhání. V ideálním případě zvolte oblast spárovanou s oblastí aktuálního serveru. Můžete se podívat do seznamu spárovaných oblastí. Přinejmenším se nemůže jednat o oblast, ve které je původní databáze. Nakonec zadejte IP adresu místního počítače. Pokud potřebujete určit IP adresu, otevřete v místním počítači prostředí PowerShell a spusťte příkaz (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content.

    # Add your info
    $password = "password"
    $drLocation = "westus2"
    $ipAddress = "xx.xx.xx.xx"
    
  2. Spusťte aktualizovaný příkaz v Azure Cloud Shellu (na pravé straně této stránky).

  3. V Azure Cloud Shellu spusťte tento skript, kterým nakonfigurujete proměnné pro následující kroky:

    $admin = "cloudadmin"
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like <rgn>Sandbox resource group name</rgn>
    $location = $resourceGroup.Location
    $resourceGroup = $resourceGroup.ResourceGroupName
    $database = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    $drServer = "$($server)-dr"
    $failoverGroup = "$($server)-fg"
    $firewallRule = "AllowMyIp"
    Write-Host "Variables Received"
    
  4. V oblasti převzetí služeb při selhání vytvořte prázdný server Azure SQL Database tak, že v Azure Cloud Shellu spustíte tento skript:

    # Create a backup server in the failover region
    New-AzSqlServer -ResourceGroupName $resourceGroup `
        -ServerName $drServer `
        -Location $drLocation `
        -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential `
        -ArgumentList $admin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
    Write-Host "New Azure SQL Database logical server Created in different region"
    
  5. Vytvořte skupinu převzetí služeb při selhání mezi servery. Uděláte to spuštěním tohoto skriptu v Azure Cloud Shellu:

    # Create a failover group between the servers
    New-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -PartnerServerName $drServer `
        -FailoverGroupName $failoverGroup 
    Write-Host "New auto-failover group created between the two Azure SQL Database logical servers"
    
  6. Nakonfigurujte síť spuštěním tohoto skriptu v Azure Cloud Shellu:

    # Add a firewall rule that gives your VM access to the new server
    New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroup `
        -ServerName $drServer `
        -FirewallRuleName $firewallRule `
        -StartIpAddress $ipAddress `
        -EndIpAddress $ipAddress;
    

    Pro ilustraci skupin s automatickým převzetím služeb při selhání je toto nastavení sítě dostatečné. Liší se ale mírně od nastavení v podnikovém prostředí. V podnikovém prostředí bude počítač, který potřebuje přístup, pravděpodobně představovat sada prostředků, které tvoří určitý typ aplikace. Pokud dojde k převzetí služeb při selhání vaší databáze, bude vhodné převzít také služby, virtuální počítače nebo jiné prostředky do nové oblasti. Obě sady prostředků budou potřebovat přístup k prostředkům, serverům a databázím v jiné oblasti. Uděláte to pomocí partnerského vztahu virtuální sítě, propojení dvou virtuálních sítí, nebo potenciálně pomocí jiného řešení (například ExpressRoute). Záleží na vašem scénáři.

  7. Do skupiny převzetí služeb při selhání přidejte jednu nebo více databází spuštěním tohoto skriptu v Azure Cloud Shellu:

    # Add the database or databases to the failover group
    Get-AzSqlDatabase -ResourceGroupName $resourceGroup `
        -ServerName $server -DatabaseName $database | `
        Add-AzSqlDatabaseToFailoverGroup -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -FailoverGroupName $failoverGroup
    Write-Host "AdventureWorks database added to the auto-failover group"
    

    Spuštění tohoto skriptu bude chvíli trvat. Provádíte obnovení databáze v jiné oblasti, která zahrnuje kopírování dat z původní oblasti do oblasti zotavení po havárii. Můžete pokračovat kroky v následující části a potom se sem vrátit a zkontrolovat, jestli se tento skript dokončil.

Právě jste dokončili nasazení a konfiguraci skupiny automatického převzetí služeb při selhání pro vaši databázi AdventureWorks.

Konfigurace aplikací příkazového řádku

V této části použijete dvě úlohy ostress, pomocí kterých zkontrolujete Updateability (zda je databáze ve stavu ReadWrite nebo ReadOnly) vašeho primárního a sekundárního serveru ve skupině převzetí služeb při selhání. Cílem tohoto scénáře je simulovat aplikaci, ve které máte úlohy čtení a zápisu.

  1. Otevřete dvě samostatná okna příkazového řádku. Nastavte si okna tak, abyste viděli toto okno (prohlížeč) a obě okna příkazového řádku.

  2. V obou oknech příkazového řádku je potřeba přejít do složky Availability (Dostupnost) jako v předchozích cvičeních. Můžete použít například tento příkaz:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    
  3. První okno příkazového řádku použijete ke kontrole stavu vašeho primárního serveru ve skupině převzetí služeb při selhání, kterou jste vytvořili. Spusťte tento příkaz a použijte název svého serveru a heslo:

    .\ostress.exe -S"<server-name>-fg.database.windows.net" -Q"SELECT DATABASEPROPERTYEX(DB_NAME(),'Updateability')" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r5000 -oprimary
    

    Poznámka:

    U skupin s automatickým převzetím služeb při selhání se připojíte k názvu skupiny převzetí služeb při selhání, což je abstrakce databáze.

  4. Druhé okno příkazového řádku použijete ke kontrole stavu vašeho sekundárního serveru ve skupině převzetí služeb při selhání, kterou jste vytvořili. Spusťte tento příkaz a použijte název svého serveru a heslo:

    ostress.exe -S"<server-name>-fg.secondary.database.windows.net" -Q"SELECT DATABASEPROPERTYEX(DB_NAME(),'Updateability')" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r5000 -osecondary
    

Výsledek prvního příkazu by měl být READ_WRITE, protože zkontroluje primární server skupiny převzetí služeb při selhání a neicializovali jste žádné převzetí služeb při selhání.

Výsledek druhého příkazu by měl být READ_ONLY, protože kontroluje zotavení po havárii nebo sekundární server, který jste nakonfigurovali. V každém okamžiku by mělo být možné zapisovat vždy jenom z jednoho ze serverů.

V dalších krocích se dozvíte, co se stane s oběma servery, když dojde k převzetí služeb při selhání.

Iniciování převzetí služeb při selhání a zobrazení výsledků

  1. Pomocí terminálu Azure Cloud Shell na pravé straně této stránky zkontrolujte stav sekundárního serveru:

    (Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup `
        -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
    

    Výsledek vám ukáže, jestli se sekundární server ve skupině automatického převzetí služeb při selhání používá jako primární nebo sekundární databáze.

  2. Nyní můžete zjistit, co se stane, když dojde k převzetí služeb při selhání. Iniciujte ruční převzetí služeb při selhání zadáním těchto příkazů Azure PowerShellu do terminálu Azure Cloud Shellu:

    Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup `
     -ServerName $drServer -FailoverGroupName $failoverGroup
    

    Když dojde k převzetí služeb při selhání, můžete si všimnout, že se připojení na chvíli zahodí, ale protože aplikace se bude opakovat, aplikace se úplně nezdaří. Po dokončení převzetí služeb při selhání je zřejmé, že se výsledky READ_WRITE a READ_ONLY obnoví a nemění se.

    Jednou z výhod skupin automatického převzetí služeb při selhání v Azure SQL Database a Azure SQL Managed Instance je, že po převzetí služeb při selhání nemusíte aktualizovat připojovací řetězce. Nadále se připojujete k primární databázi (<failover-group>.database.windows.net) pro úlohy zápisu a k sekundární databázi (<failover-group>.secondary.database.windows.net) pro úlohy čtení. Azure se postará o nasměrování do příslušné databáze v příslušné oblasti/serveru.

  3. Zkontrolujte stav sekundárního serveru spuštěním tohoto skriptu v Azure Cloud Shellu:

    (Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup `
        -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
    

    Tento server by měl teď mít primární roli.

  4. Vraťte služby po obnovení zpět spuštěním tohoto skriptu v Azure Cloud Shellu:

    Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup `
     -ServerName $server -FailoverGroupName $failoverGroup
    
  5. Nakonec můžete znovu zkontrolovat stav sekundárního serveru. Spusťte tento skript v Azure Cloud Shellu:

    (Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup `
        -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
    
  6. Teď můžete zavřít obě okna příkazového řádku a maximalizovat okno prohlížeče se stránkou Microsoft Learn.

V tomto cvičení jste zjistili, jak nasadit a nakonfigurovat skupiny automatického převzetí služeb při selhání. Zjistili jste také, co to znamená z pohledu aplikací. Skupiny automatického převzetí služeb při selhání jsou jenom jedním ze způsobů, jak vylepšit dostupnost a škálování čtení v Azure SQL.