1. Elastic Load Balacer 란?
Amazon Web Service를 공부하다 보면 로드밸런서라는 용어를 한 번쯤은 들어봤을 것이다. 로드밸런서는 다수의 컴퓨팅 리소스(EC2, Lambda, 등)를 부하 분산시켜주는 아주 중요한 서비스이다.
로드밸런서의 가장 대표적인 효과로는 부하를 분산하며, 가용성과 내결함성을 증가시키는 효과가 있다. 로드밸런서는 타겟 그룹을 통해 주기적으로 Healthcheck를 수행하여 컴퓨팅 리소스에 장애가 발생할 경우 해당 인스턴스로 요청을 전달하지 않고, 다른 인스턴스로 전달하여 가용성과 내결함성을 높인다.
2. Application vs Network
Elastic Load Balancer을 자세히 살펴보면 Application Load Balancer, Network Load Balancer, Classic Load Balancer, 등.. 여러 가지의 로드밸런서 유형이 존재한다.
Application Load Balancer은 7계층에서 동작한다. 7계층의 정보(HTTP Header, URL, Query String, 등..)를 확인하여 라우팅을 하기 때문에, NLB에 비해서 상대적으로 느리다는 단점이 있다. 하지만 위에서 언급한 HTTP 정보(Header, URL, Query String, 등..)를 기반으로 효과적인 라우팅이 가능하다.
Network Load Balancer은 4계층에서 작동한다. 4계층 정보(TCP information..)를 확인하여 라우팅을 하기 때문에 ALB에 상대적으로 빠르다는 장점이 있다. 하지만 ALB와 다르게 NLB는 TCP 정보(TCP port number)만을 통해 라우팅을 한다.
로드밸런서는 기본적으로 트래픽을 수신한 가용 영역(AZ)를 대상으로만 트래픽을 전달한다. Cross-zone-load-balancing를 활성화하면 다른 가용 영역으로도 트래픽을 전달하여, AZ 간의 컴퓨팅 성능이 일정하지 않아도, 모든 인스턴스에 효율적인 부하 분산이 가능하다. 하지만 AWS는 서로 다른 AZ간의 데이터 전송 비용이 발생된다는 단점이 있다.
+ ALB는 활성, NLB는 비활성이 기본 값이다.
3. Application Load Balancer 구축 실습
1. EC2 인스턴스 2대 생성 & 웹서버 구성
- 시작데이터
#!bin/bash
yum install -y httpd
systemctl start httpd
systemctl enable httpd
- 웹서버
index.html 의 내용을 다르게 하여 서버를 구분하기 쉽게 한다.
2. 타겟 그룹 생성 & Healthcheck
- Target Group
Server-TG: Server1, Server2
Server1-TG: Server1
Server2-TG: Server2
Target Group에 여러 개의 인스턴스를 넣는다 하지만 리스너 규칙 실습을 위해 3개의 Target Group을 만들었다.
- Healthcheck
각각의 Target Group 생성 후 Health Check를 이용하여 Target 인스턴스의 서비스 운영상태를 알 수 있다.
3. 로드밸런서 생성 & 리스너 규칙
- 로드밸런서 생성
Application Load Balancer
체계: 인터넷 경계
가용영역: Public Subnet (IGW가 있는)
보안그룹: VPC default or 사용자 정의
대상그룹: Server-TG (기존 대상 그룹)
실제 서비스 운영 시 보안그룹의 경우는 default를 추천하지 않는다.
잠시 기다리면 생성한 로드밸런서 상태가 활성으로 바뀐다.
- 리스너 규칙
생성 된 로드밸런서 - 리스너 - 규칙보기/편집
규칙을 다음과 같이 편집한다. Query Strin[Server:n] 값을 통해 알맞은 Target Group으로 요청을 전달한다.
4. 실행
로드밸런서의 DNS 이름을 주소창에 입력하여 웹서비스에 접근할 수 있다.
웹사이트에 접속하여 새로고침(F5)을 해보면 페이지의 계속 내용이 바뀌며 로드밸런서가 정상 작동하는것을 알 수 있다.
방금 전 생성한 리스너 규칙도 정상적으로 작동하는것을 볼 수 있다.
4. 마치며
Elastic Load Balancer는 AWS에서 제공하는 여러가지 서비스에서 자주 사용이 된다. 지식을 키우자.
'IT Study > AWS & Server, Network' 카테고리의 다른 글
[AWS] SSH 사용자 생성 & EC2 비밀번호 접속 (0) | 2021.07.29 |
---|---|
[AWS-NETWORK] Route53를 공부하기 위한 DNS 이론 (0) | 2021.07.26 |
[AWS] Docker을 사용하여 빠르게 CTFd 구축 하기 (0) | 2021.02.04 |
[AWS] OpenSSH로 EC2 접속하기. (0) | 2021.01.28 |
[AWS] PuTTY로 EC2 접속하기 (0) | 2021.01.28 |