외로운 Nova의 작업실

aws - ELB 본문

Cloud/aws

aws - ELB

Nova_ 2023. 10. 17. 21:05

- ELB

Elastic Load Balancing은 부하 분산과 고가용성을 제공하는 서비스입니다. ELB는 고가의 L4/L7 장비를 구입하거나 소프트웨어로 서버를 구축하지 않아도 부하분산 기능을 사용할 수 있고, 고가용성 서비스를 구축할 수 있습니다.

 

ELB는 한곳에 집중되는 HTTP, TCP, SSL 트래픽을 여러 EC2 인스턴스로 분산합니다. 그리고 서버가 정상적으로 가동중인지 확인(Health Check)하여 일부 EC2 인스턴스가 중단되더라도 트래픽을 정상 EC2 인스턴스로만 보냅니다. 이처럼 ELB로 부하를 분산하고 고가용성 서비스를 구축할 수 있습니다.

 

 ELB는 리전별로 생성해야하고 여러 가용 영역에서 실행되는 EC2 인스턴스로 부하를 분산시킬 수 있습니다. 따라서 EC2 인스턴스 한 두개가 중단되는 것이 아닌 가용 영역 전체가 중단 되더라도 서비스를 정상적으로 제공할 수 있습니다.

 

ELB에서 사용하는 몇가지 용어에대해서 알아보겠습니다.

 

Connection Draining : Auto Scaling이 사용자의 요청을 처리 중인 EC2 인스턴스를 바로 삭제하지 못하도록 방지하는 기능입니다.

Surge Queue : ELB 로드밸런서에서 EC2 인스턴스로 전달되는 큐입니다.

Surge Queue Length : EC2로 전달되지 못하고 큐에 남아있는 요청의 갯수입니다.

Spillover Count : 서지큐가 꽉차서 ELB 로드밸런서가 거부한 요청의 개숭입니다.

 

- ELB 생성

그럼 ELB를 생성해보겠습니다. 그전에 먼저 EC2 인스턴스를 2개 준비합니다.

EC2 카테고리에 로드 밸런서를 선택하고 생성해줍니다.

Application Load Balancer를 선택해줍니다.

이름을 넣어줍니다.

EC2가 있는 VPC를 선택하고 가용영역도 EC2가 있는 영역으로 해줍니다.

이제 대상그룹을 생성을 클릭해줍니다.

이름을 넣어줍니다.

다음을 눌러서 인스턴스를 추가해줍니다.

생성되었습니다.

대상 그룹을 추가해줍니다.

생성이 완료되었습니다.

 

- 웹서버 설정

각각 웹서버마다 코딩을 달리해줍니다.

var express = require('express');
var app = express();

app.get(['/', 'index.html'], function (req, res) {
        res.send('Hello Nova Webser1');
});

app.listen(80);
~
var express = require('express');
var app = express();

app.get(['/', 'index.html'], function (req, res) {
        res.send('Hello Nova Server 2');
});

app.listen(80);
~

그리고 실행시켜줍니다.

오른쪽 하단 DNS 이름으로 접속합니다.

계속 새로고침을하면 변경되는 것을 확인할 수 있습니다.

 

 

'Cloud > aws' 카테고리의 다른 글

aws - VPC  (0) 2023.10.18
aws - Auto Scaling  (0) 2023.10.18
aws - Route 53  (0) 2023.10.17
aws - IAM  (0) 2023.10.17
aws - ElastiCache  (0) 2023.10.17
Comments