애플리케이션 기반 쿠키가 포함된 고정 세션 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

애플리케이션 기반 쿠키가 포함된 고정 세션

Application Load Balancer를 애플리케이션 기반 쿠키와 함께 사용하는 경우:

  • Application Load Balancer는 대상 그룹 가중치를 사용하여 대상 그룹 간에 수신 트래픽의 균형을 맞추는 방법을 결정합니다.

  • 기본적으로 Application Load Balancer는 라운드 로빈 메서드를 사용하여 대상 대상 그룹의 EC2 인스턴스로 요청을 라우팅합니다.

  • 트래픽이 처음에 EC2 인스턴스로 라우팅된 후 EC2 인스턴스 애플리케이션 응답에는 사용자 지정 애플리케이션 쿠키가 포함되어야 합니다.이 쿠키는 자동 Application Load Balancer 쿠키와 함께 클라이언트로 다시 전송됩니다.

  • 후속 트래픽은 클라이언트가 애플리케이션 쿠키와 Application Load Balancer 쿠키를 다시 보내면 EC2 인스턴스에 유지됩니다.

  • 애플리케이션 기반 쿠키는 구성된 기간 동안 사용하지 않으면 만료됩니다.

템플릿: AWS CloudFormation 템플릿stickysessionsapp.yml(샘플 코드 .zip 파일에 포함됨)을 사용하여 애플리케이션 기반 쿠키로 고정 세션을 시도합니다.

일반 사용 사례

다음 시나리오에서 추가 제어를 원하는 경우 애플리케이션 생성 쿠키와 함께 고정 세션을 사용합니다.

  • PHP 웹 서버

  • 로그, 장바구니 또는 채팅 대화와 같은 임시 세션 데이터를 유지하는 서버

basic.yml에서 코드 변경

유일한 코드 변경은 대상 그룹 구성에 있습니다. Application Load Balancer와 대상 그룹 속성에 고정 구성을 추가했습니다. 애플리케이션 쿠키 기간이 지정되고 대상 그룹에 애플리케이션 쿠키 고정이 활성화되어 있습니다.

basic.yml stickysessionsapp.yml
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC
TG1: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: TG1 Protocol: HTTP Port: 80 TargetType: instance Targets: - Id: !Ref Instance1 - Id: !Ref Instance2 VpcId: !Ref CustomVPC TargetGroupAttributes: - Key: stickiness.enabled Value: true - Key: stickiness.type Value: app_cookie - Key: stickiness.app_cookie.duration_seconds Value: 10 - Key: stickiness.app_cookie.cookie_name Value: TESTCOOKIE

단계

Notes
  • NAT 게이트웨이에는 적은 비용이 발생합니다.

  • 여러 EC2 인스턴스는 단일 EC2 인스턴스보다 프리 티어 시간을 더 빠르게 사용합니다.

  1. CloudFormation 템플릿을 랩 환경에 배포stickysessionslb.yml합니다.

  2. 대상 그룹 인스턴스의 상태가 초기에서 정상으로 변경될 때까지 기다립니다.

  3. HTTP(TCP/80)를 사용하여 웹 브라우저에서 Application Load Balancer URL로 이동합니다.

    예: http://alb-123456789.us-east-1.elb.amazonaws.com/

    웹 페이지에는 인스턴스 1 - TG1, 인스턴스 2 - TG1, 인스턴스 3 - TG2 또는 인스턴스 4 - TG2 중 하나가 표시됩니다.

  4. 페이지를 여러 번 새로 고칩니다.

예상 결과

참고

이 예제의 CloudFormation 템플릿은 고정을 10초 동안 지속되도록 구성했습니다. 유효한 고정 기간 구성은 1초에서 1주 사이입니다.

웹 페이지를 로드하는 인스턴스는 페이지 텍스트에 표시된 대로 동일하게 유지되어야 합니다.

고정 기간은 새로 고쳐지지 않지만 EC2 인스턴스에서 생성되는 애플리케이션 쿠키에 대해 Application Load Balancer에 구성된 만료를 기반으로 합니다.

예제 1: 페이지를 새로 고치려면 5초 동안 기다립니다. 동일한 인스턴스가 로드되고 10초 동안 고정성이 새로 고쳐집니다.

예제 2: 페이지를 다시 로드하려면 10초 이상 기다립니다. 애플리케이션 쿠키가 만료되고 다른 EC2 인스턴스로 라우팅됩니다. 이 새 인스턴스는 10초 동안 다른 애플리케이션 쿠키를 생성합니다.

작동 방법

  • 이 예제에서는 EC2 인스턴스에 Apache 웹 서버(httpd)가 설치되어 있습니다. httpd.conf 파일은 정적 Set-Cookie 값을 클라이언트(웹 브라우저)에 반환하도록 구성됩니다. Set-Cookie 값은 로 하드코딩됩니다TESTCOOKIE=<somevalue>.

  • 브라우저의 요소 검사 옵션을 열고 네트워크 탭을 선택한 다음 페이지를 로드하는 메서드 가져오기를 선택합니다. 쿠키 탭이 표시됩니다.

  • 브라우저는 서버 Set-Cookie 응답에서 수신하는 쿠키를 사용하여 후속 업데이트를 서버에 반환하도록 자동으로 구성된 클라이언트 애플리케이션입니다.

  • 페이지를 다시 로드하면 초기 페이지 로드 시 수신된 쿠키가 Application Load Balancer로 자동으로 다시 전송됩니다.

    • 쿠키가 만료된 경우(즉, 마지막 호출 이후 10초가 경과한 경우) Application Load Balancer는 새 로직을 사용하여 트래픽을 라우팅할 EC2 인스턴스를 결정합니다.

    • 쿠키가 만료되지 않은 경우 Application Load Balancer는 트래픽을 동일한 EC2 인스턴스로 라우팅합니다.