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를 반드시 설정해줘야 한다.
로드 밸런싱을 사용하려면 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 이름을 통해 접속해보면 계속 같은 인스턴스로만 접속하는 것을 확인할 수 있다.
'Public Cloud > AWS' 카테고리의 다른 글
[AWS] Bastion Host 구성하기 (0) | 2022.04.04 |
---|---|
[AWS] Bastion Host의 개념 (0) | 2022.04.04 |
[AWS] nginx, Phusion Passenger 설치 및 서비스 구현 (0) | 2022.04.01 |
[AWS] Dynamo DB CRUD (0) | 2022.03.31 |
[AWS] RDS 데이터베이스 구축 및 Apache 연결하기 (0) | 2022.03.31 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!