Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сводка
Узнайте, как диагностировать и устранять проблемы с сходством сеансов с шлюзом приложений Azure. Сохраняя пользователей на одном сервере серверной части, вы можете повысить производительность приложения.
Замечание
Используйте модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в разделе Install Azure PowerShell. Сведения о миграции в модуль Az PowerShell см. в статье Migrate Azure PowerShell из AzureRM в Az.
Обзор
Функция сопоставления сеансов на основе файлов cookie полезна для сохранения сеанса пользователя на одном сервере. С помощью файлов cookie, управляемых шлюзом приложений, Шлюз приложений направляет последующий трафик из сеанса пользователя на тот же сервер для обработки. Эта функция важна в случаях, когда состояние сеанса сохраняется локально на сервере для сеанса пользователя. Сходство сеансов также называется липкими сеансами.
Замечание
Шлюз приложений версии 1 использует файл cookie с именем ARRAffinity для перенаправления трафика к одному члену внутреннего пула. В Шлюзе приложений версии 2 этот файл cookie переименован в ApplicationGatewayAffinity. В целях этого документа ApplicationGatewayAffinity используется в качестве примера. ARRAffinity можно заменить, где это применимо для экземпляров Шлюза приложений версии 1.
Возможные причины проблем
Проблемы с поддержанием сеансовой аффинити на основе файлов cookie могут возникать по следующим причинам:
- Вы не включили настройку сопоставления на основе файлов cookie.
- Ваше приложение не может обрабатывать аффинность на основе cookie.
- Приложение использует сходство на основе cookie, но запросы по-прежнему отскакивают между серверами бэкенда.
Проверьте, включён ли параметр "Сходство на основе файлов cookie"
Проблемы с сходством сеансов могут возникнуть, если вы забыли включить параметр сопоставления на основе файлов cookie. Чтобы проверить, включена ли настройка сопоставления на основе файлов cookie на вкладке "Параметры серверной части" на портале Azure, выполните следующие действия.
Войдите на портал Azure.
В области навигации слева выберите "Все ресурсы". Выберите имя шлюза приложений в колонке "Все ресурсы ". Если выбранная подписка уже содержит несколько ресурсов, введите имя шлюза приложений в поле "Фильтр по имени..." , чтобы легко получить доступ к шлюзу приложений.
Перейдите на вкладку "Параметры серверной части " в разделе SETTINGS.
Выберите параметр серверной части. При добавлении параметра серверной части проверьте, включена ли привязка на основе файлов cookie.
Чтобы проверить, установлено ли значение CookieBasedAffinity на Enabled в разделе BackendHttpSettingsCollection, используйте один из следующих методов:
- Запустите Get-AzApplicationGatewayBackendHttpSetting в PowerShell.
- Просмотрите JSON-файл с помощью шаблона Azure Resource Manager.
"cookieBasedAffinity": "Enabled",
Приложение не может обрабатывать привязку на основе файлов cookie
Причина
Шлюз приложений может реализовать сеансовую привязку только с помощью куки.
Обходной путь
Если приложение не может обрабатывать сходство на основе файлов cookie, необходимо использовать внешнюю или внутреннюю Azure подсистему балансировки нагрузки или другое стороннее решение.
Приложение использует привязку на основе файлов cookie, но запросы продолжают переключаться между серверами бэкенда.
Симптом
Вы включите параметр сопоставления на основе файлов cookie. При доступе к шлюзу приложений с использованием короткого URL в Internet Explorer, например http://website, запрос всё равно передаётся между серверными системами.
Чтобы определить эту проблему, выполните следующие инструкции.
Выполните трассировку веб-отладчика на клиенте, подключенном к приложению за шлюзом приложений. В этом примере используется Fiddler. Совет Если вы не знаете, как использовать Fiddler, выберите опцию Я хочу собирать сетевой трафик и анализировать его с помощью веб-отладчика в нижней части.
Проверьте и проанализируйте журналы сеансов, чтобы определить, содержат ли файлы cookie, предоставляемые клиентом, детали ApplicationGatewayAffinity. Если вы не найдете сведения о ApplicationGatewayAffinity, например
ApplicationGatewayAffinity=ApplicationGatewayAffinityValueв наборе файлов cookie, клиент не отвечает с файлом cookie ApplicationGatewayAffinity, который предоставляет шлюз приложений. Рассмотрим пример.
Приложение продолжает пытаться задать файл cookie для каждого запроса, пока он не получит ответ.
Причина
Эта проблема возникает, так как Internet Explorer и другие браузеры не хранят или не используют файл cookie с коротким URL-адресом имени.
Резолюция
Чтобы устранить эту проблему, перейдите к шлюзу приложений с помощью полного доменного имени (FQDN). Например, воспользуйтесь http://website.com или http://appgw.website.com.
Дополнительные журналы для устранения неполадок
Вы можете собирать и анализировать дополнительные журналы для устранения неполадок, связанных с сходством сеансов на основе файлов cookie.
- Анализ журналов шлюза приложений
- Использование веб-отладчика для записи и анализа трафика HTTP или HTTPS
Анализ журналов Шлюза приложений
Чтобы собрать журналы шлюза приложений, выполните следующие инструкции.
Включите ведение журнала с помощью портала Azure.
На портале Azure найдите ресурс и выберите Diagnostic setting.
Для Шлюз приложений доступны три журнала: журнал доступа, журнал производительности и журнал брандмауэра.
Выберите "Добавить параметр диагностики ", чтобы начать сбор данных.
Страница параметров диагностики предоставляет параметры для журналов диагностики. В этом примере Log Analytics хранит журналы. Вы также можете использовать Центры событий Azure и учетную запись хранения для сохранения журналов диагностики.
Подтвердите параметры и нажмите кнопку "Сохранить".
Использование веб-отладчика для записи и анализа трафика HTTP или HTTPS
Средства веб-отладки, такие как Fiddler, помогают отлаживать веб-приложения, захватывая сетевой трафик между Интернетом и тестовых компьютеров. Эти средства позволяют проверять входящие и исходящие данные по мере того, как браузер получает или отправляет его. В этом примере у Fiddler есть опция воспроизведения HTTP, которая может помочь устранять проблемы на стороне клиента с веб-приложениями, особенно проблемы с аутентификацией.
Используйте тот веб-отладчик, который желаете. В этом примере используйте Fiddler для записи и анализа трафика HTTP или HTTPS. Следуйте инструкциям.
Скачайте Fiddler.
Замечание
Выберите Fiddler4, если на компьютере, на котором производится запись, установлена .NET 4. В противном случае выберите Fiddler2.
Щелкните правой кнопкой мыши исполняемый файл установки и запустите от имени администратора для установки.
При открытии Fiddler автоматически начинается захват трафика (обратите внимание на захват в нижнем левом углу). Нажмите клавишу F12, чтобы запустить или остановить запись трафика.
Скорее всего, вы заинтересованы в расшифрованном трафике HTTPS. Включите расшифровку HTTPS, выбрав Инструменты>Параметры Fiddler и установив флажок Расшифровать трафик HTTPS.
Чтобы удалить предыдущие несвязанные сеансы перед воспроизведением проблемы, нажмите кнопку "Удалить>все".
При воспроизведении проблемы сохраните файл для проверки, выбрав Файл>Сохранить>Все сеансы.
Проверьте и проанализируйте журналы сеансов, чтобы определить, что такое проблема.
Рассмотрим пример.
Пример A: Вы находите журнал сеансов, где запрос отправляется от клиента и направляется к общедоступному IP-адресу шлюза приложений. Выберите этот журнал, чтобы просмотреть сведения. В правой части данные в нижнем поле — это то, что шлюз приложений возвращает клиенту. Выберите вкладку RAW и определите, получает ли клиент файл cookie с параметрами "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue". Если файл cookie отсутствует, сопоставление сеансов не задано или Application Gateway не отправляет cookie обратно клиенту.
Замечание
Это значение ApplicationGatewayAffinity — это идентификатор cookie, который шлюз приложений устанавливает для клиента, чтобы передавать его на определенный сервер.
Пример B: Следующий журнал сеансов, который следует за предыдущим, показывает ответ клиента через шлюз для приложений, что устанавливает ApplicationGatewayAffinity. Если идентификатор cookie-идентификатора ApplicationGatewayAffinity совпадает, пакет переходит на тот же внутренний сервер, который использовался ранее. Проверьте следующие несколько строк http-связи, чтобы узнать, изменяется ли файл cookie ApplicationGatewayAffinity клиента.
Замечание
Для того же сеанса обмена данными файл cookie не должен изменяться. Установите верхний флажок справа и выберите вкладку "Файлы cookie", чтобы проверить, использует ли клиент cookie и отправляет ли его обратно в Application Gateway. В противном случае браузер клиента не сохраняет или не использует файл cookie для сеансов связи. Иногда клиент может обманывать.