Упражнение. Высокая доступность общего назначения
На предыдущем уроке вы узнали об архитектуре высокой доступности в SQL Azure. В этом упражнении вы узнаете, как уровень общего назначения База данных SQL Azure работает аналогично локальному экземпляру отказоустойчивого кластера. Эта функция может отнимать много времени или сил, тогда как в SQL Azure уже есть все необходимое.
В этом упражнении будет использоваться средство ostress, которое вы могли использовать в предыдущем модуле для создания рабочей нагрузки. Затем вы инициируете отработку отказа с помощью модуля Azure PowerShell в Azure Cloud Shell. Наконец, вы увидите результат отработки отказа в рабочей нагрузке ostress.
Базовая высокая доступность в SQL Azure — уровень служб общего назначения
В этом упражнении вы выполните следующие действия.
- Запуск рабочей нагрузки ostress.
- Подтверждение правильности настройки среды.
- Запуск отработки отказа с помощью базы данных SQL Azure.
- Просмотр результатов в ostress.
- Поиск признаков отработки отказа на портале.
Запуск рабочей нагрузки ostress
Сначала необходимо создать длительную рабочую нагрузку. Она позволяет наблюдать, как отработка отказа влияет на возможность чтения и записи данных и как долго выполняется отработка отказа для базы данных SQL Azure на уровне служб общего назначения. Вы будете использовать ostress.
Откройте новое окно командной строки на локальном компьютере. Используйте
cd
, чтобы перейти в каталог с модулем доступности в репозитории, который вы клонировали или скачали ранее. Например, можно использовать следующую команду:cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
Исполняемый файл ostress находится в этой папке. (Это мало.) Рабочая нагрузка ostress подключается и выполняет простой запрос 50 000 раз.
Используйте следующий скрипт ostress для запуска рабочей нагрузки. Замените
serverName
именем логического сервера базы данных Azure SQL. заменивpassword
собственным паролем;.\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
Если рабочая нагрузка выполняется правильно, вы должны увидеть результат запроса
847
, многократно отображаемый в окне командной строки.Если вы хотите прервать выполнение рабочей нагрузки ostress до ее завершения, нажмите CTRL+C в окне терминала.
Если вы снова захотите запустить эту рабочую нагрузку, просто выполните команду еще раз.
Использование PowerShell в Azure Cloud Shell для инициации отработки отказа и отслеживания результатов
В терминале Azure Cloud Shell справа на этой странице выполните указанную ниже команду PowerShell, чтобы настроить среду:
$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
Настройте окна так, чтобы видеть одновременно этот браузер и окно командной строки.
Выполните этот код в терминале Azure Cloud Shell:
# Create a failover Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup ` -ServerName $server ` -DatabaseName $database
Теперь просмотрите результаты в ostress в окне командной строки. Во время выполнения этой команды нужно следить за изменениями, возникающими в окне командной строки. Вы заметите, что при отработке отказа база данных будет недоступна. Отработка отказа завершится через 30 секунд, и вы увидите, что рабочая нагрузка снова будет успешно запущена. Логика повторных попыток в приложении важна, так как если Azure решает (по ряду причин) выполнить отработку отказа, нежелательно, чтобы ваше приложение аварийно завершило работу или перестало работать на время, превышающее длительность отработки отказа.
Такая возможность отработки отказа по команде может быть полезной в некоторых сценариях. Обратите внимание, что служба запрещает выполнять эту операцию слишком часто. Выполните указанную ниже команду, чтобы попытаться запустить еще одну отработку отказа:
# Create a failover again Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup ` -ServerName $server ` -DatabaseName $database
Вы увидите ошибку следующего вида:
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.'
Прервите рабочую нагрузку в окне командной строки, выбрав окно и нажав CTRL+C. Окно можно оставить открытым, так как вы будете использовать ту же рабочую нагрузку в следующем упражнении.
Как проверить, выполнена ли отработка отказа? На данный момент однозначного сообщения "Отработка отказа выполнена" нет, но можно проверить сведения в разделе "Работоспособность ресурсов".
На портале Azure перейдите в базу данных SQL Azure. В области слева в разделе "Справка" выберите Работоспособность ресурсов. Через 5–15 минут после отработки отказа может появиться событие работоспособности, аналогичное показанному на следующем снимке экрана. Это событие может указывать на несколько сценариев, один из которых заключается в том, что что-то случилось и служба Azure решила выполнить отработку отказа.