Руководство по Моделирование сбоя при чтении данных в основном регионе
Это руководство представляет собой вторую часть цикла. Из него вы узнаете о преимуществах хранилища, геоизбыточного между зонами, с доступом на чтение (RA-GZRS) при имитации сбоя.
Чтобы сымитировать сбой, вы можете выполнить статическую маршрутизацию или использовать Fiddler. Оба метода помогут сымитировать сбой при выполнении запросов к основной конечной точке учетной записи хранения RA-GZRS, чтобы приложение считывало данные из дополнительной конечной точки.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Из второй части цикла вы узнаете, как выполнять следующие задачи:
- запуск и приостановка приложения;
- Имитация сбоя с помощью недопустимого статического маршрута или Fiddler
- имитация восстановления основной конечной точки.
Предварительные требования
Прежде чем начать работу с этим руководством, завершите предыдущее руководство: Обеспечение высокой доступности данных приложения в службе хранилище Azure.
Чтобы сымитировать сбой с помощью статической маршрутизации, необходимо использовать командную строку с повышенными привилегиями.
Для имитации сбоя с помощью Fiddler, сначала нужно его скачать и установить
Имитирование сбоя с помощью недопустимого статического маршрута
Вы можете создать недопустимый статический маршрут для всех запросов к основной конечной точке учетной записи хранения RA-GZRS. В этом руководстве локальный узел используется в качестве шлюза для направления запросов в учетную запись хранения. Использование локального узла в качестве шлюза приводит к тому, что все запросы к основной конечной точке учетной записи хранения возвращаются обратно в узел, что в результате приводит к сбою запроса. Выполните следующие действия, чтобы имитировать сбой и восстановление основной конечной точки с использованием недопустимого статического маршрута.
Запуск и приостановка приложения
Используйте инструкции из предыдущего руководства, чтобы запустить пример и скачать тестовый файл, подтверждая, что он поступает из основного хранилища. В зависимости от целевой платформы вы можете вручную приостановить пример или ждать подсказку.
Имитация сбоя
Пока приложение приостановлено, откройте командную строку в Windows от имени администратора или запустите терминал с правами привилегированного пользователя в Linux.
Получите сведения о домене основной конечной точки учетной записи хранения, введя следующую команду в командной строке или терминале, заменив STORAGEACCOUNTNAME
именем вашей учетной записи хранения.
nslookup STORAGEACCOUNTNAME.blob.core.windows.net
Скопируйте IP-адрес учетной записи хранения в текстовый редактор для последующего использования.
Чтобы получить IP-адрес локального узла, введите ipconfig
в командной строке Windows или ifconfig
— в терминале Linux.
Чтобы добавить статический маршрут для узла назначения, введите следующую команду в командной строке Windows или терминале Linux, заменив <destination_ip>
на IP-адрес своей учетной записи хранения, а <gateway_ip>
на IP-адрес локального хоста.
Linux
sudo route add <destination_ip> gw <gateway_ip>
Windows
route add <destination_ip> <gateway_ip>
В окне с запущенным примером возобновите работу приложения или нажмите соответствующую клавишу, чтобы скачать пример файла, и подтвердите, что он поступил из вторичного хранилища. Затем можно снова приостановить пример или ждать подсказку.
имитация восстановления основной конечной точки.
Для повторной имитации функционирования первичной конечной точки удалите ее статический маршрут из таблицы маршрутизации. Таким образом все запросы к основной конечной точке смогут направляться через шлюз по умолчанию. Введите следующую команду в командной строке Windows или терминале Linux.
Linux
sudo route del <destination_ip> gw <gateway_ip>
Windows
route delete <destination_ip>
Затем вы можете возобновить работу приложения или нажать соответствующую клавишу, чтобы снова скачать пример файла, на этот раз подтвердив, что он снова поступил из основного хранилища.
Имитация сбоя с Fiddler
Для имитации сбоя с помощью Fiddler нужно внедрить информирующий о сбое ответ на запросы к основной конечной точке учетной записи хранения RA-GZRS.
Следующие действия объясняют, как имитировать сбой и восстановление основной конечной точки с помощью Fiddler.
Запуск Fiddler
Откройте Fiddler, выберите Правила и Настроить правила.
Средство Fiddler ScriptEditor запускает и отображает файл SampleRules.js. Этот файл используется для настройки Fiddler.
Вставьте следующий пример кода в функцию OnBeforeResponse
, заменив STORAGEACCOUNTNAME
именем вашей учетной записи хранения. В зависимости от примера, возможно, также потребуется заменить HelloWorld
именем скачиваемого тестового файла или удалить эту часть условия, если она не применяется. Новый код закомментирован, чтобы гарантировать, что он не запустится сразу.
Внеся изменения, сохраните их, выбрав Файл > Сохранить. Не закрывайте окно ScriptEditor для использования в следующих шагах.
/*
// Simulate data center failure
// After it is successfully downloading the blob, pause the code in the sample,
// uncomment these lines of script, and save the script.
// It will intercept the (probably successful) responses and send back a 503 error.
// When you're ready to stop sending back errors, comment these lines of script out again
// and save the changes.
if ((oSession.hostname == "STORAGEACCOUNTNAME.blob.core.windows.net")
// depending on the sample, you may need to modify or remove the line below
&& (oSession.PathAndQuery.Contains("HelloWorld"))) {
oSession.responseCode = 503;
}
*/
Запуск и приостановка приложения
Используйте инструкции из предыдущего руководства, чтобы запустить пример и скачать тестовый файл, подтверждая, что он поступает из основного хранилища. В зависимости от целевой платформы вы можете вручную приостановить пример или ждать подсказку.
Имитация сбоя
Когда приложение приостановлено, вернитесь к Fiddler и раскомментируйте пользовательское правило, сохраненное в функции OnBeforeResponse
. Чтобы правило вступило в силу выберите Файл и Сохранить для сохранения изменений. Этот код отслеживает запросы к учетной записи хранения RA-GZRS и возвращает код ответа 503 - Service Unavailable
, если путь содержит имя примера файла.
В окне с запущенным примером возобновите работу приложения или нажмите соответствующую клавишу, чтобы скачать пример файла, и подтвердите, что он поступил из вторичного хранилища. Затем можно снова приостановить пример или ждать подсказку.
имитация восстановления основной конечной точки.
В Fiddler удалите или закомментируйте настраиваемое правило. Чтобы убедиться, что правило больше не действует, выберите Файл и Сохранить.
В окне с запущенным примером возобновите работу приложения или нажмите соответствующую клавишу, чтобы скачать пример файла, и подтвердите, что он повторно поступил из первичного хранилища. Затем можно выйти из примера.
Дальнейшие действия
Во второй части этой серии руководств вы научились имитировать сбой для тестирования геоизбыточного хранилища с доступом на чтение.
Дополнительные сведения о работе хранилища RA-GZRS и связанных рисках см. в статье Разработка высокодоступных приложений с использованием RA-GZRS.