

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

# 대상 그룹 고정성
<a name="target-group-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)합니다.

**템플릿:** CloudFormation 템플릿`targetgroupstickiness.yml`([샘플 코드 .zip 파일에](samples/stickiness.zip) 포함됨)을 사용하여 대상 그룹 고정성을 시도합니다.

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

다음 시나리오에서는 대상 그룹 고정을 사용합니다.
+ 로드 밸런서에 여러 대상 그룹이 할당되어 있으므로 클라이언트의 트래픽은 해당 대상 그룹 내의 인스턴스로 일관되게 라우팅되어야 합니다.
+ 블루/그린 배포.

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

리스너가 한 번 변경되었습니다. Application Load Balancer 기본 작업을 수정하여 고정 구성으로 동일한 가중치의 두 대상 그룹(`TG1` 및 `TG2`)을 지정했습니다.


****  

|  |  | 
| --- |--- |
| basic.yml | targetgroupstickiness.yml | 
| <pre>Listener1:<br />  Type: 'AWS::ElasticLoadBalancingV2::Listener'<br />  Properties:<br />    LoadBalancerArn: !Ref ALB<br />    Protocol: HTTP<br />    Port: 80<br />    DefaultActions:<br />      - TargetGroupArn: !Ref TG1<br />        Type: forward</pre> | <pre>Listener1:<br />  Type: 'AWS::ElasticLoadBalancingV2::Listener'<br />  Properties:<br />    LoadBalancerArn: !Ref ALB<br />    Protocol: HTTP<br />    Port: 80<br />    DefaultActions:<br />      - ForwardConfig:<br />          TargetGroups:<br />            - TargetGroupArn: !Ref TG1<br />              Weight: 1<br />            - TargetGroupArn: !Ref TG2<br />              Weight: 1<br />          TargetGroupStickinessConfig:<br />              DurationSeconds: 10<br />              Enabled: true<br />        Type: forward</pre> | 

## 단계
<a name="tg-stickiness-steps"></a>

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

1. CloudFormation 템플릿을 랩 환경에 배포`targetgroupstickiness.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="tg-stickiness-results"></a>

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

웹 페이지를 로드하는 인스턴스는 페이지 텍스트에 반영된 대로 10초 동안 대상 그룹(TG1 또는 TG2) 내에 있어야 합니다.

약 10초 후에 고정이 해제되고 대상 그룹 인스턴스 세트가 변경될 수 있습니다.

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