

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

# 애플리케이션 기반 쿠키가 포함된 고정 세션
<a name="app-cookies-stickiness"></a>

Application Load Balancer를 애플리케이션 기반 쿠키와 함께 사용하는 경우:
+ Application Load Balancer는 [대상 그룹 가중치](https://aws.amazon.com/premiumsupport/knowledge-center/elb-make-weighted-target-groups-for-alb/)를 사용하여 대상 그룹 간에 수신 트래픽의 균형을 맞추는 방법을 결정합니다.
+ 기본적으로 Application Load Balancer는 라운드 로빈 메서드[를 사용하여 대상 대상 그룹의 EC2 인스턴스로 요청을 라우팅](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm)합니다.
+ 트래픽이 처음에 EC2 인스턴스로 라우팅된 후 EC2 인스턴스 애플리케이션 응답에는 사용자 지정 애플리케이션 쿠키가 포함되어야 합니다.이 쿠키는 자동 Application Load Balancer 쿠키와 함께 클라이언트로 다시 전송됩니다.
+ 후속 트래픽은 클라이언트가 애플리케이션 쿠키와 Application Load Balancer 쿠키를 다시 보내면 EC2 인스턴스에 유지됩니다.
+ 애플리케이션 기반 쿠키는 구성된 기간 동안 사용하지 않으면 만료됩니다.

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

## 일반 사용 사례
<a name="app-cookies-use-cases"></a>

다음 시나리오에서 추가 제어를 원하는 경우 애플리케이션 생성 쿠키와 함께 고정 세션을 사용합니다.
+ PHP 웹 서버
+ 로그, 장바구니 또는 채팅 대화와 같은 임시 세션 데이터를 유지하는 서버

## basic.yml에서 코드 변경
<a name="app-cookies-code-changes"></a>

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



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

## 단계
<a name="app-cookies-steps"></a>

**Notes**  
NAT 게이트웨이에는 적은 비용이 발생합니다.
여러 EC2 인스턴스는 단일 EC2 인스턴스보다 프리 티어 시간을 더 빠르게 사용합니다.

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

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

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

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

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

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

## 예상 결과
<a name="app-cookies-results"></a>

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

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

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

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

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

## 작동 방법
<a name="app-cookies-how"></a>
+ 이 예제에서는 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 인스턴스로 라우팅합니다.