Background Knowledge
1. 확장성 & 고가용성(Scalability & High Availability)
1) 확장성
애플리케이션과 시스템이 조정한다면 더 많은 양을 처리할수 있다는 의미
(1) 수직 확장성
- 인스턴스의 사이즈를 늘리는것. ex RAM 1GB PC 1개를 4GB인 PC로 바꾸는거
- 데이터베이스와 같은 상황에서 주로 사용한다.
- 한계: 하드웨어 제한.
(2) 수평 확장성( = Elasticity)
- 인스턴스의 ‘수'를 늘리는것. ex RAM 1GB PC 1개를 → 개로 해서 효율성 늘리는것.
2) 고 가용성
데이터 센터에서의 손실에서 살아남도록 하는것이며, 즉, 무중단 시스템을 만드는것. (수평확장과 함께 사용되는 개념이기도 한다.)
- Multi AZ
- Auto Scaling Group multi AZ
- Load Balancer multi AZ
2. 로드 밸런싱(Load Balancing)
로드밸런서는 서버 or 서버셋으로 들어오는 트래픽을 백엔드서버나 서버들로 전달하는 역할을 한다.
위처럼 유저가 Elastic Load Balancer에 접근하면 End-point는 다를지라도 같은 것을 보고 있게 한다.
1) 로드밸런싱이 필요한 이유?
- 트래픽 부하를 다수의 다운스트림 인스턴스로 분산하기 위해
- 애플리케이션에 하나의 single-point (DNS)만 노출시키기 위해
- 다운스트림 인스턴스의 장애를 원활히 처리하기 위해
- 인스턴스의 상태를 정기적으로 체크하기 위해
- 웹사이트에 SSL termination(HTTPS)를 제공하는 암호화된 트래픽을 갖기 위해
- 클라우드 내에서 개인 트래픽과 공공 트래픽을 분리하기 위해
- 고 가용성으로 Multi AZ를 갖기 위해
AWS Elastic Load Balancer
1. AWS ELB는 무엇인가?
- 네트워크 트래픽 분산을 통한 애플리케이션 확장성 개선
- L4 Switch와 같은 관리형 로드 밸런서(managed load balancer)
- AWS가 관리하며, 어떤 경우에도 작동할 것을 보장
- AWS가 업그레이드, 유지관리, 고가용성을 책임
- 로드밸런서의 작동 방식을 수정할 수 있다.
- 자체 로드 밸런서를 쓰는것 보다 저렴
- 다수의 AWS 서비스들과 통합.
작동이 어케되는가?
인스턴스 상태를 확인할 수 있는데, 프로토콜, 포트, 엔드포인트로
200으로 응답안하면 좋지 않다고 체크하고
ELB가 그쪽으로 안보냄
Elastic Load Balancing은 등록 취소 중인 대상으로 요청을 전송하는 것을 중지합니다. 기본적으로 Elastic Load Balancing은 등록 취소 프로세스를 완료하기 전에 300초 동안 대기하는데, 이는 대상에 대해 진행 중인 요청을 완료하는 데 도움이 될 수 있습니다. Elastic Load Balancing이 대기하는 시간을 변경하려면 등록 취소 지연 값을 업데이트합니다.
등록 취소하는 대상의 초기 상태는 draining
입니다. 등록 취소 지연이 경과한 후 등록 취소 프로세스가 완료되며 대상 상태는 unused
입니다. 대상이 Auto Scaling 그룹의 일부인 경우 종료 및 대체될 수 있습니다.
2.AWS의 4가지 ELB
- CLB, Classic Load Balancer (v1, 2009)
- HTTP, HTTPS, TCP, SSL 지원
- ALB, Application Load Balancer (v2, 2016)
- HTTP, HTTPS, WebSocket
- ALB는 URL Path, Hostname, HTTP 헤더 및 쿼리 문자열을 기반으로 트래픽을 다른 대상 그룹으로 라우팅할 수 있다.
- 쿠키 이름(AWSALB, AWSALBAPP, AWSALBTG)
- NLB, Network Load Balancer(v2, 2017)
- TCP, TLS(secure TCP), UDP
- GWLB, Gateway Load Balancer(v3, 2020)