참고
고가용성 및 스케일링
수직 확장성
NOTE
인스턴스 크기를 확장하는 것을 의미!
주니어 직원 → 시니어 직원
(더 뛰어난 사람으로 변경)
•
전화 교환원으로 예를 드는경우, 신입사원의 경우 1분에 5통을 받지만, 경력사원은 1분에 10통을 받을 수 있다.
•
신입사원 → 경력사원으로 전환하는 것이 수직확장성!
•
EC2로 생각하면 인스턴스의 사양을 높이는것!
•
데이터베이스와 같이 분산되지 않은 시스템에서 흔히 사용된다.
수평 확장성
NOTE
인스턴스 개수를 확장하는 것을 의미!
직원을 더 뽑음
•
전화 교환원으로 예를 드는경우, 여러명을 고용하는 방법!
•
EC2로 생각하면 서버수를 늘려서 로드밸런싱을 해준다.
◦
수를 늘린다 ⇒ 스케일 아웃
◦
수를 줄인다 ⇒ 스케일 인
•
수평 확장을 했다는건 분배 시스템이 있다는걸 의미한다!
고가용성
NOTE
시스템을 적어도 둘 이상의 AWS AZ나 데이터 센터에서 가동 중이라는걸 의미한다! ⇒ 하나가 터져도 동작함
뉴옥지사가 터져도 샌프란시스코 지사가 열일한다!
•
전화 교환원으로 예를 드는경우, 지사를 여려곳에 두는 방식!
•
EC2로 생각하면 다중 AZ를 사용해서 로드 밸런싱해주는 것
ELB (Elastic Load Balancer)
NOTE
애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서비스 환경을 운용하는데 도움을 주는 서비스다!
•
health check 가능
•
HTTP 2.0, Websocket지원
•
고정 세션(Sticky), SSL Offload(SSL 암복호화)
로드 밸런싱 종류
•
Application Load Balancer (ALB)
◦
HTTP, HTTPS, WebSocket
•
Network Load Balancer (NLB)
◦
TCP, TLS(Secure TCP), UDP 지원
•
Gateway Load Balancer (GWLB)
◦
3계층에서 작동하므로 3계층과 IP프로토콜에서 동작함.
Load Balancing 기능
NOTE
부하분산 처리
클라이언트의 무수한 요청들을 분산해서 처리한다.
•
Load(부하), Balancing(분산)이란 컴퓨터 네트워크의 기술의 일종으로 둘 혹은 셋이상의 중앙처리 장치와 같은 컴퓨터 자원들에게 작업을 나누는것을 말한다.
엔드포인트 역할 제공
8개의 인스턴스에 대해 각 IP로 접속을하면 매우 복잡해질것..
•
스케일 아웃에 대한 하나의 엔드포인트를 제공하기도 한다.
•
인스턴스가 여러개여도 하나의 접속경로로 통일할 수 있음!
Application Load Balnacer
NOTE
7계층 Application Layer를 다루는 로드밸런서이다!
•
URL 대상 경로에 기반한 라우팅 가능
•
URL의 호스트 이름에 기반한 라우팅 가능
•
지연시간 ⇒ 400ms
실습
실습과정
Network Balancing 기능
NOTE
4계층 Transport Layer를 다루는 로드밸런서이다!
•
TCP, UDP, HTTP, HTTPS를 사용하는 요청을 받아들여 부하분산을 실시한다.
•
ALB보다 성능이 더 빠르기 때문에, 고성능을 요구하는 환경에서의 부하분산에 적합하다!
•
IP + Port를 보고 스위칭해준다!
•
트래픽은 인스턴스의 기본(Primary) 네트워크 인터페이스에 지정된 프라이빗 IP를 통해 라우팅된다
•
지연시간 ⇒ 100ms, 비용이 들지 않는다.
실습
•
ALB와 동일하게 생성해주면 된다.
Gateway Load Balancer(GWLB)기능
NOTE
3계층 Network Layer를 다루는 로드밸런서이다!
•
방화벽, 심층 및 패킷검사 시스템 같은 가상 어플라이언스를 배포, 확장 및 관리할 수 있다.
•
트래픽이 EC2에 도달하기 전에 먼저 트래픽을 검사하거나 분석하거나 인증하거나 로깅하는 작업을 먼저 수행함!
•
6081번의 GENEVE 프로토콜 사용!
Sticky Session
NOTE
동일한 클라이언트가 항상 로드 밸런서의 동일한 인스턴스로 가도록 고정성 구현!
Clinet1은 일정시간동안 1번에 연결됨
•
사용자가 세션 데이터를 잃지 않도록 해야할 때 사용한다.
•
2가지 종류의 쿠키가 있다.
◦
CUSTOM COOKIE
▪
타겟에 의해 생성
▪
애플리케이션에 필요한 모든 사용자 정의 속성 포함
◦
APPLICATION COOKIE
▪
로드 밸런서에서 생성
▪
쿠키 이름은 AWSALBAPP
Cross-Zone 로드 밸런싱
NOTE
각 로드 밸런서 인스턴스는 전체 가용 영역에 등록된 모든 인스턴스에 전반적으로 고르게 분산된다!
교차영역 로드밸런싱을 사용하지 않으면, ALB가 가진 Node에 대해서만 분산을함!
•
각 AZ에 있는 ALB는 가용 영역에 관계없이 전체 10개에 대해 고르게 분배한다!
•
각 ELB의 cross-zone 부하 분산 기능
◦
ALB
▪
항상 이 기능을 사용할 수 있다. (Disable이 불가능함)
▪
AZ간 데이터 전송에 관한 비용을 따로 지불하지 않는다.
◦
NLB
▪
기본적으로 DIsable 상태이다.
▪
교차 영역 로드 밸런싱을 활성화 할 경우 추가 비용을 지불해야 한다.
ELB - SSL 인증서
NOTE
•
SSL 인증서를 이용해 클라이언트 - 로드 밸런서 사이의 데이터 전송에 암호화가 가능하다.
◦
SSL(Secure Socket Layer)
◦
TLS(Transport Layer Security)
•
HTTPS 리스너를 설정
SNI(Server Name Indication)
웹 서버 상에 다수의 SSL을 발급해 여러 개의 웹사이트를 제공하도록 하는 문제를 해결해줌
•
클라이언트가 초기 SSL 핸드세이크에서 대상 서버의 호스트 이름을 명시해야 한다.
◦
⇒ 클라이언트가 연결하고자 하는 웹 사이트의 이름을 예기하면, 서버가 어떤 인증서를 불러올지 알 수 있다.
Connection Draining
NOTE
인스턴스가 등록 취소 또는 비정상적인 상태일 때 인스턴스에 어느 정도의 시간을 주어 in-flight 요청을 완료할 수 있도록 만들어 주는 기능이다.
•
연결이 draining 되면, 즉 인스턴스가 draining되면 ELB는 등록 취소 중인 인스턴스로는 새로운 요청을 보내지 않는다.
◦
즉 새로운 요청은 shut down된다.