- 인쇄
- PDF
Target Group
- 인쇄
- PDF
Target Group이란
Target Group의 개념
Target Group은 하나 이상의 등록된 대상에 요청을 분배하는데 사용됩니다. 즉, 요청을 처리할 대상(서버)에 대한 집합이며, 이는 Load Balancer 서비스에서만 사용됩니다. Load Balancer의 리스너를 생성할 때 동작에 대한 Target Group을 지정하고, 조건에 따라 트래픽을 분배하게 됩니다.
Target Group은 등록 대상에 대하여 정의한 헬스체크를 수행합니다. 서비스를 수행하는 대상의 프로토콜에 따라 L4 수준(TCP Port) / L7 수준(URL)으로 상태확인을 합니다.
Target Group은 Zone과 Subnet에 상관없이 동일 VPC내 모든 대상(서버)을 등록할 수 있습니다.
Target Group은 연결된 로드밸런서의 추가 리스너에서는 재사용이 가능하지만 다른 로드밸런서와 중복연결은 지원되지 않습니다.
Target Group 생성
Target Group 생성하기
1. 화면 중앙의 [Target Group 생성] 버튼을 클릭합니다.
2. Target Group 생성 페이지가 나타나면 설정 정보를 입력합니다.
① Taget Group의 이름을 입력합니다.
② Target 유형을 선택합니다. 현재는 Server만 제공이됩니다. VPC내 서버 또는 Cloud DB, Hadoop등이 해당합니다.
③ 등록될 대상이 포함된 VPC를 선택합니다.
④ 대상의 역할에 따라 프로토콜을 선택합니다. 프로토콜에 따라 적용가능한 Load Balancer 타입이 아래와 같이 구분됩니다.
- TCP : Network Load Balancer
- Proxy_TCP : Network Proxy Load Balancer
- HTTP : Application Load Balancer
- HTTPS : Application Load Balancer
⑤ 각 대상이 서비스중(Listen)인 포트번호를 입력합니다. 입력된 Port로 트래픽이 전달됩니다.
3. Target Group의 Health check 정책을 설정합니다.
① 대상의 상태를 확인할 수 있는 프로토콜을 선택합니다.
- Target Group의 프로토콜이 TCP인 경우 TCP만 선택가능하며, HTTP/HTTPS일 경우, HTTP 또는 HTTPS가 선택 가능합니다.
② 대상의 상태를 확인할 수 있는 포트를 지정합니다. 상태 확인만 가능하다면 반드시 Target Group의 Port와 일치하지 않아도 됩니다.
③ 대상의 상태를 확인할 URL 경로를 입력합니다. Target Group의 프로토콜이 HTTP/HTTPS 인 경우에만 활성화 됩니다.
④ 대상의 상태를 확인할 HTTP Method를 선택합니다. Head 와 Get을 지원하며, Target Group의 프로토콜이 HTTP/HTTPS인 경우에만 활성화 됩니다.
⑤ Health Check 주기를 5-300초 사이에서 설정합니다.
⑥ 대상의 상태가 변경되는 임계값을 지정합니다 . 정상 임계값은 비정상 상태의 대상이 다시 서비스에 투입되기 위해 성공해야 하는 상태 확인 횟수이며, 실패 임계값은 정상 상태의 대상이 상태 확인을 실패하면 비정상 상태로 전환되어 부하 분산 대상에 제외되는 횟수 입니다.
4. 서비스에 포함될 대상을 추가합니다.
5. 설정 정보를 확인하고 [Target Group 생성] 버튼을 클릭하여 생성을 시작합니다.
Target Group 설정 확인 및 변경
Target Group 설정 변경
1. 설정할 Target Group을 선택하고 [Target Group 설정] 버튼을 클릭합니다.
① Sticky Session 설정 여부를 체크합니다. (옵션)
- 헤더에 서버 고유 아이디를 추가하여 다음 요청이 발생하여도 같은 서버로만 전달되도록 하는 기능입니다. Target Group의 프로토콜이 TCP 또는 HTTP(S)인 경우에만 선택 가능합니다.
② Proxy Protocol 적용 여부를 선택합니다. Proxy Protocol 설정방법은 가이드 하단에 위치합니다.
- Target Group의 프로토콜이 TCP_Proxy인 경우에만 선택 가능합니다.
③ 로드밸런싱 알고리즘을 선택합니다.
- Round Robin, Least Connection, Source IP Hash 중 선택가능 하며, 각각의 특징은 아래와 같습니다. (Target Group의 프로토콜이 TCP인 경우, Least Connection 알고리즘 선택이 제외됩니다.)
분산 방식 | 내용 |
---|---|
Round Robin | 로드밸런싱으로 지정된 서버들에 대해 공평하게 순차적으로 요청을 전달합니다. 서버 커넥션 수나 응답 시간에 상관없이 그룹 내의 모든 서버를 동일하게 처리해 일반적인 구성에 있어 다른 알고리즘에 비해 가장 빠릅니다. |
Least Connection | 클라이언트의 요청을 가장 적은 수 의 연결이 이루어진 서버로 할당합니다. 서버의 성능이 비슷하게 구성돼 있을 때 가장 효과적으로 트래픽을 분산할 수 있습니다. |
Source IP Hash | 클라이언트의 Source IP 정보를 바탕으로 해시한 결과로 로드밸런싱을 실행합니다. SSL 프로토콜을 사용하는 경우에는 Source IP Hash 알고리즘을 사용하는 것을 권장합니다. |
Health Check 설정 변경
1. 설정할 Target Group을 선택하고 [Health Check 설정] 버튼을 클릭합니다.
① 대상의 상태를 확인할 수 있는 포트를 지정합니다. 상태 확인만 가능하다면 반드시 Target Group의 Port와 일치하지 않아도 됩니다.
② 대상의 상태를 확인할 URL 경로를 입력합니다. Target Group의 프로토콜이 HTTP/HTTPS 인 경우에만 활성화 됩니다.
③ 대상의 상태를 확인할 HTTP Method를 선택합니다. Head 와 Get을 지원하며, Target Group의 프로토콜이 HTTP/HTTPS인 경우에만 활성화 됩니다.
④ Health Check 주기를 5-300초 사이의 값중에서 설정합니다.
⑤ 대상의 상태가 변경되는 임계값을 지정합니다 . 정상 임계값은 비정상 상태의 대상이 다시 서비스에 투입되기 위해 성공해야 하는 상태 확인 횟수이며, 실패 임계값은 정상 상태의 대상이 상태 확인을 실패하면 비정상 상태로 전환되어 부하 분산 대상에 제외되는 횟수 입니다.
Target 변경
1. 변경할 Target Group을 선택하고 [Target 설정] 버튼을 클릭합니다.
2. 가운데 > 버튼을 눌러 원하는 서버를 Load Balancer 적용 서버로 이동합니다.
- 전체 서버는 VPC내 모든 서버를 대상으로 합니다.
Target Group 삭제
1. 삭제할 Target Group을 선택한 후 화면 상단의 [삭제] 버튼을 클릭합니다.
2. Target Group 삭제 팝업창이 나타나면 하단의 [삭제] 버튼을 클릭해 Target Group을 삭제합니다.
Target Group이 로드밸런서에 연결되어 있으면 삭제가 되지 않습니다. 로드밸런서를 먼저 삭제한 이후에 진행이 가능합니다.
Target 상태 확인
1. 확인할 Target Group을 선택한 후 화면 상단의 Target 상태 확인을 클릭합니다.
2. 앞서 설정한 Health Check 정책에 의하여 Target Group내 대상에 대해 상태확인이 가능합니다.
Target Group 모니터링
1. 확인할 Target Group을 선택한 후 화면 상단의 모니터링버튼을 클릭합니다.
2. 최소 1분부터 최대 최근 1년동안 부하분산을 수행한 대상의 수를 모니터링 할 수 있습니다.
1분 주기로 수집한 Available Host와 Unavailable Host의 수를 각각 확인할 수 있습니다.
Proxy Protocol 설정하기
Proxy Protocol이란 Load Balancer에서 TCP, SSL 프로토콜 이용 시, Proxy 환경에서 Connection을 요청하는 클라이언트의 IP 주소(Original Client IP address)를 확인할 수 있는 프로토콜입니다.
Load Balancer 설정 시 프로토콜별 Client IP 확인은 아래 표를 참고해주세요.
Load Balancer rule 설정 시 proxy protocol 사용을 선택하면, Load Balancer에서 아래와 같이 request를 호출합니다.
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n“ 예제 > PROXY TCP4 125.209.237.10 125.209.192.12 43321 80\r\n
Proxy Protocol을 지원하는 apache 및 NginX 버전은 아래와 같습니다.
- Apache 2.2
- Apache 2.4
- NginX 1.11.12
Proxy Protocol을 설정하는 방법은 다음과 같습니다.
1. Apache 버전에 따라 다음과 같이 설정합니다.
Apache 2.2
$ wget --no-check-certificate https://raw.githubusercontent.com/ggrandes/apache22-modules/master/mod_myfixip.c
$ /{아파치가설치된경로}/bin/apxs -c -i mod_myfixip.c
Apache 2.4
$ wget --no-check-certificate https://raw.githubusercontent.com/ggrandes/apache24-modules/master/mod_myfixip.c
$ /{아파치가설치된경로}/bin/apxs -c -i mod_myfixip.c
- apxs 경로를 확인할 수 없을 경우 http-devel 패키지 설치 후 확인
/{아파치가설치된경로}/conf/httpd.conf 파일에 아래 설정 추가
LoadModule myfixip_module modules/mod_myfixip.so
<IfModule mod_myfixip.c>
RewriteIPResetHeader off
RewriteIPAllow 10.31.0.0/16 #LB IP 대역으로 설정 (e.g. LB IP가 125.209.197.92인 경우 125.209.0.0/16)
</IfModule mod_myfixip.c>
2. nginx는 다음과 같이 설정합니다.
nginx에서 HTTP 모듈이 포함되어 있는지 확인
$ nginx -V 2>&1 | grep – 'http_realip_module'
nginx conf 파일에 아래 설정 추가
http { proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; log_format main ' $proxy_protocol_addr - $remote_user [$time_local]' #기존 로그 포맷에 추가 '"$request" $status $body_bytes_sent' '"$http_referer" "$http_user_agent"'; server { listen 80 proxy_protocol; set_real_ip_from LB IP 대역 1(192.168.0.0/16); set_real_ip_from LB IP 대역 2(192.168.0.0/16); real_ip_header proxy_protocol } }