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