시작 전
- 여기를 눌러 EC2 Instance를 생성할 수 있다.
- 여기를 눌러 CentOS, Ubuntu와 같은 타 배포판에서 AWS CLI 환경을 구성할 수 있다.
- Amazon Linux 2 AMI는 프리티어이면서 AWS CLI환경이 구성된 이미지다.
- 목적 : Application Load Balancer를 만들고 EC2 Instance와 연결하여 로드밸런싱 환경을 구축한다.
- 기능 확인을 위한 최소한의 환경만 구성하였다.
- 프리티어로 진행되었다.
Application Load Balancer
대상그룹 생성
- ALB를 만들기 위한 템플릿이라고 생각하면 된다.
- EC2 → 로드 밸런싱 → 대상 그룹 → 대상그룹 생성
- 상태 검사 설정의 index.html을 입력하지 않으면 상태 검사를 실패할 수 있다. 그렇게 되면 서버가 죽은것으로 판단해 로드밸런싱 되지 않으므로 주의
- 기존에 존재하는 Linux EC2 Instance 2개를 대상그룹에 등록한다.
- 대상이 모두 Healthy라면 대상 그룹 구성 완료
Load Balancer 생성
- 맨 처음 ALB, NLB, CLB를 선택하는 창이 나온다 → HTTP(웹서버) 접속을 분산시키기 위해 ALB선택
- ALB는 7계층을 전문적으로 로드밸런싱하고 NLB는 4계층을 전문적으로 로드밸런싱한다.
- CLB는 ALB,NLB가 나오기 이전 초기 LoadBalancer인데 요즘엔 거의 사용하지 않으며, 기존 CLB에 최적화되어 이미 구성된 환경이 있거나 하는 특수한 경우에 사용된다고 한다.
- 인터넷 경계에 인스턴스가 존재하는 AZ를 선택한다.
- 내부에 ALB를 생성하는것은 쉽게 생각하면 웹서버가 여러대로 구축된 WAS에 접근할 때 작동하는 ALB라고 생각하면 될 것 같다.
- HTTP를 위한 앱서버이니 HTTP포트만 허용하는 보안그룹 설정
- 이전에 생성한 대상그룹을 지정하고 다음
- 대상으로 등록한 Instance 2개가 정상적으로 등록되는지 확인하고 ALB 생성
- Application Load Balancer 구성 완료
- 맨 처음 ALB, NLB, CLB를 선택하는 창이 나온다 → HTTP(웹서버) 접속을 분산시키기 위해 ALB선택
테스트
웹서버 간단 구성
- 두 인스턴스 모두 httpd 패키지 설치 및 데몬 실행
yum -y install httpd systemctl start httpd systemctl enable httpd
- 초기페이지 index.html 생성
- 1번째 인스턴스
[ec2-user@ip-172-31-5-0 ~]$ vi /var/www/html/index.php WEB 11111
- 2번째 인스턴스
[ec2-user@ip-172-31-36-229 ~]$ vi /var/www/html/index.php WEB 22222
- 1번째 인스턴스
ALB로 접속하여 확인
- 우선 ALB가 정상적으로 active되는지 확인한다. (provisioning → active)
- Load Balancer의 DNS를 통해 인터넷에서 접속 가능
- 새로고침을 할 때 마다 동일한 DNS에서 번갈아가면서 웹서버에 접속시켜준다.
- ALB 테스트 완료
결론
- ALB를 생성하여 HTTP로 접근하는 웹서버에 대한 로드밸런싱 환경을 만들었다.
- 로드밸런서를 생성하고 웹서버와 연결하여 여러개의 서버를 하나의 DNS 주소로 제공할 수 있다.