Устранение проблем сходства сеансов в Шлюзе приложений 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 в разделе ПАРАМЕТРЫ.

    Screenshot shows SETTINGS with H T T P settings selected.

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

    Screenshot shows the gateway settings for an app gateway, including whether Cookie based affinity is selected.

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

"cookieBasedAffinity": "Enabled", 

Причина

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

Решение

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

Симптом

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

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

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

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

    Screenshot shows a session log with a single entry highlighted.

    Screenshot shows request headers for H T T P, including cookie information.

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

Причина

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

Разрешение

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

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

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

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

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

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

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

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

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

    Screenshot shows an application gateway with Diagnostics settings selected.

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

    Screenshot shows the Diagnostics settings pane with Log Analytics Configure selected.

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

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

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

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

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

    Примечание.

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

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

    Screenshot shows the Fiddler setup program with a contextual menu with Run as administrator selected.

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

    Screenshot shows the Fiddler Web Debugger with the Capturing indicator highlighted.

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

    Screenshot shows Options in Fiddler with H T T P selected and Decrypt HTTPS traffic selected.

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

    Screenshot shows the X icon selected, which displays the Remove all option.

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

    Screenshot shows the File Save All Sessions option selected.

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

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

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

    Примечание.

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

    Screenshot shows an example of details of a log entry with the Set-Cookie value highlighted.

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

    Screenshot shows an example of details of a log entry with a cookie highlighted.

Примечание.

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

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

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