Поделиться через


Устранение проблем сходства сеансов в Шлюзе приложений 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" на вкладке "Параметры HTTP" портала Azure, следуйте инструкциям:

  1. Войдите на портал Azure.

  2. В левой навигационной панели щелкните Все ресурсы. Выберите имя шлюза приложений в колонке "Все ресурсы". Если в выбранной подписке уже есть несколько ресурсов, можно ввести имя шлюза приложений в поле "Фильтр по имени..." , чтобы легко получить доступ к шлюзу приложений.

  3. Выберите вкладку Параметры HTTP в разделе ПАРАМЕТРЫ.

    Снимок экрана показывает ПАРАМЕТРЫ, для которых выбран параметр HTTP.

  4. Выберите параметр HTTP и на странице добавления параметров HTTP проверьте, включена ли сопоставление на основе файлов cookie.

    Снимок экрана: параметры шлюза для шлюза приложений, включая выбор сопоставления на основе файлов cookie.

Также можно проверить, что значение параметра "CookieBasedAffinity" установлено во Включено для "backendHttpSettingsCollection" с помощью одного из следующих методов:

"cookieBasedAffinity": "Enabled", 

Причина

Шлюз приложений может реализовать сходство на основе сеанса только с помощью файла cookie.

Обходное решение

Если приложение не может обработать сходство на основе файлов cookie, необходимо использовать внешнюю или внутреннюю подсистему балансировки нагрузки Azure или другое стороннее решение.

Симптом

Вы включили параметр сопоставления на основе файлов cookie при доступе к Шлюз приложений с помощью короткого URL-адреса имени в Internet Explorer, например: http://website запрос по-прежнему отскочил между серверными серверами.

Чтобы найти эту ошибку, следуйте инструкциям:

  1. Выполните трассировку веб-отладчика на "Клиенте", который подключается к приложению за Шлюзом приложений (в этом примере мы используем Fiddler). Совет. Если вы не умеете использовать Fiddler, установите флажок внизу "Я хочу получить сетевой трафик и проанализировать его с помощью веб-отладчика".

  2. Проверьте и проанализируйте журналы сеансов, чтобы определить, имеют ли файлы cookie, предоставляемые клиентом, сведения о ApplicationGatewayAffinity. Если в наборе файлов cookie нет сведений ApplicationGatewayAffinity, например ApplicationGatewayAffinity= ApplicationGatewayAffinityValue, это означает, что клиент не отвечает с помощью файла cookie ApplicationGatewayAffinity, который предоставляется Шлюз приложений. Например:

    На снимке экрана показан журнал сеансов с единственной выделенной записью.

    На снимке экрана показаны заголовки запросов для HTTP, включая сведения о файлах cookie.

Приложение продолжает пытаться задать файл cookie для каждого запроса, пока не получит ответ.

Причина

Эта проблема возникает из-за того, что Internet Explorer и другие браузеры не могут хранить или использовать файл cookie с кратким именем URL-адреса.

Разрешение

Чтобы устранить эту проблему, для доступа к Шлюзу приложений следует использовать полное доменное имя. Например, воспользуйтесь http://website.com или http://appgw.website.com.

Дополнительные журналы для устранения неполадок

Можно получить дополнительные журналы и проанализировать их, чтобы устранить проблемы, связанные со сходством сеансов на основе файлов cookie

Анализ журналов Шлюза приложений

Чтобы получить журналы Шлюза приложений, следуйте инструкциям:

Включите ведение журнала с помощью портал Azure.

  1. В портал Azure найдите ресурс и выберите параметр диагностики.

    Для Шлюз приложений доступны три журнала: журнал доступа, журнал производительности и журнал брандмауэра.

  2. Чтобы начать сбор данных, выберите "Добавить параметр диагностики".

    Снимок экрана: шлюз приложений с выбранными параметрами диагностики.

  3. Страница параметров диагностики предоставляет параметры для журналов диагностики. В этом примере для хранения журналов используется Log Analytics. хранения журналов диагностики можно также использовать концентраторы событий и учетную запись хранения.

    На снимке экрана показана панель параметров диагностики с выбранным разделом настройки Анализ журналов.

  4. Подтвердите параметры и нажмите кнопку "Сохранить".

Использование веб-отладчика для сбора и анализа трафика HTTP или HTTPS

Средства веб-отладки, такие как Fiddler, могут помочь в отладке веб-приложений путем сбора сетевого трафика между Интернетом и тестовыми компьютерами. Эти средства позволяют проверять входящие и исходящие данные по мере их получения и отправки браузером. В этом примере из Fiddler есть параметр воспроизведения HTTP, который может помочь в устранении неполадок на стороне клиента в веб-приложениях, особенно при проблемах проверки подлинности.

Используйте тот веб-отладчик, который желаете. В этом примере мы будем использовать Fiddler для сбора и анализа трафика HTTP или HTTPS, следуя инструкциям:

  1. Скачайте Fiddler.

    Примечание.

    Выберите Fiddler4, если на компьютере для записи установлен .NET 4. В противном случае выберите Fiddler2.

  2. Щелкните исполняемый файл программы установки правой кнопкой мыши и запустите его для установки от имени администратора.

    Снимок экрана: программа установки Fiddler с контекстным меню с выбранным администратором запуска от имени администратора.

  3. При открытии Fiddler должна автоматически запускаться запись трафика (Обратите внимание на надпись "Запись" в левом нижнем углу). Нажмите клавишу F12, чтобы запустить или остановить запись трафика.

    На снимке экрана показан веб-отладчик Fiddler с выделенным индикатором

  4. Скорее всего, интерес представляет расшифровка трафика HTTPS, при этом можно включить расшифровку HTTPS, выбрав Инструменты>Параметры Fiddler и установив флажок "Расшифровать HTTPS трафик".

    На снимке экрана показаны параметры в Fiddler с выбранным параметром HTTP и

  5. Перед воспроизведением проблемы можно удалить предыдущие несвязанные сеансы, нажав кнопку X (значок)> Удалить все, как показано ниже.

    На снимке экрана показан выбранный значок X, где отображается параметр

  6. Когда воссоздается ошибка, сохраните файл для проверки, выбрав Файл>Сохранить>Все сеансы.

    Снимок экрана с выбранным параметром

  7. Проверьте и проанализируйте журналы сеансов, чтобы определить причину проблемы.

    Примеры приведены ниже.

  • Пример А. Найден журнал сеансов, при котором запрос отправляется от клиента, и он передается на общедоступный IP-адрес Шлюза приложений, щелкните этот журнал, чтобы просмотреть сведения. С правой стороны данные в нижнем поле — это то, что Шлюз приложений возвращает клиенту. Перейдите на вкладку RAW и определите, получает ли клиент параметр Set-Cookie: ApplicationGatewayAffinity= ApplicationGatewayAffinityValue. Если файл cookie отсутствует, сопоставление сеансов не задано или Шлюз приложений не применяет файл cookie к клиенту.

    Примечание.

    Это значение ApplicationGatewayAffinity — это идентификатор файла cookie, который Шлюз приложений задает для клиента отправку на конкретный сервер серверной части.

    На снимке экрана показан пример сведений о записи в журнале с выделенным значением Set-Cookie.

  • Пример B. Следующий журнал сеансов, за которым следует предыдущий, является клиентом, отвечая на Шлюз приложений, который установил ApplicationGatewayAffinity. Если идентификатор cookie-идентификатора ApplicationGatewayAffinity совпадает, пакет должен быть отправлен на тот же внутренний сервер, который использовался ранее. Проверьте следующие строки http-связи, чтобы узнать, изменяется ли файл cookie ApplicationGatewayAffinity клиента.

    На снимке экрана показан пример сведений о записи в журнале с выделенным файлом cookie.

Примечание.

Для одного и того же сеанса связи файл cookie не должен изменяться. Установите флажок в верхнем поле справа, выберите вкладку "Cookies", чтобы узнать, использует ли клиент файл cookie и отправляете ли его обратно в Шлюз приложений. В противном случае браузер клиента не сохраняет и не использует файл cookie для обмена. Иногда клиент может обманывать.

Следующие шаги

Если описанные выше шаги не устранят проблему, отправьте запрос в службу поддержки.