[AWS] Elastic Load Balancing

haryun·2022년 11월 2일
0

AWS

목록 보기
6/10
post-thumbnail

AWS의 부하 분산 처리 - ELB

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

ELB란 AWS에서 제공하는 로드 밸런서이다. 서버에 트래픽이 집중된 경우 이를 다수의 서버나 다른 네트워크에 분배하여 부하를 분산시키는 역할을 한다.

1. ELB는 지원 프로토콜에 따라 세가지로 나누어진다.

  • ALB (Application Load Balancer)
    : HTTP, HTTPS에 적합한 로드 밸런서로, OSI 7계층의 응용계층에서 동작한다. 인스턴스와 ALB 사이의 통신은 암호화가 가능하다.
  • NLB (Network Load Balancer)
    : TCP, TLS에 적합한 로드 밸런서로, OSI 7계층의 전송계층에서 동작한다. 패킷을 기준으로 대상을 분배한다.
  • CLB (Classic Load Balancer)
    : 다양한 프로토콜을 지원하지만 구형 로드 밸런서이다. (최근 잘 사용하지 않음)

ELB는 EC2 인스턴스의 상태를 확인하고 데이터, 트래픽을 분산시키는 역할을 수행하며 서버에 장애가 발생해도 사용자에게 원활한 서비스를 제공할 수 있는 환경을 유지해준다.

2. 로드 밸런서는 리스너대상 그룹으로 이루어져 있다.

  • 리스너: 프로토콜과 포트를 통해 연결 요청을 확인하는 프로세스
  • 대상 그룹: 부하 분산 처리를 받는 대상의 그룹을 의미. 그룹에 속한 대상의 상태를 주기적으로 확인하며 정상 작동하는 곳에 데이터를 전달

3. ELB는 2가지 유형의 통신방식을 지원한다.

  • 인터넷 연결 방식: 퍼블릭 주소를 가지고 있어, 부하 분산 요청을 인터넷을 통해 EC2 인스턴스로 라우팅
  • 내부 방식: 프라이빗 주소를 가지고 있어, VPC 내부에 접속하여 부하 분산 요청을 EC2 인스턴스로 라우팅

4. ELB의 대표적인 특징

  • 고가용성
  • 상태 확인
  • 보안 기능 (단, NLB는 보안그룹 적용 불가)
  • 4계층, 7계층 로드밸런싱
  • 운영 모니터링

5. ALB 생성

1) ALB를 생성할 환경을 준비한다.

  • VPC, Public subnet, public routing table, Internet gateway, Public EC2 Instance(3개의 인스턴스 생성 후 2개는 HTTP, SNMP 데몬 활성화), Security group

2) 환경 검증


MY-EC2 인스턴스에 접속하여 ELB-EC2-1,2의 HTTP가 작동하는지 확인

(두 인스턴스 모두 정상적으로 서비스 중임)

3) ALB 생성

ALB 유형의 로드 밸런서를 생성하고 대상그룹으로 ELB-EC2-1,2를 지정한다. (대상그룹 프로토콜도 HTTP 80)

4) ALB 검증

MY-EC2 인스턴스에서 ALB의 DNS 주소로 접속하면 EC2-1과 EC2-2를 번갈아가며 접속하는 것을 확인할 수 있다!

그런데 EC2-1은 /dev 경로에만 index.html 파일을 가지고 있고, EC2-2는 /mgt 경로에만 index.html 파일을 가지고 있다. 이때 경로를 입력하여 접근하게 되면 다음과같은 에러가 발생한다.
(번갈아가며 분산처리되어 EC2-2에 존재하지 않는 경로로 접근하게됨)

5) 에러 해결

이는 경로 기반 라우팅을 설정하여 해당 문제를 해결할 수 있다.
(대상 그룹을 분리하여 입력한 경로가 존재하는 인스턴스로 라우팅 하도록 설정해야한다.)
대상 그룹 2개를 추가한 뒤 경로기반 라우팅 조건을 지정해준다. (리스너 규칙에서 설정 가능)

6) 에러 해결 후 검증


경로를 지정한 경우 정상적으로 라우팅이 동작

경로를 지정하지 않은 경우 로드 밸런서가 두 인스턴스를 번갈아가며 요청

6. NLB 생성

1) NLB를 생성할 환경을 준비한다.

  • 기존 생성해둔 환경을 그대로 사용한다.

2) 환경 검증

MY-EC2 인스턴스에 접속하여 ELB-EC2-1,2의 SNMP가 작동하는지 확인
(두 인스턴스 모두 정상적으로 서비스 중임)

  • snmpget 명령어는 하나의 MIB를 확인하는 명령어이다.
    - MIB: SNMP에 대응하는 네트워크의 데이터 베이스
    - OID: MIB에 저장되어 있는 오브젝트의 식별자
$ snmpget -v2c -c <커뮤니티명> <IP> <OID> 

(snmpwalk 명령을 통해 서브트리의 MIB를 모두 확인할 수도 있다.)

3) NLB 생성

NLB 유형의 로드 밸런서를 생성하고 대상그룹으로 ELB-EC2-1,2를 지정한다. (대상그룹 프로토콜도 UDP 161)

4) NLB 검증


확인해보면 UDP 프로토콜 161포트로 전달하는 SNMP 요청에 EC2-1과 2가 번갈아가며 응답하는 것을 볼 수 있다.

5) NLB를 거쳐갈 때 출발지 IP를 전달하는 방법

(출발지 IP가 13.124.86.0 MY_EC2의 IP주소 그대로 전달됨)

NLB는 클라이언트 IP를 보존하는 것을 확인할 수 있다!
(ALB는 클라이언트 IP를 자신의 IP로 대체하여 전달함. 대신 클라이언트 IP를 헤더에 저장하여 전달!)

0개의 댓글