Упражнение. Геораспределенные группы автоматической отработки отказа с поддержкой масштабирование для чтения
На предыдущем уроке вы узнали о георепликации и группах автоматической отработки отказа. В этом упражнении вы настроите группы автоматической отработки отказа для базы данных SQL Azure. Вы запустите отработку отказа и просмотрите результаты.
Группы автоматической отработки отказа в SQL Azure
Чтобы настроить группы автоматической отработки отказа для одной или нескольких баз данных и просмотреть результаты, необходимо выполнить следующие действия:
- Настройка среды.
- Создание пустого сервера базы данных SQL Azure в регионе отработки отказа.
- Создание группы отработки отказа между серверами.
- Настройте сеть.
- Добавление одной или нескольких баз данных в группу отработки отказа.
- Настройка приложений командной строки.
- Знакомство с работающими приложениями.
- Запуск отработки отказа.
- Восстановление размещения.
В этом упражнении описано, как настроить группы автоматической отработки отказа для базы данных AdventureWorks. Затем вы воспользуетесь простым приложением командной строки, чтобы понять, где происходит чтение и запись, и осознать важность логики повторных попыток в приложениях. Наконец, вы продолжите выполнять упражнение, чтобы определить, сколько реплик чтения связано с критически важной для бизнеса базой данных, которая также имеет группу автоматической отработки отказа.
Настройка среды
Скопируйте следующий код в Блокнот или другой текстовый редактор. Укажите сведения. Добавьте свой пароль проверки подлинности SQL. Для
$drLocation
укажите регион, в котором должна находиться группа отработки отказа. В идеале выберите регион, который связан с регионом текущего сервера. Ознакомьтесь со списком пар регионов. Как минимум, это не может быть тот же регион, где находится исходная база данных. Наконец, добавьте IP-адрес локального компьютера. Если необходимо определить IP-адрес, откройте PowerShell на локальном компьютере и запустите(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
.# Add your info $password = "password" $drLocation = "westus2" $ipAddress = "xx.xx.xx.xx"
Выполните обновленную команду в Azure Cloud Shell в правой части этой страницы.
Запустите сценарий в Azure Cloud Shell, чтобы настроить переменные для выполнения следующих действий:
$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"
Создайте пустой сервер базы данных SQL Azure в регионе отработки отказа, выполнив этот сценарий в 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"
Создайте группу отработки отказа между серверами, выполнив этот сценарий в 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"
Настройте сеть, выполнив этот сценарий в 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;
Для иллюстрации групп автоматической отработки отказа этой настройки сети будет достаточно. Это немного отличается от того, что потребовалось бы сделать в корпоративной среде. В корпоративной среде компьютер, которому необходим доступ, скорее всего, будет набором ресурсов, составляющих некий тип приложения. В случае отработки отказа базы данных, возможно, потребуется также выполнить отработку отказа приложения, виртуальных машин или других ресурсов в новый регион. Обоим наборам ресурсов потребуется доступ к ресурсам, серверам и базам данных в другом регионе. Для этого можно использовать пиринг между виртуальными сетями, подключения между виртуальными сетями или, возможно, что-то еще (например, Azure ExpressRoute). Это зависит от вашего сценария.
Добавьте одну или несколько баз данных в группу отработки отказа, запустив следующий сценарий в 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"
Выполнение этого скрипта займет некоторое время. Выполняется восстановление базы данных в другом регионе, что включает в себя копирование данных из исходного региона в регион аварийного восстановления. Вы можете выполнить действия, описанные в следующем разделе, а затем проверить, завершился ли этот сценарий.
Вы выполнили развертывание и настройку группы автоматической отработки отказа для базы данных AdventureWorks.
Настройка приложений командной строки
В этом разделе вы будете использовать две рабочие нагрузки ostress для проверки Updateability
(находится ли база данных в состоянии ReadWrite
или ReadOnly
) сервера-источника и сервера-получателя в группе отработки отказа. Этот сценарий предназначен для имитации приложения, в котором имеются рабочие нагрузки чтения и записи.
Откройте два отдельных окна командной строки. Расположите окна так, чтобы на экране размещалось это окно (браузер) и оба окна командной строки.
В обоих окнах командной строки перейдите в папку "Availability", как в предыдущих упражнениях. Например, можно использовать следующую команду:
cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
Первое окно командной строки будет использоваться для проверки состояния сервера-источника в созданной группе отработки отказа. Выполните эту команду, используя имя сервера и пароль:
.\ostress.exe -S"<server-name>-fg.database.windows.net" -Q"SELECT DATABASEPROPERTYEX(DB_NAME(),'Updateability')" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r5000 -oprimary
Примечание.
С использованием групп автоматической отработки отказа вы подключаетесь к имени группы отработки отказа, которое является абстракцией для базы данных.
Второе окно командной строки будет использоваться для проверки состояния сервера-получателя в созданной группе отработки отказа. Выполните эту команду, используя имя сервера и пароль:
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
Результат первой команды должен быть READ_WRITE
, так как он проверяет основной сервер группы отработки отказа и не инициировал отработку отказа.
Результат второй команды должен быть READ_ONLY
, так как он проверяет настроенное аварийное восстановление или дополнительный сервер. В любой момент времени вы должны иметь возможность производить запись только с одного сервера.
В следующих шагах рассматривается, что происходит с обоими серверами при отработке отказа.
Инициация отработки отказа и просмотр результатов
Используйте терминал Azure Cloud Shell справа от этой страницы, чтобы проверить состояние вторичного сервера:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
В результате вы узнаете, используется ли сервер-получатель в группе автоматической отработки отказа в качестве базы данных-источника или базы данных-получателя.
Теперь вы видите, что происходит при отработке отказа. Запустите отработку отказа вручную, введя следующие команды Azure PowerShell в терминале Azure Cloud Shell:
Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup ` -ServerName $drServer -FailoverGroupName $failoverGroup
Когда происходит отработка отказа, вы можете заметить, что подключения удаляются в течение некоторого времени, но так как приложение продолжает повторную попытку, приложение не завершается сбоем. После завершения отработки отказа вы можете заметить, что результаты
READ_WRITE
иREAD_ONLY
возобновляются и не меняются.Одним из преимуществ групп автоматической отработки отказа в базе данных SQL Azure и Управляемом экземпляре SQL Azure является отсутствие необходимости обновлять строки подключения после отработки отказа. Вы продолжаете подключаться к серверу-источнику (
<failover-group>.database.windows.net
) для рабочих нагрузок записи и к серверу-получателю (<failover-group>.secondary.database.windows.net
) для рабочих нагрузок чтения. Azure осуществляет маршрутизацию в соответствующую базу данных в соответствующем регионе или сервере.Проверьте состояние сервера-получателя, выполнив этот сценарий в Azure Cloud Shell:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
Теперь этот сервер должен стать источником.
Произведите отработку отказа с помощью этого сценария в Azure Cloud Shell:
Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $resourceGroup ` -ServerName $server -FailoverGroupName $failoverGroup
Наконец, можно еще раз проверить состояние сервера-получателя. Запустите этот сценарий в Azure Cloud Shell:
(Get-AzSqlDatabaseFailoverGroup -FailoverGroupName $failoverGroup ` -ResourceGroupName $resourceGroup -ServerName $drServer).ReplicationRole
Теперь можно закрыть оба окна командной строки и развернуть окно браузера Microsoft Learn.
В этом упражнении вы узнали, как развертывать и настраивать группы автоматической отработки отказа. Вы также узнали, что это означает с точки зрения приложения. Группы автоматической отработки отказа — это всего лишь один из способов обеспечения доступности и масштабирования для чтения в SQL Azure.