AWS Elastic Load Balancing
안녕하세요 〰️
오늘은 AWS의 서비스 중 하나인 Elastic Load Balancing(이하 ELB)를 알아보도록 하겠습니다.
알아볼 내용은 아래의 목차와 같습니다 〰️
***************** INDEX *****************
⚖️ Elastic Load Balancing❓
💼 ELB 특징
📌 ALB & NLB
********************************************
⚖️ Elastic Load Balancing❓
먼저 Load Balancing이라는 의미를 알아보도록 할까요❓
Load Balancing은 '부하 분산'이라고 합니다.
말 그대로 서버에 들어오는 부하를 분산하는 것입니다.
예시를 들어보도록 할게요.
하나의 서버에 100만큼의 트래픽(접근)이 오다가 어느날 10000만큼의 트래픽이 생겼다고 가정해봅시다.
슈퍼 컴퓨터로 모든 트래픽을 감당할 수도 있겠지만, 늘어난 만큼의 트래픽을 감당할 수 없을 수도 있겠죠❓
그럼, 이런 문제를 어떻게 해결할 수 있을까요❓
컴퓨터를 여러개 구비해서 분산하면 해결될 것입니다 Scale Out.
컴퓨터에는 각각의 public DNS를 갖고 있을테니, 하나의 DNS로 처리해야하는 방안이 필요하게 됩니다.
우리가 구글에 접근할 때 google.com 을 입력하면 모두가 '구글'이라는 서비스를 하는 것 처럼 말이죠.
이러한 점들을 해결하기 위해 나온 서비스가 바로 Elastic Load Balancing 입니다.
그럼, 이러한 AWS Load Balancing의 특징엔 어떤 것이 있을까요❓
💼 ELB 특징
1. 트래픽을 분산해주며 자동 확장 기능을 갖습니다.
2. 인스턴스의 상태를 감지하여 오류가 있는 시스템을 알아서 배제해줍니다.
예를 들어 하나의 컴퓨터에 장애가 생기면 장애가 해결될 때까지 자동으로 배제해줍니다.
ELB는 서버 각각의 장애 여부를 수시로 확인하는 데 ELB를 생성하는 과정에서 확인 빈도수를 설정할 수 있습니다.
3. 사용자 세션을 특정 인스턴스에 고정해줍니다.
한 사용자가 서버에 접근할 때, 전에 연결되었던 컴퓨터로 연결해주어 세션을 유지할 수 있게 해줍니다.
4. SSL 암호화 지원을 해줍니다.
5. IPv4, IPv6를 지원해줍니다.
6. CloudWatch를 통해 모니터링 할 수 있습니다.
CloudWatch는 이전에 포스팅을 해두었으니, 깊이 알고싶으시면 참고하길 추천드립니다.
(이 포스팅을 보는데 큰 영향은 없습니다.)
📌 ALB & NLB
AWS가 이제까지 사용하던 Load Balancer를 Classic Load Balancer로 지칭하고 2세대 Load Balancer를 내놓았습니다.
바로, Application Load Balancer와 Network Load Balancer입니다.
그래서, 현재 Load Balancer를 구분한다고 하면,
Application Load Balancer와 Network Load Balancer, 그리고 Classic Load Balancer로 구분할 수 있습니다.
Applicatoin Load Balancer는 OSI 7 레벨에 해당하는 로드 밸런서이며,
Network Load Balancer는 OSI 4 레벨에 해당하는 로드 밸런서입니다.
OSI는 컴퓨터 네트워크 통신을 계층으로 나누어 설명한 것 입니다.
ALB와 NLB의 역할은 동일하지만, 범위가 다르기 때문에 다른 특징들이 생겨납니다.
ELB의 특징을 살피면서 그 차이를 알아보도록 하겠습니다.
ALB는 HTTP와 HTTPS 프로토콜을 지원합니다.
HTTP Header의 내용을 확인하고 분산을 해줄 수 있기 때문에 routing을 path에 나눠 분산해줄 수 있습니다.
위와 같이 MSA를 사용하거나, 분산 아키텍처를 사용할 때 유용하게 사용할 수 있습니다.
NBL은 TCP와 TLS 프로토콜을 지원합니다.
NLB는 ALB보다 하위 단계이기 때문에 위와 같이 HTTP 기반의 라우팅을 해줄 수 없는데요.
NLB는 게임 서버와 같이 빠른 처리를 위한다면, Header를 읽지 않아 대기 시간이 줄어들 수 있다는 특징이 있습니다.
ALB와 NLB는 타겟 그룹을 지정해서 동적인 포트를 그룹으로 지정하여 서버를 분산해줄 수 있습니다.
자, 그럼 여기까지 Load Balancer에 대해 알아보았습니다.
아직 사용해보지는 못해서 궁금한 점도 많고 더 많은 특징에 대해 알아보는 중입니다.
만약 수정 사항이나 추천해줄 내용을 댓글로 남겨주신다면 감사하겠습니다 ❗️
참고 :
- Using AWS Application Load Balancer and Network Load Balancer with EC2 Container Service
- 생활코딩