Ćwiczenie — rozproszone geograficznie grupy automatycznego trybu failover ze skalowaniem odczytu

Ukończone

W poprzedniej lekcji przedstawiono informacje na temat replikacji geograficznej i grup automatycznego trybu failover. W tym ćwiczeniu skonfigurujesz grupy automatycznego trybu failover dla bazy danych usługi Azure SQL Database. Następnie zainicjujesz tryb failover i wyświetlisz wyniki.

Grupy automatycznego trybu failover w usłudze Azure SQL

Aby skonfigurować grupy automatycznego trybu failover dla co najmniej jednej bazy danych i wyświetlić wyniki, należy wykonać następujące czynności:

  1. Skonfiguruj środowisko.
  2. Utwórz pusty serwer usługi Azure SQL Database w regionie trybu failover.
  3. Utwórz grupę trybu failover między serwerami.
  4. Skonfiguruj sieć.
  5. Dodaj co najmniej jedną bazę danych do grupy trybu failover.
  6. Skonfiguruj aplikacje wiersza polecenia.
  7. Zapoznaj się z uruchomionymi aplikacjami.
  8. Zainicjuj pracę w trybie failover.
  9. Wykonaj powrót po awarii.

To ćwiczenie przeprowadzi Cię przez proces konfigurowania grup automatycznego trybu failover dla bazy danych AdventureWorks. Następnie użyjesz prostej aplikacji wiersza polecenia, aby zrozumieć, gdzie wystąpią operacje odczytu i zapisu, oraz poznać ważność logiki ponawiania w aplikacjach. Na koniec wykonasz zabawne ćwiczenie, aby określić liczbę replik do odczytu skojarzonych z bazą danych w warstwie Krytyczne dla działania firmy, która również ma grupę automatycznego trybu failover.

Konfigurowanie środowiska

  1. Skopiuj następujący kod do Notatnika lub innego edytora tekstu. Wprowadź swoje dane. Dodaj hasło uwierzytelniania SQL. Dla wartości $drLocation podaj region, w którym ma znajdować się grupa trybu failover. Najlepiej wybrać region sparowany z regionem bieżącego serwera. Istnieje możliwość sprawdzenia listy sparowanych regionów. Warunkiem podstawowym jest to, że nie może to być ten sam region, co region, w którym znajduje się oryginalna baza danych. Na koniec dodaj adres IP komputera lokalnego. Jeśli musisz określić adres IP, otwórz program PowerShell na komputerze lokalnym i uruchom polecenie (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content.

    # Add your info
    $password = "password"
    $drLocation = "westus2"
    $ipAddress = "xx.xx.xx.xx"
    
  2. Uruchom zaktualizowane polecenie w usłudze Azure Cloud Shell (przy prawej krawędzi tej strony).

  3. Uruchom ten skrypt w usłudze Azure Cloud Shell, aby skonfigurować zmienne, których użyjesz w kolejnych krokach:

    $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. Utwórz pusty serwer usługi SQL Database w regionie trybu failover, uruchamiając ten skrypt w usłudze Azure Cloud Shell:

    # 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. Utwórz grupę trybu failover między serwerami, uruchamiając następujący skrypt w usłudze Azure Cloud Shell:

    # 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. Skonfiguruj sieć, uruchamiając następujący skrypt w usłudze Azure Cloud Shell:

    # 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;
    

    W celu zilustrowania grup automatycznego trybu failover ta konfiguracja sieci jest wystarczająca. Przebiega to nieco inaczej w środowisku przedsiębiorstwa. W środowisku przedsiębiorstwa maszyna wymagająca dostępu będzie prawdopodobnie zestawem zasobów, z których składają się niektóre typy aplikacji. Jeśli baza danych zostanie przełączona w tryb failover, możesz również przełączyć aplikację, maszyny wirtualne lub inne zasoby do nowego regionu w trybie failover. Oba zestawy zasobów będą potrzebować dostępu do zasobów, serwerów i baz danych w tym drugim regionie. Aby to zrobić, można użyć komunikacji równorzędnej sieci wirtualnych, połączeń między sieciami wirtualnymi lub potencjalnie innego rozwiązania (na przykład usługi Azure ExpressRoute). Zależy to od twojego scenariusza.

  7. Dodaj co najmniej jedną bazę danych do grupy trybu failover, uruchamiając ten skrypt w usłudze Azure Cloud Shell:

    # 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"
    

    Uruchomienie tego skryptu zajmie trochę czasu. Wykonujesz przywracanie bazy danych w innym regionie, co obejmuje kopiowanie danych z regionu oryginalnego do regionu odzyskiwania po awarii. Możesz wykonać czynności opisane w następnej sekcji, a następnie sprawdzić, czy ten skrypt został ukończony.

Teraz zakończono wdrażanie i konfigurowanie grupy automatycznego trybu failover dla bazy danych AdventureWorks.

Konfigurowanie aplikacji wiersza polecenia

W tej sekcji użyjesz dwóch obciążeń narzędzia ostress w celu sprawdzenia Updateability (czy baza danych znajduje się w stanie ReadWrite czy ReadOnly) dla serwerów głównych i pomocniczych w grupie trybu failover. Ten scenariusz ma na celu symulowanie aplikacji, w której znajdują się obciążenia odczytu i zapisu.

  1. Otwórz dwa oddzielne okna wiersza polecenia. Skonfiguruj okna tak, aby można było wyświetlić to okno (przeglądarkę) i oba okna wiersza polecenia.

  2. W obu wierszach polecenia przejdź do folderu Availability, jak w poprzednich ćwiczeniach. Na przykład można użyć tego polecenia:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    
  3. Użyj pierwszego okna wiersza polecenia do sprawdzenia stanu serwera podstawowego w utworzonej grupie trybu failover. Uruchom to polecenie przy użyciu nazwy serwera i hasła:

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

    Uwaga

    Za pomocą grup automatycznego trybu failover możesz nawiązać połączenie z nazwą grupy trybu failover, która jest abstrakcją bazy danych.

  4. Użyj drugiego okna wiersza polecenia do sprawdzenia stanu serwera pomocniczego w utworzonej grupie trybu failover. Uruchom to polecenie przy użyciu nazwy serwera i hasła:

    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
    

Wynikiem pierwszego polecenia powinien być READ_WRITE, ponieważ sprawdza podstawowy serwer grupy trybu failover i nie zainicjowano żadnych trybów failover.

Wynikiem drugiego polecenia powinno być READ_ONLYpolecenie , ponieważ sprawdza skonfigurowane odzyskiwanie po awarii lub serwer pomocniczy. W danym momencie powinien być możliwy tylko zapis z jednego z serwerów.

W następnych krokach zobaczysz, co się dzieje z obydwoma serwerami w przypadku przejścia w tryb failover.

Inicjowanie trybu failover i wyświetlanie wyników

  1. Użyj terminalu usługi Azure Cloud Shell po prawej stronie, aby sprawdzić stan serwera pomocniczego:

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

    Dzięki wynikowi dowiesz się, czy serwer pomocniczy w grupie automatycznego trybu failover jest używany jako podstawowa lub pomocnicza baza danych.

  2. Teraz możesz zobaczyć, co się stanie w przypadku przejścia w tryb failover. Zainicjuj ręczną pracę awaryjną, wprowadzając następujące polecenia programu Azure PowerShell w terminalu usługi Azure Cloud Shell:

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

    Po przejściu w tryb failover możesz zauważyć, że połączenia są przerywane przez chwilę, ale ponieważ aplikacja ponawia próbę, aplikacja nie kończy się całkowicie niepowodzeniem. Po zakończeniu pracy w trybie failover zauważysz, że wyniki READ_WRITE i READ_ONLY zostały wznowione i nie zostały zmienione.

    Jedną z zalet grup automatycznego trybu failover w usługach Azure SQL Database i Azure SQL Managed Instance jest brak konieczności aktualizowania parametrów połączenia po przejściu w tryb failover. Możesz nadal łączyć się z serwerem podstawowym (<failover-group>.database.windows.net) w przypadku obciążeń zapisu i pomocniczym (<failover-group>.secondary.database.windows.net) w przypadku obciążeń odczytu. Platforma Azure dba o kierowanie ruchu do odpowiedniej bazy danych w odpowiednim regionie/serwerze.

  3. Sprawdź stan serwera pomocniczego, uruchamiając następujący skrypt w usłudze Azure Cloud Shell:

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

    Ten serwer powinien teraz znajdować się w roli podstawowej.

  4. Wykonaj powrót po awarii, uruchamiając następujący skrypt w usłudze Azure Cloud Shell:

    Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup `
     -ServerName $server -FailoverGroupName $failoverGroup
    
  5. Na koniec możesz ponownie sprawdzić stan serwera pomocniczego. Uruchom ten skrypt w usłudze Azure Cloud Shell:

    (Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup `
        -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
    
  6. Możesz teraz zamknąć oba okna wiersza polecenia i zmaksymalizować okno przeglądarki ze środowiskiem Microsoft Learn.

W tym ćwiczeniu przedstawiono sposób wdrażania i konfigurowania grup automatycznego trybu failover. Ponadto przedstawiono również, co to oznacza z perspektywy aplikacji. Grupy automatycznego trybu failover to tylko jeden ze sposobów zwiększania dostępności i skalowania odczytu w usłudze Azure SQL.