

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

# 로드 밸런서에서 생성된 쿠키가 있는 고정 세션
<a name="alb-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 인스턴스에 유지됩니다.

**템플릿:** CloudFormation 템플릿`stickysessionslb.yml`([샘플 코드 .zip 파일에 포함](samples/stickiness.zip)됨)을 사용하여 로드 밸런서에서 생성된 쿠키로 고정 세션을 시도합니다.

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

다음 시나리오에서는 로드 밸런서에서 생성한 쿠키와 함께 고정 세션을 사용합니다.
+ PHP 웹 서버
+ 로그, 장바구니 또는 채팅 대화와 같은 임시 세션 데이터를 유지하는 서버

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

관련 코드 변경은 고정 유형을 로 설정하고 `lb_cookie` 지속 시간을 10초로 설정하기 위해 대상 그룹 구성에 있습니다.


****  

|  |  | 
| --- |--- |
| basic.yml | stickysessionslb.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: lb_cookie<br />       - Key: stickiness.lb_cookie.duration_seconds<br />Value: 10</pre> | 

## 단계
<a name="alb-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 - TG1** 중 하나가 표시됩니다.

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

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

**참고**  
이 예제의 CloudFormation 템플릿은 고정을 10초 동안 지속되도록 구성합니다.

웹 페이지를 로드하는 인스턴스는 페이지 텍스트에 반영된 대로 10초 기간 내에 동일하게 유지되어야 합니다. 약 10초 후에 고정이 해제되고 대상 인스턴스가 변경될 수 있습니다.

## 작동 방법
<a name="alb-cookies-how"></a>
+ 이 예제에서는 하나의 대상 그룹에 두 개의 EC2 인스턴스가 있습니다. EC2 인스턴스에는 Apache 웹 서버(`httpd`)가 설치되어 있으며, 각 EC2 인스턴스의 `index.html` 페이지 텍스트는 고유하도록 하드코딩되어 있습니다.
+ Application Load Balancer는 사용자 세션에 대한 바인딩을 생성하여 만료 시간과 함께 대상에 바인딩합니다.
+ 페이지를 다시 로드하면 Application Load Balancer는 바인딩이 존재하는지 여부와 만료되지 않았는지 확인합니다.
  + 바인딩이 만료되었거나 존재하지 않는 경우 Application Load Balancer는 라우팅 로직을 실행하고 대상 인스턴스를 결정합니다.
  + 바인딩이 만료되지 않은 경우 Application Load Balancer는 트래픽을 동일한 대상 인스턴스로 라우팅합니다.