반응형

ELB(Elastic Load Balancing)이란?

ELB(Elastic Load Balancing)는 AWS의 VPC 상에 인스턴스나 서비스들이 단일 구성환경하에서 장애가 발생을 회피하기 위해 구성한 다중 서비스 환경 하에서 부하분산과 로드발란싱을 해주기 위해 사용하는 서비스를 말한다.

 

 

ELB의 종류

ELB는 ALB(Application Load Balancer), NLB(Network Load Balancer) 그리고 CLB(Classic Load Balancer) 3개의 종류가 존대한다. 그 각각의 기능은 다음과 같다.

 

ALB

ALB(Application Load Balancer)는 HTTP나 HTTPS와 같이 웹 어플리케이션에 대한 분산 처리를 제공하는 로드 벨런서이다.

 

NLB

NLB(Network Load Balancer)는 TCP나 UDP 프로토콜에 대한 포트 정보를 정의하여 네트워크 기반의 분산 처리를 제공하는 로드발란서 이다.

 

CLB

CLB(Classic Load Balancer)는 VPC 이전 버전에서 EC2에 대한 로드 발란싱을 사용할때 사용했었다. 최근에는 사용을 하지 않는다.

 

구분 ALB NLB
프로토콜 HTTP, HTTPS TCP, UDP, TLS
처리속도 느림 빠름
계층 Layer 7 Layer 4
프라이빗 링크 미지원 지원
경로기반 라우팅 지원 미지원
호스트기반 라우팅 지원 미지원

 

 

ELB의 구성 - 리스너와 타겟 그룹

ELB는 크게 자신이 서비스하는 대상을 정의하는 리스너(Listener)와 부하 분산 대상을 정의하는 대상 그룹(Target Group)으로 이루어져 있다.

ALB의 Listner와 Target Group

 

리스너(Listener)

리스너는 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 일련의 프로세스이다. 로드 밸런서에서 서비스하고자 하는 프로토콜과 포트를 지정하는 규칙을 생성한다.

 

대상 그룹(Target Group)

하나 이상의 대상을 라우팅하여 부하 분산을 하는 데 사용한다. 대상 그룹에 속한 대상에게 주기적으로 핼스체크(주로 Keepalive 체크)를 통해 대상 서비스의 정상유무를 체크한다.

 

 

Internet Facing Load Balancer와 Internal Load Balancer

ELB는 Internet Facing Load Balancer 방식과 Internal Load Balancer 방식의 2가지 유형이 있다.

 

 

Internet Facing Load Balancer

Public IP를 가지고 있어 외부 인터넷을 통해 들어온 요청을 내부 EC2 등의 인스턴스로 라우팅한다.

 

Internal Load Balancer

내부 IP를 가지고 있어 Load Balancer를 위한 VPC 내부에 액세스하여 등록된 EC2 인스턴스 등 컴퓨팅 자원으로 라우팅한다.

 

 

 

ELB의 특징

  • 트래픽 분산
  • 자동 확장
  • 인스턴스의 상태를 자동 감지해서 오류가 있는 시스템은 배제
  • 사용자 세션을 특정 인스턴스에 고정
  • SSL 암호화 지원
  • SSL의 경유지로 ELB를 사용하는 경우에 SSL 처리에 따른 부하를 ELB가 수용하게 된다.
  • IPv4, IPv6 지원
  • CloudWatch를 통해서 모니터링
  • 사용한 시간과 통과한 트래픽에 따라서 종량제로 과금

 

 

ELB를 통한 로드밸런싱

ALB 적용

아래의 실습을 테스트해볼려면 두개 이상의 AZ에 Public Subnet을 만들고 EC2 인스턴스를 각 서브넷에 설치 후 Elastic IP를 지정하고 웹서버를 설치후 html 파일을 같은 경로에 같은 파일명으로 만든 후 2개의 서버에서 각 식별이 가능한 내용을 작성해 두도록 한다.

그리고 다음을 테스트해보자

 

AWS 콘솔> 서비스 > EC2 > 로드 밸런서 > 로드 밸런서 생성> Application Load Balancer 생성

  • 이름은 인식하기 쉬운 명칭을 부여한다
  • 리스너는 ALB에서 로드 밸런싱을 원하는 서비스 포트를 지정한다.

 

  • 서비스하고자 하는 리소스가 있는 VPC를 선택하고 AZ를 선택한다.

 

  • 보안 그룹은 인바운드 규칙을 아래와 같이 설정한다.(예에서는 ALB는 80 포트와 22번 포트만 허락한다)

  • 식별하기 쉬운 이름으로 대상 그룹(Target Group) 이름을 지정하고 로드밸런싱 하고자하는 프로토콜과 포트를 지정한다.

  • 상태검사(Keepalive) 값은 다음과 같은 의미가 있다(여기서는 그냥 기본 값 적용)
    • 프로토콜 및 경로: Keepalive 체크에 사용할 프로토콜과 URI
    • 포트: Keepalive 체크에 사용할 포트
    • 정상 임계값: 비정상 상태에서 정상 상태 확인까지 확인하는 검사 회수
    • 비정상 임계값: 대상을 비정상으로 판단 할때까지 시도할 실패 회수
    • 제한 시간: 상태 검사 실패까지 제한 시간
    • 간격: 개별 keepalive 검사 간격 시간
    • 성공코드 : 성공시 리턴코드

마지막으로 ALB할 대상 인스턴스 체크 후 "등록된 항목에 추가" 

 

다음으로 완료를 하게 되면 아래와 같이 ALB가 생성된 것을 확인 할 수 있다.

프로비저닝 상태에 있는 MY-ALB

AWS Management 콘솔에서 EC2> 로드 밸런싱> 대상 그룹을 선택해 다음과 같이 선택해 보자

앞서 만들었던 대상 그룹(ALB-TG)의 Instance들이 healithy 상태에 있다.(최초 인스턴스트는 'initial'에서 시간이 지나면 'healthy' 상태로 변경된다.

 

마지막으로 지금 만든 ALB의 설명으로 들어가 ALB의 DNS이름 복사해 http://[복사한DNS명]/index.html을 클릭하면 우리가 만든 서버 2대의 html이 클릭할때마다 변경되면서 보이는 것을 볼수 있다.

 

 

 

NLB적용

NLB 적용은 ALB와 동일하게 EC2> 로드 밸런싱> 로드 밸런서> 로드 밸런서 생성으로 들어가서 마지막에 "Network Load Balancer"를 선택하면 된다.

 

NLB 설정 예시

 

이렇게하면 NLB를 생성할 수 있다.

 

 

이번 포스팅은 여기까지 ~

반응형

+ Recent posts