728x90

로드밸런서(load balancer)란 서버에 가해지는 트래픽을 여러 대의 서버에게 균등하게 분산시켜주는 역할을 하는 것으로 알려져 있다.

그런데 이러한 로드 밸런서를 외부에서 private subnet에 구축된 EMR cluster의 master node에 접속하는 방법으로 활용할 수 있다고 해서 해당 기능과 역할에 대해서 더 정리해 보려 한다.

 

aws의 해당 가이드를 보면,  로드밸런서를 통해 private subnet에 구성된 노드를 리스너로 구성하여 접속할수도 있다고 한다.

실제로 아래의 그림처럼 로드밸런서의 구성을 아래처럼 선택하여 생성할 수 있다. 

 

로드밸런서의 주요 기능

  • NAT 
    • 이 기능으로 인해, private subnet에 접속하기 위한 방법으로 로드밸런서를 활용하는 것이다.
  • 터널링(Tunneling)
    • 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 해주는 개념
    • 데이터를 캡슐화해 연결된 상호간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있음
  • DSR(Dynamic Source Routing protocol)
    • 로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념

 

로드밸런싱의 종류

타겟 그룹(Target Group)

타겟그룹이란 EC2인스턴스를 오토스케일링 할 수 있는 단위로 사용. 각각의 타겟그룹에 있는 인스턴스들은 정의된 Health Checks(상태 확인)를 수행한다. 

 

Auto Scailing

오토 스케일링은 미리 정의한 용량 정책에 따라 EC2 인스턴스의 용량을 확대하거나 축소할 수 있는 것이다.

EC2와 오토 스케일링을 결합해 고가용성 아키텍처를 구현할 수 있으며, 언제든 원하는 수만큼의 인스턴스를 운용할 수 있다.

 

Health Checks(상태 확인)

로드밸런서에는 Health Checks를 할 수 있다. Health Checks는 타겟그룹에 원하는 경로와 포트를 설정하여 HTTP 응답이 정상적으로 오는지 확인하고, 오지 않는다면 비정상 상태의 인스턴스를 제외한 다른 인스턴스로만 트래픽을 분산한다.

  • InService (정상적으로 응답)
  • OurOfService (응답 실패)

 

ELB(Elastic Load Balancer)

Elastic Load Balancing은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산한다. 등록된 대상의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅한다. 

로드 밸런서는 클라이언트에서 오는 트래픽을 허용하고, 하나 이상의 가용 영역에서 등록된 대상(예: EC2 인스턴스)으로 요청을 라우팅한다. 로드 밸런서가 비정상 대상을 감지하면, 해당 대상으로 트래픽 라우팅을 중단한다. 그런 다음 대상이 다시 정상으로 감지되면 트래픽을 해당 대상으로 다시 라우팅한다.

서버의 기본주소가 바뀌면 로드밸런서를 새로 생성해야하며 하나의 주소에 하나의 타겟그룹으로 보내게 된다. 따라서 타겟그룹이 많아질수록 더 많은 수의 로드밸런서가 필요하고 비용도 그만큼 더 들아가게 된다.

 

ALB(Application Load Balancer)

Application Load Balancer는 개방형 시스템 간 상호 연결(OSI) 모델의 일곱 번째 계층인 애플리케이션 계층에서 작동한다.
로드 밸런서는 요청을 받으면 우선 순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙 작업의 대상 그룹에서 대상을 선택한다. 대상이 여러 개의 대상 그룹에 등록이 된 경우에도 각 대상 그룹에 대해 독립적으로 라우팅이 수행된다. 

리스너는 구성한 프로토콜 및 포트를 사용하여 클라이언트의 연결 요청을 확인한다. 각 대상 그룹은 지정한 프로토콜과 포트 번호를 사용하여 EC2 인스턴스 같은 하나 이상의 등록된 대상으로 요청을 라우팅한다. 그리고 여러 대상 그룹에 대상을 등록할 수 있다.

ALB의 경우는 네트워크 레이어7의 프로토콜에 대한 부하만 처리할 수 있다. ELB와 다르게 경로나 포트등에 따라 다른 타겟그룹으로 맵핑할 수 있다. 포트 단위로 연결해줄 수 있기 떄문에 도커에서 유용하게 작동할 수 있고 하나의 대상그룹에 더 많은 컨테이너를 넣을 수 있어 비용을 최적화할 수 있다. EC2 인스턴스, AWS 람다, IP로도 연결이 가능하고 특정한 요청에 대해서는 서버없이 응답메세지를 작성할 수 있다. 

하지만 ALB는 IP가 끊임없이 변화하기 때문에 ALB의 Public IP를 목적지로 삼아 접근 제어(ACL)를 실시하는 네트워크 장비에겐 매우 난감할 수도 있습니다.

 

NLB(Network Load Balancer)

Network Load Balancer는 오픈 시스템 상호 연결(OSI) 모델의 네 번째 계층에서 작동한다. 초당 수백만 개의 요청을 처리할 수 있다. 로드 밸런서가 연결 요청을 받으면 기본 규칙의 대상 그룹에서 대상을 선택한다. 리스너 구성에 지정된 포트에서 선택한 대상에 대한 TCP 연결을 열려고 시도한다.

NLB는 L4 로드 밸런싱이기 떄문에 TCP와 UDP에 대한 트래픽을 처리할 수 있고, TLS(SSL Offload)까지 가능한 로드밸런서이다.

무엇보다 NLB의 가장 큰 특징은 ALB와 다르게 고정 IP를 갖는다는 것이다. Private IP뿐만 아니라 Public IP까지 고정된 IP로 제공한다. 

 

 

 

 

 

Reference

https://yoo11052.tistory.com/63

 

[AWS] 로드 밸런서란?

ELB 와 ALB에 대해 들어가기 앞서 로드밸런서에 대해 짚고 넘어가 봅시다. 로드 밸런서(Load Balancer) 서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역할을 하는 것이 로드 밸

yoo11052.tistory.com

 

728x90

'CS STUDY > Computer Science' 카테고리의 다른 글

[Network]VPC/Subnet  (0) 2022.05.09
Disk I/O 기반 VS 인메모리 기반  (0) 2022.03.07
프로세스 교착상태  (0) 2022.03.01
CPU bound VS I/O bound  (0) 2022.03.01
프로세스 VS 스레드  (1) 2021.03.20

+ Recent posts