Oefening: geografisch gedistribueerde groepen voor automatische failover met lezen-schalen
In de vorige les hebt u geleerd over geo-replicatie en groepen voor automatische failover. In deze oefening gaat u groepen voor automatische failover configureren voor uw Azure SQL-database. U initieert vervolgens een failover en bekijkt de resultaten.
Groepen voor automatische failover in Azure SQL
Om groepen voor automatische failover te configureren voor een of meer databases en de resultaten weer te geven, moet u deze stappen voltooien:
- Configureer de omgeving.
- Maak een lege Azure SQL Database-server in de failover-regio.
- Maak een failover-groep tussen de servers.
- Configureer het netwerk.
- Voeg een of meer databases toe aan de failover-groep.
- Configureer de opdrachtprompttoepassingen.
- Begrijp wat de toepassingen doen.
- Initieer een failover.
- Voer een failback uit.
In deze oefening wordt u begeleid bij het configureren van groepen voor automatische failover voor uw AdventureWorks-database. U gaat een eenvoudige opdrachtregeltoepassing gebruiken om te begrijpen waar lees-en schrijfbewerkingen plaatsvinden, evenals wat het belang is van logica voor opnieuw proberen in uw toepassingen. Ter afsluiting gaan we een oefening doen om te bepalen hoeveel leesreplica's er zijn gekoppeld aan een Bedrijfskritieke database die ook een groep voor automatische failover heeft.
De omgeving configureren
Kopieer de volgende code naar Kladblok of een andere teksteditor. Geef uw gegevens op. Voeg uw wachtwoord voor SQL-verificatie toe. Geef voor
$drLocation
de gewenste regio op voor de failovergroep. Kies idealiter een regio die is gekoppeld aan de regio van uw huidige server. Hiervoor kunt u de lijst met gekoppelde regio's raadplegen. Een minimale vereiste is dat de regio niet dezelfde regio kan zijn waarin de oorspronkelijke database zich bevindt. Ten slotte voegt u het IP-adres van uw lokale computer toe. Als u het IP-adres moet bepalen, moet u PowerShell openen op de lokale computer en(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
uitvoeren.# Add your info $password = "password" $drLocation = "westus2" $ipAddress = "xx.xx.xx.xx"
Voer de bijgewerkte opdracht uit in Azure Cloud Shell (aan de rechterkant van deze pagina).
Voer dit script uit in Azure Cloud Shell om uw variabelen te configureren voor de volgende stappen:
$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"
Maak een lege Azure SQL Database-server in de failover-regio door dit script in Azure Cloud Shell uit te voeren:
# 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"
Maak een failovergroep tussen de servers door dit script uit te voeren in 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"
Configureer het netwerk door dit script in Azure Cloud Shell uit te voeren:
# 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;
Om groepen voor automatische failover te demonstreren, is deze netwerkinstallatie afdoende. Dit wijkt enigszins af van wat u zou doen in een bedrijfsomgeving. In een bedrijfsomgeving is de computer die toegang nodig heeft, hoogstwaarschijnlijk een set resources die deel uitmaken van een bepaald type toepassing. Als er een failover voor uw database wordt uitgevoerd, wilt u misschien ook een failover naar de nieuwe regio uitvoeren voor uw toepassing, VM's of andere resources. Beide sets resources moeten toegang hebben tot de resources, servers en databases in de andere regio. Dit kunt u doen via peering van virtuele netwerken, verbindingen tussen virtuele netwerken of misschien nog iets anders (zoals Azure ExpressRoute). Dit hangt af van uw scenario.
Voeg een of meer databases toe aan de failovergroep door dit script in Azure Cloud Shell uit te voeren:
# 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"
Het duurt even voordat dit script is uitgevoerd. U herstelt de database in de andere regio, waarbij u de gegevens van de oorspronkelijke regio naar de regio voor herstel na noodgeval kopieert. U kunt de stappen in de volgende sectie gebruiken en vervolgens opnieuw controleren of dit script is voltooid.
U hebt nu een groep voor automatische failover geïmplementeerd en geconfigureerd voor uw AdventureWorks-database.
De opdrachtprompttoepassingen configureren
In dit gedeelte gebruikt u twee ostress-workloads om de Updateability
te controleren (of een database de status ReadWrite
of ReadOnly
heeft) van de primaire en secundaire servers in uw failovergroep. Dit scenario is bedoeld voor het simuleren van een toepassing met werkbelastingen voor lezen en schrijven.
Open twee afzonderlijke opdrachtpromptvensters. Stel de vensters zo in dat u dit venster (de browser) en beide opdrachtpromptvensters kunt zien.
In beide opdrachtpromptvensters gaat u naar de map Beschikbaarheid, zoals u ook in de vorige oefeningen hebt gedaan. U kunt bijvoorbeeld deze opdracht gebruiken:
cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
U gebruikt het eerste opdrachtpromptvenster om de status van de primaire server te controleren in de failovergroep die u hebt gemaakt. Voer deze opdracht uit en gebruik hiervoor uw servernaam en wachtwoord:
.\ostress.exe -S"<server-name>-fg.database.windows.net" -Q"SELECT DATABASEPROPERTYEX(DB_NAME(),'Updateability')" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r5000 -oprimary
Notitie
Met groepen voor automatische failover maakt u verbinding met de naam van de failovergroep. Deze is de abstractie voor de database.
U gebruikt het tweede opdrachtpromptvenster om de status van de secundaire server te controleren in de failovergroep die u hebt gemaakt. Voer deze opdracht uit en gebruik hiervoor uw servernaam en wachtwoord:
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
Het resultaat van de eerste opdracht moet zijn READ_WRITE
, omdat hiermee de primaire failovergroepserver wordt gecontroleerd en u geen failovers hebt gestart.
Het resultaat van de tweede opdracht moet zijn READ_ONLY
, omdat hiermee het herstel na noodgevallen of de secundaire server wordt gecontroleerd die u hebt geconfigureerd. U moet op elk gewenst moment alleen kunnen schrijven vanaf een van de servers.
In de volgende stappen ziet u wat er gebeurt met beide servers wanneer er een failover optreedt.
Initieer vervolgens een failover en bekijk de resultaten
Gebruik de Azure Cloud Shell-terminal aan de rechterkant van deze pagina om de status van de secundaire server te controleren:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
Uit het resultaat blijkt of de secundaire server in de groep voor automatische failover als de primaire of secundaire database wordt gebruikt.
U ziet nu wat er gebeurt wanneer een failover plaatsvindt. Start een handmatige failover door deze Azure PowerShell-opdrachten in te voeren in de Azure Cloud Shell-terminal:
Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup ` -ServerName $drServer -FailoverGroupName $failoverGroup
Wanneer de failover optreedt, merkt u mogelijk dat de verbindingen even worden verbroken, maar omdat de app steeds opnieuw probeert, mislukt de toepassing niet volledig. Nadat de failover is voltooid, ziet u dat de resultaten voor
READ_WRITE
enREAD_ONLY
worden hervat en dat ze niet veranderen.Een van de voordelen van groepen voor automatische failover in Azure SQL Database en Azure SQL Managed Instance is dat u de verbindingsreeksen niet hoeft bij te werken na een failover. U kunt verbinding blijven maken met de primaire server (
<failover-group>.database.windows.net
) voor schrijfworkloads en de secundaire server (<failover-group>.secondary.database.windows.net
) voor leesworkloads. Azure zorgt voor routering naar de juiste database in de bijbehorende regio/server.Controleer de status van de secundaire server door dit script in Azure Cloud Shell uit te voeren:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
Deze server moet nu de primaire rol hebben.
Voer een failback uit door dit script uit te voeren in Azure Cloud Shell:
Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup ` -ServerName $server -FailoverGroupName $failoverGroup
Ten slotte kunt u de status van de secundaire server nogmaals controleren. Voer dit script uit in Azure Cloud Shell:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
U kunt nu beide opdrachtpromptvensters sluiten en het Microsoft Learn-browservenster maximaliseren.
In deze oefening hebt u geleerd hoe u groepen voor automatische failover implementeert en configureert. U hebt ook geleerd wat dit inhoudt vanuit een toepassingsperspectief. Groepen voor automatische failover zijn slechts één van meerdere manieren om meer te doen met beschikbaarheid en leesschaal in Azure SQL.