다음을 통해 공유


Azure Application Gateway 세션 선호도 문제 해결

Azure Application Gateway를 사용하여 세션 선호도 문제를 진단하고 해결하는 방법을 알아봅니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

개요

쿠키 기반 세션 선호도 기능은 동일한 서버에서 사용자 세션을 유지하는 데 유용합니다. Application Gateway는 게이트웨이 관리형 쿠키를 사용하여 사용자 세션에서 동일한 서버에 후속 트래픽을 처리하도록 지시할 수 있습니다. 이는 세션 상태가 사용자 세션의 서버에 로컬로 저장된 경우에 특히 중요합니다. 세션 선호도를 {b>고정 세션

참고 항목

Application Gateway v1은 동일한 백 엔드 풀 멤버로 트래픽을 전송하는 데 사용되는 ARRAffinity라는 쿠키를 발급합니다. Application Gateway v2에서 이 쿠키의 이름이 ApplicationGatewayAffinity로 변경되었습니다. 이 문서의 목적을 위해 ApplicationGatewayAffinity가 예제로 사용됩니다. ARRAffinity는 Application Gateway v1 인스턴스에 해당하는 경우 대체될 수 있습니다.

가능한 문제 원인

쿠키 기반 세션 선호도 유지 문제는 다음과 같은 주요 원인으로 인해 발생할 수 있습니다.

  • "쿠키 기반 선호도" 설정이 사용하도록 설정되어 있지 않습니다.
  • 애플리케이션이 쿠키 기반 선호도를 처리할 수 없습니다.
  • 애플리케이션이 쿠키 기반 선호도를 사용하고 있지만 요청이 백 엔드 서버 간에 계속 반송됩니다.

경우에 따라 "쿠키 기반 선호도" 설정을 사용하도록 설정하는 것을 잊은 경우 세션 선호도 문제가 발생할 수 있습니다. Azure Portal의 HTTP 설정 탭에서 "쿠키 기반 선호도" 설정을 사용하도록 설정했는지 여부를 확인하려면 다음 지침을 따르세요.

  1. Azure 포털에 로그온합니다.

  2. 왼쪽 탐색 창에서 모든 리소스를 클릭합니다. 모든 리소스 블레이드에서 Application Gateway 이름을 클릭합니다. 선택한 구독에 이미 여러 리소스가 있는 경우 이름 기준으로 필터링... 상자에 애플리케이션 게이트웨이 이름을 입력하면 애플리케이션 게이트웨이에 쉽게 액세스할 수 있습니다.

  3. 설정에서 HTTP 설정 탭을 선택합니다.

    H T T P 설정이 선택된 설정을 보여 주는 스크린샷.

  4. HTTP 설정을 선택하고 HTTP 설정 추가 페이지에서 쿠키 기반 선호도가 사용하도록 설정되어 있는지 확인합니다.

    스크린샷은 쿠키 기반 선호도가 선택되었는지 여부를 포함하여 앱 게이트웨이에 대한 게이트웨이 설정을 보여 줍니다.

다음 방법 중 하나를 사용하여 "backendHttpSettingsCollection"에서 "CookieBasedAffinity"의 값이 사용하도록 설정된 것을 확인할 수도 있습니다.

"cookieBasedAffinity": "Enabled", 

원인

애플리케이션 게이트웨이는 쿠키를 사용하여 세션 기반 선호도만 수행할 수 있습니다.

해결 방법

애플리케이션이 쿠키 기반 선호도를 처리할 수 없는 경우 외부 또는 내부 Azure Load Balancer 또는 다른 타사 솔루션을 사용해야 합니다.

증상

쿠키 기반 선호도 설정을 사용하도록 설정한 경우에도 Internet Explorer에서 짧은 이름 URL(예: http://website)을 사용하여 Application Gateway에 액세스할 때 요청은 여전히 백 엔드 서버 간에 반송됩니다.

이 문제를 식별하려면 다음 지침을 따르세요.

  1. Application Gateway 뒤의 애플리케이션에 연결하는 "클라이언트"에서 웹 디버거 추적을 사용합니다(이 예제에서는 Fiddler 사용). Fiddler를 사용하는 방법을 모르는 경우 맨 아래에 있는 "네트워크 트래픽을 수집하고 웹 디버거를 사용하여 분석하려고 합니다." 옵션을 선택합니다.

  2. 세션 로그를 확인하고 분석하여 클라이언트가 제공한 쿠키에 ApplicationGatewayAffinity 세부 정보가 있는지 확인합니다. 쿠키 집합 내에서 "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue"와 같은 ApplicationGatewayAffinity 세부 정보를 찾지 못하면 클라이언트가 Application Gateway에 의해 제공된 ApplicationGatewayAffinity 쿠키를 사용하여 응답하지 않음을 의미합니다. 예시:

    단일 항목이 강조 표시된 세션 로그를 보여 주는 스크린샷.

    쿠키 정보를 포함하여 H T T P에 대한 요청 헤더를 보여 주는 스크린샷.

애플리케이션은 회신을 받을 때까지 각 요청에 쿠키를 설정하려고 계속 시도합니다.

원인

이 문제는 Internet Explorer 및 기타 브라우저에서 짧은 이름 URL로 쿠키를 저장하거나 사용하지 않을 수 있기 때문에 발생합니다.

해결

이 이슈를 해결하려면 FQDN을 사용하여 Application Gateway에 액세스해야 합니다. 예를 들어 http://website.com 또는 http://appgw.website.com을 사용합니다.

문제 해결을 위한 추가 로그

추가 로그를 수집하고 분석하여 쿠키 기반 세션 선호도와 관련된 문제를 해결할 수 있습니다.

Application Gateway 로그 분석

Application Gateway 로그를 수집하려면 다음 지침을 따르세요.

Azure Portal을 사용하여 로깅을 사용하도록 설정합니다.

  1. Azure Portal에서 리소스를 찾은 다음, 진단 설정을 선택합니다.

    Application Gateway의 경우 액세스 로그, 성능 로그, 방화벽 로그의 세 가지 로그를 사용할 수 있습니다.

  2. 데이터 수집을 시작하려면 진단 설정 추가를 선택합니다.

    스크린샷은 진단 설정이 선택된 애플리케이션 게이트웨이를 보여 줍니다.

  3. 진단 설정 페이지에서는 진단 로그에 대한 설정을 제공합니다. 이 예제에서 Log Analytics는 로그를 저장합니다. 또한 이벤트 허브 및 스토리지 계정을 사용하여 진단 로그를 저장할 수도 있습니다.

    Log Analytics 구성이 선택된 진단 설정 창을 보여 주는 스크린샷.

  4. 설정을 확인한 다음, 저장을 선택합니다.

웹 디버거를 사용하여 HTTP 또는 HTTPS 트래픽 캡처 및 분석

Fiddler와 같은 웹 디버깅 도구를 사용하면 인터넷과 테스트 컴퓨터 간의 네트워크 트래픽을 캡처하여 웹 애플리케이션을 디버그할 수 있습니다. 이러한 도구를 사용하면 브라우저가 데이터를 수신하거나 전송할 때의 수신 및 발신 데이터를 검사할 수 있습니다. 이 예에서 Fiddler에는 특히 인증 관련 문제에 대해 웹 애플리케이션의 클라이언트 측 문제를 해결하는 데 도움이 될 수 있는 HTTP 다시 재생 옵션이 있습니다.

원하는 웹 디버거를 사용합니다. 이 샘플에서는 Fiddler를 사용하여 http 또는 https 트래픽을 캡처하고 분석합니다. 다음 지침을 따릅니다.

  1. Fiddler를 다운로드합니다.

    참고 항목

    캡처하는 컴퓨터에 .NET 4가 설치된 경우 Fiddler4를 선택합니다. 그렇지 않으면 Fiddler2를 선택합니다.

  2. 설치 실행 파일을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행하여 설치합니다.

    스크린샷은 관리자 권한으로 실행이 선택된 상황에 맞는 메뉴가 있는 Fiddler 설정 프로그램을 보여 줍니다.

  3. Fiddler를 열면 트래픽 캡처가 자동으로 시작됩니다(왼쪽 하단 모서리의 캡처 참고). F12 키를 눌러 트래픽 캡처를 시작하거나 중지합니다.

    캡처 표시기가 강조 표시된 Fiddler 웹 디버거를 보여 주는 스크린샷.

  4. 대부분의 경우 암호 해독된 HTTPS 트래픽에 관심이 있으며 도구>Fiddler 옵션을 선택하고 "HTTPS 트래픽 암호 해독" 확인란을 선택하여 HTTPS 암호 해독을 사용하도록 설정할 수 있습니다.

    H T T P가 선택되고 HTTPS 트래픽 암호 해독이 선택된 Fiddler의 옵션을 보여 주는 스크린샷.

  5. 다음 스크린샷과 같이 X(아이콘) >모두 제거를 클릭하여 문제를 재현하기 전에 관련 없는 이전 세션을 제거할 수 있습니다.

    X 아이콘이 선택되고 모두 제거 옵션이 표시된 상태를 보여 주는 스크린샷.

  6. 문제를 재현한 후 파일>저장>모든 세션..을 선택하여 검토할 파일을 저장합니다.

    파일 저장 모든 세션 옵션이 선택된 상태를 보여 주는 스크린샷.

  7. 세션 로그를 확인하고 분석하여 문제가 무엇인지 확인합니다.

    예:

  • 예제 A: 요청이 클라이언트에서 전송되고 Application Gateway의 공개 IP 주소로 이동하는 세션 로그를 찾은 경우 이 로그를 클릭하여 세부 정보를 확인합니다. 오른쪽 하단 상자의 데이터는 Application Gateway가 클라이언트에 반환하는 데이터입니다. "RAW" 탭을 선택하고 클라이언트가 "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue"를 수신하는지 여부를 확인합니다. 쿠키가 없는 경우 세션 선호도가 설정되지 않거나 Application Gateway가 쿠키를 클라이언트에 다시 적용하지 않는 것입니다.

    참고 항목

    이 ApplicationGatewayAffinity 값은 Application Gateway에서 클라이언트가 특정 백 엔드 서버로 전송되도록 설정하는 쿠키 ID입니다.

    Set-Cookie 값이 강조 표시된 로그 항목의 세부 정보 예를 보여 주는 스크린샷.

  • 예제 B: 이전 세션 로그 다음에 오는 다음 세션 로그는 ApplicationGatewayAffinity를 설정한 Application Gateway에 다시 응답하는 클라이언트입니다. ApplicationGatewayAffinity 쿠키 ID가 일치하면 패킷은 이전에 사용한 것과 동일한 백 엔드 서버로 보내져야 합니다. 다음 몇 줄의 http 통신을 확인하여 클라이언트의 ApplicationGatewayAffinity 쿠키가 변경되는지 확인합니다.

    쿠키가 강조 표시된 로그 항목의 세부 정보 예를 보여 주는 스크린샷.

참고 항목

동일한 통신 세션에 대해 쿠키가 변경되지 않아야 합니다. 오른쪽 상단의 상자를 선택하고, "쿠키" 탭을 선택하여 클라이언트에서 쿠키를 사용하고 다시 Application Gateway으로 보내는지 여부를 확인합니다. 그렇지 않은 경우 클라이언트 브라우저는 쿠키를 유지하거나 대화를 위해 사용하고 있지 않은 것입니다. 때로는 클라이언트가 거짓말을 할 수도 있습니다.

다음 단계

앞의 단계에서 문제가 해결되지 않으면 지원 티켓을 엽니다.