본문 바로가기
IT

[AWS] ELB(Elastic Load Balancer) 만들기

by laoching 2024. 6. 21.
728x90
반응형

EC2 인스턴스가 한개라면 모를까 보통 회사들은 서비스의 가용성을 유지하기 위해 여러개의 서버를 만들어둔다.

고객은 www.naver.com라는 는 주소를 치고 들어오지만 1호기, 2호기 등 어떤 서버에 붙을지는 ELB가 결정한다. 인스턴스의 부하에 따라 분배를 해주기 때문이다.

AWS에서는 ELB를 만들기 위해 2개 이상의 가용 영역을 선택해야한다.

 

  • 가용영역(Availability Zone): 1개 이상의 데이터 센터를 논리적 그룹으로 묶어놓은 인프라. -> 데이터센터
  • 리전(Region): 3개 이상의 가용영역을 논리적으로 묶어놓은 인프라.

근데 왜 2개 이상의 가용영역을 고르라고 하냐면...

만약 AZ(가용영역) 1번 안에만 ELB를 구성하고 그 안의 EC2를 대상으로 로드밸런싱을 구현했을 때 1번 가용영역 전체가 뻗어버린다면 서비스가 아예 불가능하다. 그렇기 때문에 가용영역 간 ELB를 구성해야한다.

이건 DR과 동일한 개념이다. 서울에 위치한 IDC에 장애가 발생하면 대전이나 춘천에 위치한 IDC로 트래픽을 돌려야 빠르게 복구가 가능하다. 

 

 

ELB 만들어보기

 

먼저 인스턴스를 만들어줍니다.

(EC2 - Instances - Launch instances)

 

그 다음 ELB에서 사용할 Security Group을 만들어줍니다.

(EC2 - Security Group - Create security group)

 

그룹 이름과 설명은 간단하게 적어주시고 Inbound rules에는 그룹 안으로 들어오는 걸 지정해줍니다. 저는 Https랑 Http로 어떤 ip던 접속이 가능하도록 설정해주었습니다. 아웃바운드는 그룹에서 밖으로 나가는 규칙입니다.

 

그 다음 Target Group을 만듭니다.

실습은 아주 적은 수의 인스턴스를 구성해서 하지만 실제 서비스를 하는 경우에는 많은 인스턴스가 존재할 것입니다. 수많은 인스턴스 중 부하를 분산해줄 그룹을 만들기 위해 Target Group을 만들어 그들을 그룹핑 해줍니다.

(EC2 - Target groups - Create target group)

 

인스턴스들을 그룹핑 해주기 위해 target type을 Instances로 지정하고 그룹의 이름을 설정해주었습니다.

 

create를 눌러주면 아래와 같이 화면이 이동됩니다. 여기서 바로 인스턴스를 선택하고 Include as pending below를 눌러 바로 그룹에 추가할 수도 있고, auto scailing을 이용해 자동으로 인스턴스 생성부터  그룹핑까지의 과정을 자동화 시킬 수 있습니다.

 

이제 ELB를 만들겠습니다. (EC2 - Load Balancers)

저는 Https, Http 통신을 하는 인스턴스를 만들었기 때문에 Application Load Balancer를 선택합니다.

ELB 로드 밸런싱의 특징은 아래 링크에 써있습니다. ( Elastic Load Balancing이란 무엇인가요? - Elastic Load Balancing (amazon.com))

 

Create를 누르면 아래와 같은 페이지가 나온다.

로드밸런서의 이름을 설정하고 Scheme 부분에는 Internet-Facing을 선택해준다. Internal을 선택하게 되면 내부 VPC안에서의 부하를 분산해준다. 

일반적으로 웹사이트는 Internet-Facing, 사내 시스템은 Internal을 이용해 구축한다고 한다.

 

그리고 본인이 선택한 Region의 가용영역이 나와있는데 적절하게 선택하면 된다. 저는 서울 리전에서 진행하였습니다.

2개를 고르면 IDC를 2개 만들겠다는 뜻이다.

AWS에서도 AZ는 최소 2개를 선택해야 한다고 나와있다. (Select at least two AZ....)

 

그 다음 앞에 생성했던 Security groups와 Target groups을 골라준다.

그리고 Listeners and routing을 이용하여 어떤 포트를 어떤 Target groups에 전달할건지 골라준다.

 

나머지 항목들은 그냥 패스하고 생성해줍니다. 그리고 다시 ELB 메인 화면으로 가면 DNS name이 나와있는데 해당 도메인으로 접근하면 서비스에 접근이 가능합니다.

 

 

728x90
반응형

댓글