Upload
amazon-web-services-korea
View
975
Download
8
Embed Size (px)
Citation preview
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
오길재, 테크니컬어카운트 매니저
Elastic Load BalancingDeep Dive & Best Practices
본 강연에서 다룰 내용
ü Elastic Load Balancing 소개
ü 애플리케이션 로드밸런서 심층 분석
ü 애플리케이션 로드밸런서 모범 사례
Elastic Load Balancing 소개
EC2Instance
EC2Instance
EC2Instance
EC2Instance
Elastic Load Balancing
Elastic Load Balancing은
아마존 EC2 인스턴스에서 운영중인 애플리케이션,
마이크로서비스 또는 컨테이너 서비스로
유입되는 트래픽을 자동 분산 처리
Elastic Load Balancing은
복수의 가용영역을 이용해서
고가용성을 보장
Customer VPC
EC2Instance
EC2Instance
us-w
est-1a
us-w
est-1b
AmazonRoute 53
ELB
ELB
레이어 7 (애플리케이션)레이어 4 (네트워크)
TCP와 SSL 지원
클라이언트와 서버가 연결 중계
헤더 변경 없음
프록시 프로토콜로 요청에 대해 소스및 목적지 IP주소, 포트 추가
HTTP와 HTTPS 지원
연결은 로드 밸런서에서 종료되고로드 밸런서와 서버와 별도 연결
헤더 변경 가능
X-포워드-포 헤더를 통해 클라이언트IP 전달
애플리케이션 로드밸런서심층 분석
새롭고 풍부한 기능을 가진 레이어 7 로드밸런싱
플랫폼
AWS 에서 완전 관리, 확장성, 높은 가용률을
보장하는 플랫폼
1개의 로드밸런서로 여러 애플리케이션을 컨텐트 기반,
경로 기반, 호스트 기반으로 동시 분산 처리
레이어 7 로드밸런싱 플랫폼
클래식 로드밸런서와
EC2 인스턴스 구성
EC2Instance
EC2Instance
EC2Instance
두 개의 서로 다른
애플리케이션을 위해서는
2개의 클래식 로드밸런서
필요
ELB
EC2Instance
EC2Instance
EC2Instance
EC2Instance
EC2Instance
ELB
EC2Instance
orders.example.com
images.example.com
ALB
/orders
example.com
EC2Instance
EC2Instance
EC2Instance
EC2Instance
EC2Instance
EC2Instance
/images
애플리케이션 로드밸런서
는 복수의 애플리케이션을
1개의 로드밸런서로 처리
1 개의 로드밸런서로 통합이 가능하므로
Hourly 비용을 획기적으로 절약
단, 이슈 발생 범위 제한, 조직내 운용 책임 구분을 위해 복수의
로드밸런서 운영에 대한 고려 필요
복수의 컨테이너 서비스를 위한 복수의 포트를 1 개의
로드밸런서에 등록 가능
Amazon ECS 는 다이나믹 포트 맵핑을 통해 자동으로
태스크 등록
다른 컨테이너 기술과도 연동 가능
컨테이너형 애플리케이션 지원
/orders
example.com
EC2Instance
EC2Instance
EC2Instance
/images
애플리케이션
로드밸런서는 컨테이너
서비스 등록 가능ECSContainer
ECSContainer
ECSContainer
ALB
컨테이너형 애플리케이션 지원
마이크로 서비스와 컨테이너 기반 구조로
리소스 활용을 향상 시켜 비용 감소 기회 제공
서비스 위한 유입 트래픽 처리를 위한 프로토콜과
포트를 정의
모든 로드밸런서는 최소한 1 개의 리스너가 필요하고
최대 10개 리스너 설정 가능
라우팅 룰들은 리스너에 정의
리스너
애플리케이션 로드밸런서
리스너 리스너
리스너
로드밸런서 뒷단 타겟에 대한 논리적인 그룹
타겟 그룹은 로드밸런서와 분리되어 존재 가능하고
필요시 로드밸런서에 연동 가능
오토스케링 그룹과 연동해서 타겟 그룹별로
스케일 인/아웃
타겟 그룹
애플리케이션 로드밸런서
리스너 리스너
타겟그룹 #1
상태확인 상태확인 상태확인
타겟그룹 #2 타겟그룹 #3
타겟 그룹
EC2 인스턴스, 마이크로서비스 또는 컨테이너 기반
애플리케이션이 해당
EC2 인스턴스의 복수의 포트를 동일한 타겟 그룹으로
등록 가능
1개의 타겟을 복수의 타겟 그룹에 등록 가능
타겟
애플리케이션 로드밸런서
리스너 리스너
타겟그룹 #1
상태확인 상태확인 상태확인
타겟그룹 #2 타겟그룹 #3
EC2 EC2 EC2 EC2 EC2 EC2 ECS ECS ECS
타겟
리스너와 타깃그룹간의 링크를 제공하고
조건과 작동으로 구성
요청이 룰의 조건과 일치하면 특정 타깃 그룹으로
전달
현재 최대 75개의 룰을 지원 향후 100개 룰 지원
룰
애플리케이션 로드밸런서
리스너#1 리스너#2
타겟그룹 #1
상태확인 상태확인 상태확인
타겟그룹 #2 타겟그룹 #3
EC2 EC2 EC2 EC2 EC2 EC2 ECS ECS ECS
룰 (기본) 룰 (*/img/*) 룰 (기본)
룰
웹소켓 네이티브 지원, 싱글 TCP 연결을
통한 전이중 통신 채널 지원
HTTP/2 지원으로 대부분의 최신 웹브라우저에서
페이지 로딩시간 개선
실시간 및 스트리밍 애플리케이션에 대한 성능 개선
웹소켓 또는 HTTP/2 추가적인 설정 불필요
성능 향상
IPv6 네이티브 지원
API 를 통해 삭제 제한을 설정하면 실수로 인한
로드밸런서 삭제 방지 가능
기능 개선
EC2Instance
상태확인은 서비스 요청을 비정상 또는
장애 인스턴스들로 전달 차단
EC2Instance
EC2Instance
EC2Instance
ALB
HTTP와 HTTPS 상태 확인
빈도 , 실패 임계치, 성공시 응답 코드를 고객이 임의대로
설정 가능
자세한 상태 확인 실패 원인을 API를 통해 확인 가능하고
AWS 콘솔에 표시
모든 백엔드 인스턴스의 상태 확인이 실패하면 Fail open
으로 서비스 요청 처리
상태 확인
Customer VPC
EC2Instance
EC2Instance
us-w
est-1a
us-w
est-1b
AmazonRoute 53
복수의 가용 영역
ALB
ALB
6
1개 가용영역
가용성 위험
2개 가용영역
6 6
100% 자원 추가
3개 가용영역
3 3 3
50% 자원 추가
복수의 가용 영역
인스턴스 불균형
Customer VPC
EC2Instance
us-w
est-1a
us-w
est-1b
AmazonRoute 53
EC2Instances
ALB
ALB
Cross-Zone Load Balancing
Customer VPC
EC2Instance
us-w
est-1a
us-w
est-1b
AmazonRoute 53
EC2Instances
ALB
ALB
복수의 가용 영역에 균등하게 서비스 요청 분산
DNS 캐싱 영향을 흡수하고 백엔드 인스턴스 활용
불균형을 제거
크로스 존 트래픽에 대한 트래픽 추가 비용 없고
기본으로 enable 되어 있음
Cross-Zone Load Balancing
각각의 타겟 그룹에
독립적인
오토스케일링이 적용
/orders
example.com
EC2Instance
EC2Instance
EC2Instance
EC2Instance
/images
EC2Instance
오토스케일링
ALB
SSL 협상 정책은 최신 업계 모범사례들를 준수하는 암호
및 프로토콜을 제공
Amazon.com 트래픽에서 검증된 보안 및 클라이언트
연결성을 모두 만족하는 최적화 제공
SSL 오프로딩
Amazon 인증서 관리자 (ACM)와 통합
수초 내에 SSL 인증서 생성 및 로드 밸런서와 연결
만료 인증서 자동 갱신되며 무료
ACM 연동
로드밸런서 레벨에서 요청을 모니터하고 웹 응용
프로그램을 악성 활동으로부터 보호
WAF 룰 및 조건에 따라 웹 요청에 대한 카운트, 차단
또는 허용
AWS WAF 연동
애플리케이션 로드밸런서모범 사례
각 로드밸런서에 대해 CloudWatch 메트릭제공
로드밸런서 및 애플리케이션 스택의 상태를 자세히 파악
가능하고 1 분 단위로 모든 메트릭 제공
로드 밸런서와 타깃 그룹 수준에 대해 메트릭 제공
CloudWatch 알람을 통해 경보또는 조치를 할 수 있도록
구성 가능
운영 모니터링
정상 인스턴스 갯수
각 가용 영역 정상 인스턴스 수
비정상적인 인스턴스의 가장 일반적인 원인은 타임아웃
초과
다른 EC2 인스턴스에서 백엔드 인스턴스에 반복 요청
가용 영역 단위로 표시
지연
요청이 로드 밸런서를 떠나 백엔드 인스턴스로 부터
응답을받을 때까지의 경과 시간 (초)
최소, 평균 및 최대 CloudWatch 통계 사용, 지연시간의
상한과 하한 표시
액세스 로그를 사용하여 요청별 디버깅 가능
거부된 접속 카운트
로드 밸런서가 요청을 라우팅하여 정상적인 백엔드
인스턴스와 연결을 설정할 수 없어 거부 된 연결 수량
클래식 로드밸런서의 서지 큐 메트릭과 동일
일반적으로 수용 용량이 부족시 발생
로드 밸런서 요청 응답 시간이 백분위 로 제공.
응답 시간의 90 번째, 95 번째, 99 번째 또는 99.9 번째
백분위에 대한 가시성 제공
애플리케이션에 대해 보다 의미 있고 엄격한 성능
목표를 관리
CloudWatch 백분위
CloudWatch 백분위
로드 밸런서가 처리하는 각 요청에 대한 자세한 정보
요청 시간, 클라이언트 IP 주소, 대기 시간, 요청 경로,
서버 응답, 암호 및 프로토콜, 사용자 에이전트
5 분 또는 60 분마다 Amazon S3 버킷으로 전송
AWS CloudTrail을 사용하여 계정에 대한 애플리케이션
로드 밸런서 API 호출을 기록하고 로그 파일을 전달
로깅
사용자 정의 헤더를 사용하여 각 요청에 고유한 추적
식별자를 삽입
: X-Amzn-Trace-ID
요청 추적을 위해 요청 체인을 통해 추적 식별자가 보존.
추적 식별자는 액세스 로그에 포함되며 응용 프로그램
자체 기록 가능
요청 추적
체크 포인트
클래식 로드밸런서 애플리케이션 로드밸런서
프로토콜 TCP, SSL, HTTP, HTTPS HTTP, HTTPS
플랫폼 EC2-Classic, EC2-VPC EC2-VPC
상태 확인 ✔ 개선됨
CloudWatch ✔ 개선됨
경로/호스트 기준라우팅 ✔
컨테이너 지원 ✔
웹 소켓 & HTTP/2 ✔
체크 포인트
TCP/SSL 또는 EC2-Classic,
클래식 로드밸런서 이용
그 외에 모든 다른 경우에는,
애플리케이션 로드밸런서 이용
본 강연이 끝난 후…
클래식 로드밸런스 모범 사례• https://aws.amazon.com/articles/1636185810492479
애플리케이션 로드밸런서 소개• https://aws.amazon.com/blogs/aws/new-aws-application-load-
balancer/
애플리케이션 로드밸런서 이해하기• http://docs.aws.amazon.com/elasticloadbalancing/latest/application/in
troduction.html
클래식 로드밸런스 vs. 애플리케이션 로드밸런서• https://www.sumologic.com/aws/elb/aws-elastic-load-balancers-
classic-vs-application/
함께 해주셔서 감사합니다!
https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에참여하시면, 행사후 기념품을 드립니다.
#AWSSummit 해시태그로 소셜 미디어에 여러분의행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!