Устранение проблем сходства сеансов в Шлюзе приложений Azure.
Узнайте, как диагностировать и устранять проблемы сходства сеансов в Шлюзе приложений Azure.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как выполнить миграцию на модуль Az 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, необходимо использовать внешний или внутренний балансировщик нагрузки Azure или другое стороннее решение.
Приложение использует сессию на основе cookies, но запросы по-прежнему продолжают пересылаться между серверами
Симптом
Вы включили настройку на основе файлов cookie, когда получаете доступ к Шлюзу приложений, используя сокращенный URL-адрес в Internet Explorer, например: http://website
, и запрос по-прежнему переключается между серверами на заднем плане.
Чтобы найти эту ошибку, следуйте инструкциям:
Выполните трассировку веб-отладчика на "Клиенте", который подключается к приложению за Шлюзом приложений (в этом примере мы используем Fiddler). Совет. Если вы не умеете использовать Fiddler, установите флажок внизу "Я хочу получить сетевой трафик и проанализировать его с помощью веб-отладчика".
Проверьте и проанализируйте журналы сеансов, чтобы определить, имеют ли файлы cookie, предоставляемые клиентом, сведения о ApplicationGatewayAffinity. Если среди файлов cookie отсутствуют сведения, такие как "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 (значок)> Удалить все, как показано ниже.
После того как вы воссоздали проблему, сохраните файл для проверки, выбрав Файл>Сохранить>Все сеансы....
Сохранить все сессии"." data-linktype="relative-path"/>
Проверьте и проанализируйте журналы сеансов, чтобы определить причину проблемы.
Примеры приведены ниже.
Пример А. Найден журнал сеансов, при котором запрос отправляется от клиента, и он передается на общедоступный IP-адрес Шлюза приложений, щелкните этот журнал, чтобы просмотреть сведения. С правой стороны данные в нижнем поле — это то, что Шлюз приложений возвращает клиенту. Перейдите на вкладку "RAW" и определите, получает ли клиент параметр куки Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue. Если клиент не получает куки, сессионное связывание не задано, или Шлюз приложений не применяет куки обратно к клиенту.
Примечание.
Это значение ApplicationGatewayAffinity — это идентификатор cookie, который шлюз приложений устанавливает для клиента, чтобы передавать его на определенный сервер.
Пример B. В следующем журнале сеансов, предшествующем предыдущему, клиент отвечает на Шлюз Приложений, который установил ApplicationGatewayAffinity. Если идентификатор cookie-идентификатора ApplicationGatewayAffinity совпадает, пакет должен быть отправлен на тот же внутренний сервер, который использовался ранее. Проверьте следующие строки http-связи, чтобы узнать, изменяется ли файл cookie ApplicationGatewayAffinity клиента.
Примечание.
Для одного и того же сеанса связи файл cookie не должен изменяться. Установите флажок в верхнем поле справа, выберите вкладку "Cookies", чтобы узнать, использует ли клиент файл cookie и отправляете ли его обратно в Шлюз приложений. В противном случае браузер клиента не сохраняет или не использует файл cookie для сеансов связи. Иногда клиент может обманывать.
Следующие шаги
Если описанные выше шаги не устранят проблему, отправьте запрос в службу поддержки.