이번 포스팅에서는 AWS에서 제공하는 로드밸런서(LB)에 대해서 포스팅하려 합니다.
클라우드 환경에서 트래픽을 효율적으로 분배하여 애플리케이션의 성능과 가용성을 향상가능한 서비스입니다.
로드밸런서(LB)란?
로드밸런서(Load Balancer)는 네트워크 또는 애플리케이션 계층에서 클라이언트로부터 들어오는
트래픽을 여러 대상(EC2 인스턴스, 컨테이너, Lambda 함수 등)에 분배하는 서비스입니다.
- 트래픽 분산을 통한 서버 과부하 방지
- 애플리케이션의 고가용성 확보
- 장애 서버를 자동으로 제외하고 안정적인 서비스 제공
AWS에서는 이를 완전 관리형 서비스로 제공하여 설정 및 유지보수 부담을 줄여줍니다.
LB의 종류와 특징
AWS에서는 4가지의 로드밸런서를 제공합니다.
이 모든 로드 밸런서들을 합쳐서 ELB라고 부르기도 합니다.
1. Application Load Balancer (ALB)
- 계층: 애플리케이션계층(OSI 7 계층)
Http, Https 전용 LB - 특징 : 경로 기반/호스트 기반 라우팅 URL의 특정경로, 도메인이름에 따라 대상그룹에 트래픽 라우팅
websocket지원
다양한 대상지원(EC2, ASG, ECS컨테이너, Lambda, IP주소등 - 사용 사례 : 웹 애플리케이션, 마이크로 서비스
2.Metwork Load Balancer (NLB)
- 계층: 네트워크 계층(OSI 4 계층)
TCP/UDP의 트래픽 처리 - 특징 : 고성능, 낮은 지연 시간 - ALB의 비해 낮은 지연시간
고정된 접근 포인트 필요시 유용
트랙픽을 특정 IP주소나 EC2인스턴스로 리다이렉팅 가능
ALB와 조합(ALB앞에 NLB를 배치)하여 고정 IP의 이점+HTTP트래픽처리기능 활용가능 - 사용 사례 : 실시간 데이터 처리, 고속 데이터 전송
3.Gate way Load Balancer(GWLB)
AWS네트워크 내에서 트래픽을 효과적으로 관리
- 특징 : 네트워크 트래픽을 필터링하거나 모니터링하는 가상 어플라이언스를 배포하기 위해 설계된 서비스
배포 및 확정의 용이, 단순화된 라우팅관리 가능 - 주요 기능: 트래픽미러링 및 검열, 가상 방화벽, ELB와 결합하여 트래픽분배
- 사용사례:네트워크 보안 어플라이언스, 트래픽 분석 및 제어
4.Classic Load Balancer (CLB)
- 계층: 애플리케이션 및 네트워크 계층
- 특징 : 이전 세대 서비스/ 제한된 기능 제공
- 사용 사례 : 기존 워크로드 호환 목적
ALB/ NLB 실습
사전준비
먼저 ALB부터 설정하면서 실제로 로드밸런서의 작동과정을 확인해 보겠습니다.
먼저 ec2 인스턴스 2개 생성해 주겠습니다.
amazon linux2023 AMI 사용하고
t2.micro로 생성하겠습니다.
키페 어는 설정하지 않고
보안그룹은 http접속을 허용하기 위해 80번 포트만 열어주겠습니다.
마지막으로 고급설정을 열어서
사용자데이터 설정에
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
위의 스크립트를 넣어서 ec2인스턴스를 2개 생성하겠습니다.
스크립트의 내용을 설명하면
apache웹서버를 설치하고 시작하고 로드밸런서가 작동하는 과정을 확인해 보기 위한
간단한 웹페이지를 보여줄 수 있게 설정하였습니다.
ec2인스턴스가 성공 적으러 실행되면 두 인스턴스의 ip주소를 통해서 웹페이지에 접속하여
ip주소가 다른 것을 확인하고 정삭적을 작동하는 것을 확인하였습니다.
ALB
이제 본격적으로 ALB를 사용해 트래픽을 분산하여 보도록 하겠습니다.
로드밸런서로 이동하여 생성을 클릭 후 ALB를 생성을 선택해 줍니다.
이름은 ALB-demo
체계는 인터넷경계, IPv4를 선택합니다.
다음으로 네트워크 매핑을 설정해 줍니다.
ec2인스턴스가 속한 vpc를 선택해 줍니다.
그리고 모든 가용영역을 선택하겠습니다.
보안그룹에서는 새 보안 그룹을 생성하겠습니다.
demo-sg-ALB라고 이름을 붙이고
http요청을 모두허용하도록 설정하겠습니다.
그리고 이번에는 대상그룹을 생성해줘야 합니다
대상 그룹 생성을 클릭하고 생성을 시작합니다.
인스턴스를 선택하고
demo-tg-alb라 이름을 설정하고
나머지설정은 그대로 두고 다음을 눌러 생성을 마치도록 합니다.
다시 돌아와서 새로고침을 하게 되면 demo-tg-alb라는 대상그룹이 생성되어 선택가능합니다.
요약에서 다시 한번 확인 후 ALB를 생성하겠습니다.
잠시 프로비저닝 되는 동안 기다리면서 DNS이름을 복사하겠습니다.
프로비저닝완료 후에 DNS이름을 통해서 접속하면 미리 만들었던 EC2인스턴스의 웹페이지에 접속 가능합니다.
새로고침을 할 때마다 로드밸런서가 트래픽을 정상적으로 분산해 주는 것을 확인 가능합니다.
또한 로드밸런서는 자동으로 상태를 확인하고 대상으로 트래픽을 전송하기 때문에
대상그룹의 인스턴스가 하나 종료된다면 확인을 하고 트래픽을 제어합니다.
위처럼 인스턴스의 정지상태를 확인하고 트래픽을 남은 대상인 ALB_EC2_2로 고정적으로 보냅니다.
다시 인스턴스를 복구한다면 다시 2개의 인스턴스에 트래픽을 분산하여 줍니다.
NLB
이번에는 NLB를 이어서 실습하도록 하겠습니다.
ALB_EC2인스턴스를 NLB_EC2인스턴스로 이름을 바꾸어서 사용하겠습니다.
그전에 ALB로드밸런서와 대상그룹등을 지우도록 하겠습니다.
그리고 다시 로드밸런서 생성을 클릭 후 NLB 생성을 클릭해 줍니다.
설정자체는 ALB와 비슷합니다.
이름은 demo-NLB
네트워크 매핑은 ec2가 속한 vpc선택 후 모든 서브넷을 선택하겠습니다.
여기서 확인해 보면 ALB와 차이점하나 보이는데
AWS할당과 탄력적 IP주소 사용이 보입니다.
NLB에서는 탄력적 IP주소가 있다면 IP주소를 특정가용영역마다 사용가능합니다.
다음은 보안그룹 설정입니다.
선택사항이지만 설정을 해보도록 하겠습니다.
새 보안 그룹 생성을 클릭하여 인바운드 규칙 80번 포트를 모두허용하는 demo-sg-nlb라는 보안그룹을 생성했습니다.
ALB처럼 대상그룹 또한 생성해야 합니다.
이름은 demo-tg-nlb로 생성하고
프로토콜 포트는 TCP:80으로 설정합니다.
IPv4선택하고 vpc는 ec2가 있는 vpc를 선택합니다.
그리고 고급설정값을 아래처럼 수정하겠습니다.
그리고 ec2선택 후 대상그룹을 생성하고
마지막으로 요약 확인 후 NLB를 생성합니다.
생성 후 상태가 활성이 된다면 DNS이름을 통해서 접속해 보면
기존에 웹서버에 접속이 가능합니다.
새로고침을 하다 보면 ALB처럼 로드밸런서가 트래픽을 분산해 주는 것을 확인 가능합니다.
이번포스팅에서는 LB가 무엇인지 각 LB마다의 특징 사용사례등을 배웠고
실제로 생성해 보면서 ALB와 NLB가 작동하는 과정을 보았습니다.
'AWS > EC2' 카테고리의 다른 글
EC2 인스턴스 결제에 따른 종류 (0) | 2024.05.02 |
---|---|
EC2 인스턴스의 종류 (1) | 2024.05.02 |
EC2 보안그룹 실습 (0) | 2024.04.30 |
EC2-보안그룹 (0) | 2024.04.26 |
EC2 인스턴스 - 웹서버 생성 후 접속 (0) | 2024.04.26 |