Public Cloud/AWS

[AWS] ELB를 생성해 EC2 인스턴스 로드밸런싱하기

TTOII 2022. 4. 1. 15:15
728x90

Elastic LoadBalancer 실습을 위해 EC2 인스턴스를 3개 생성한다.

LB가 동작중임을 확인하기 위해 인스턴스 생성 시 각 인스턴스에 접속 시 뜨는 화면을 달리한다.

인스턴스를 만들 때 단계 3 : 인스턴스 세부 정보 구성의 하단 [고급 세부 정보] 의 사용자 데이터에 셸 스크립트를 작성한다.

 

참고로 내가 사용한 셸 스크립트는 다음과 같다.

#!/bin/bash
yum install -y httpd
systemctl start httpd
systemctl enable httpd
usermod -a -G apache ec2-user
echo "TEST PAGE - Instance x" > /var/www/html/index.html
chown -R ec2-user:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;

첫번째 생성 인스턴스는 echo "TEST PAGE - Instance 1" 로 두번째는 Instance 2로 세번째는 Instance 3으로 설정한다.

보안 그룹 구성 시 웹 페이지로 테스트할 것이기 때문에 HTTP를 반드시 설정해줘야 한다.

생성된 3개의 인스턴스에 접속한 화면

로드 밸런싱을 사용하려면 EC2 인스턴스를 로드 밸런서의 대상 그룹으로 만들어야 한다. 

LB를 할 때 인스턴스, IP 주소, Lambda 함수, Application Load Balancer 중 어떤 것을 사용할 것인지 선택할 수 있다.

인스턴스를 통한 그룹 형성을 선택하겠다.

LB의 대상 그룹명을 짓고 리스너를 선택한다. (리스너 포트는 다른 프로토콜의 포트와 겹치지 않으면 된다.)

Health checks는 리스너를 동작시켜서 요청에 대한 반환을 선택할 수 있다.

현재 실행 중인 인스턴스 목록 중 LB로 관리할 인스턴스를 선택할 수 있다. 

Include as pending below를 클릭하고 타겟 그룹을 생성한다.

아직 로드 밸런서와 연결되어 있지 않다. 이제 LB를 만들고 연결해주면 된다.

 

로드 밸런서 생성 시 로드 밸런서의 종류를 선택할 수 있다.

로드 밸런서의 이름을 짓는다.

로드 밸런싱의 고가용성을 높이기 위해 가용 영역을 2개 이상 선택해야 한다. (필수)

LB를 생성하고 상태가 활성화되면 DNS 이름을 통해 접속할 수 있다. 

접속할 때 마다 내용이 Instance 1, 2, 3 순서대로 변경되는 것을 통해 LB가 정상 작동하는 것을 알 수 있다.

DNS 하나에 3개의 ip가 할당되어 라운드 로빈 방식으로 각 인스턴스에 접근하기 때문에 순서대로 변경되는 것이다. 

만약 어떠한 이유로 Instance 중 하나가 중지된다면

Health checks를 통해 현재 사용되지 않는 인스턴스가 존재하는 것을 알 수 있고 

로드 밸런싱 또한 중지된 Instance 1을 제외한 나머지 두 인스턴스로만 이루어진다.

접속한 사용자의 쿠키 값을 이용해 로드 밸런싱 할 수 있다.

다시 DNS 이름을 통해 접속해보면 계속 같은 인스턴스로만 접속하는 것을 확인할 수 있다.

728x90