Load Balancer란?

ESH'S VELOG·2023년 10월 28일
1

목표
1. HTTP통신의 프로토콜로 배포한 웹 서비스를 HTTPS통신의 프로토콜로 배포하기
2. 배포 전 Load Balancer의 역할과 방식 습득하기

⭐ Load Balancer의 정의와 종류

🔧 Load Balancer ?

배포하려는 어플리케이션의 자원 풀 전체에 여러 대의 server를 이용해 네트워크 트래픽을 균등하게 배포하여 용량(동시 사용자)과 신뢰성을 높이기 위해 사용하는 방법을 로드밸런싱(load balancing)이라 하며, 이를 수행하는 장비를 로드 밸런서라고 합니다.

- 왜 로드밸런서일까요?
동시에 접속한 client가 1000명 이상이라고 가정해봅시다. 과연 server는 1000명 이상이 요청의 결과를 빠르게 낼 수 있을까요?
이를 해결하기 위한 방법으로 두 가지가 있습니다.
- Scale-up : 하드웨어 성능을 올리는 방법
- Scale-out : 여러 대의 server로 일을 나눠서 하는 방법
Scale-up은 한계가 있으며, scale-out보다 비용이 더 많이 듭니다.
그렇기 때문에 효율적인 방식인 load balancing을 많이 도입합니다.

로드 밸런서는 여러 가지 타입이 있는데 주로 layer 4와 layer 7의 종류를 많이 선택합니다.

- Layer 4(L4)

  • OSI 7계층 중 4계층인 Transport Layer(TCP, UDP)에서 Load balancing을 합니다.
    장점
  • 패킷의 내용을 확인하지 않고 로드를 분산하여 속도가 빠르고 효율이 높습니다.
  • L7에 비해 비용이 저렴합니다.
    단점
  • 패킷의 내용을 살펴볼 수 없어 섬세한 라우팅이 불가능합니다.
  • 사용자의 IP가 수시로 바뀌는 경우라면 연속적인 서비스를 제공하기 어렵습니다.
** 패킷(packet)
우체국에서 화물을 적당한 덩어리로 나눠 행선지를 표시하는
꼬리표를 붙이는데서 유래한 단어로 컴퓨터 간의 네트워크를 통해 
전송하기 쉽도록 자른 데이터의 전송 단위입니다. 
패킷은 헤더/데이터부로 이루어져 있으며 헤더는 주로 패킷의 
수신지 정보를 포함합니다.

- Layer 7(L7)

  • OSI 7계층 중 7계층인 Application Layer(HTTP, FTP, SSH, SMTP)에서 load balancing을 합니다.
    장점
  • 상위 계층에서 로드를 분산하여 더 섬세한 라우팅이 가능합니다.
  • 캐싱 기능을 제공합니다.
  • 비정상적인 트래픽을 사전에 필터링하여 서비스 안정성이 높습니다.
    단점
  • 패킷의 내용을 복호화해야 하므로 L4에 비해 비용이 높습니다.
  • 클라이언트가 로드밸런서와 인증서를 공유해야 하므로 공격자가 로드밸런서를 통해 클라이언트의 데이터에 접근할 수 있는 보안상의 위험성이 존재합니다.

저는 AWS에서 제공하는 EC2내 로드밸런서 기능을 통해 L7을 선택하여 설정을 하였습니다.

AWS Load Balancer 설정 방법

1) AWS의 EC2를 검색하여 접속합니다.
2) 아래의 스크린샷과 같은 메뉴를 선택하여 들어갑니다.

3) 로드 밸런서 생성버튼을 누르고 Application Load Balancer를 생성합니다.

  • HTTPS를 사용하기 때문에 L7 기능을 선택합니다.

4) 로드 밸런서 이름을 설정합니다.
5) 인스턴스의 네트워크 가용영역 정보를 확인

6) 네트워크 매핑에 해당되는 영역 체크(4개 다 체크해도 무방)
7) 보안그룹은 적용하려는 EC2에 해당되는 보안그룹을 적용

  • 보안 규칙에 HTTPS가 등록되어 있어야 합니다.

8) 리스너에 리스너 추가 후 HTTPS 설정하고 http, https 각각 target group을 설정합니다.
9) AWS에서 제공해주는 Certificate Manager에서 발급받은 인증서를 적용합니다.
10) 로드 밸런서 생성 완료!

참고자료
https://velog.io/@server30sopt/EC2-HTTPS%EB%A1%9C-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0#%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%84%9C

profile
Backend Developer - Typescript, Javascript 를 공부합니다.

1개의 댓글

comment-user-thumbnail
2023년 10월 28일

좋은 정보 감사합니다!

답글 달기