nocdev
AWS Certification Cloud Practitioner(17) 본문
애플리케이션 로드 밸런서(ALB) 실습
- 로드 밸런서에 연결하기 위한 인스턴스 실행
- 4-6-1 에서 진행했던 실습과 동일하게 인스턴스를 실행한다
- 로드밸런서에 연결 할 것이기 때문에 두개의 인스턴스를 실행한다.
- 또한 사용자데이터에 변경점이 조금 있다.
#!/bin/bash # Use this for your user data (script from top to bottom) # install httpd (Linux 2 version) #패키지 업데이트 yum update -y #아파치 웹서버 설치 yum install -y httpd #아파치 웹서버 실행 systemctl start httpd #부팅시 아파치 웹서버 자동 실행 systemctl enable httpd #간단한 html을 아파치 루트 디렉토리에 생성 echo "
Hello World from $(hostname -f)
" > /var/www/html/index.html
- 첫번째 서버 실행 옵션
서버 이름을 제외한 나머지 옵션은 두번째 인스턴스와 동일하다.
- 두번째 서버 실행 옵션
서버 이름을 제외한 나머지 옵션은 첫번째 인스턴스와 동일하다. 두개의 서버가 실행되었다.
실행된 서버의 웹페이지 접속
- 각 각 서버의 public ip를 복사하여 정상적으로 아파치 웹서버가 실행되어 html을 읽어들였는지 확인한다.
- 첫번째 서버 웹페이지
- 두번째 서버 웹페이지
- 두 서버가 정상적으로 실행 되었음과, 각각 public ip 및 private ip가 다른 것을 확인 할 수 있다.
- 첫번째 서버 웹페이지
- 4-6-1 에서 진행했던 실습과 동일하게 인스턴스를 실행한다
- 로드 밸런서 생성하기
“로드밸런서” 탭으로 이동하여 “Create load balancer 동일한 서비스를 제공하는 애플리케이션의 엔드포인트가 동일하기를 원하는 상황이니 가장 적합한 옵션인 Application Load Balancer(ABL)를 생성하도록 한다. “create” 버튼을 클릭한다. 기본 설정
로드밸런서의 이름을 작성 후(여기선 “DemoALB” 라는 이름으로 작성하였다) 외부 인터넷 접속이 되어야 하니 “Internet-facing”을 체크한다. 단순하게 IPv4만을 이용할 것이기 때문에 “IPv4”를 체크한다. 네트워크 매핑
1개의 VPC와 여러 서브넷에 배포해야 하므로 다중 가용 영역을 선택한다. 이는 가용성을 높이며, 가용 영역이 세개는 되어야 효율적이다. 여기선 모든 가용 영역을 체크한다. 가용 영역 체크 후 화면 보안 그룹
로드밸런서를 위한 새로운 보안그룹을 생성한다.
기본 보안그룹 삭제 후 “Create new security group” 클릭 새 탭에서 보안 그룹 생성 페이지가 열리면 임의의 보안그룹 이름을 작성(여기선 “demo-sg-load-balancer”로 작성 하였다) 후 임의의 설명을 작성한다.(여기선 “SG for ALB”로 작성하였다.) 이후 “인바운드 규칙”에 HTTP(80번 포트)를 모든 아이피에서 허용하는 옵션으로 추가 후 “보안 그룹 생성” 버튼을 클릭한다. 보안 그룹은 3-6을 참조하여 설정을 확인하면 된다. 다시 로드밸런서 생성 화면으로 돌아와 보안 그룹을 새로고침 후 방금 생성한 “demo-sg-load-balancer”를 선택한다. 리스너와 라우팅 - 1
로드밸런서는 특정 포트의 요청을 리스닝 후 대상 그룹에 라우팅 하는 역할을 수행한다. 여기서 대상 그룹이란 인스턴스의 묶음이다. 현재 대상 그룹이 존재하지 않으니 “Create target group”을 클릭하여 새로운 대상 그룹을 생성한다. 대상 그룹 생성
인스턴스 기반의 대상 그룹이기 때문에 “Instances”를 체크 후 임의의 대상 그룹 명을 작성한다(여기선 “demo-tg”로 작성하였다) 80번 포트를 사용할 것이기 때문에 기본 값으로 HTTP 프로토콜의 80번 포트를 사용하며 프로토콜 버전 또한 기본값인 HTTP1을 사용한다. “Next” 버튼을 클릭한다. 80번 포트가 사용 가능한 두개의 인스턴스를 체크 후 “Include as pending below 선택한 두개의 인스턴스가 검증 중이며, “Create target group” 버튼을 클릭하여 대상 그룹을 생성한다. 대상 그룹이 정상적으로 생성 되었다. 다시 로드밸런서 생성 화면의 “리스너와 라우팅” 탭으로 돌아간다. 리스너와 라우팅 - 2
새로고침 후 생성한 대상 그룹을 선택한다. 로드밸런서 생성 요약
IPv4와 외부 인터넷을 허용하였으며 80번 포트만 허용하는 보안그룹을 가지고있다. 4개의 가용 영역을 걸친 VPC이며 80번 포트를 리스닝 하고있다는 것을 확인할 수 있다. 로드밸런서 생성 전체 화면
설정을 다시 한번 확인 후 “Create load balancer” 버튼을 클릭하여 로드밸런서를 생성한다. 로드밸런서 생성 완료
로드밸런서가 정상적으로 생성 되었으며 프로비저닝 상태에서 활성화 상태가 될 때 까지 잠시 기다린 후 다음 실습을 진행한다. - 로드밸런서 동작 확인하기
생성한 로드밸런서의 “DNS name”을 복사 후 웹페이지에서 이동한다. 첫번째 EC2 서버의 private IP가 표시된다. 두번째 EC2 서버의 private IP가 표시된다. 동일한 DNS(웹페이지 주소)를 입력하였을 때 내부적으로 연결된 두개의 인스턴스에 트래픽을 분산하는 것을 확인할 수 있다.
이는 대상 그룹 내에 존재하는 인스턴스 두개가 전부 정상적으로 동작중이기 때문이다.
대상그룹 확인하기“대상 그룹” 탭에서 그룹 내 인스턴스를 확인하고자 하는 그룹을 선택 후 “Target” 탭으로 이동하여 인스턴스의 상태를 확인해본다. 하나의 서버 강제 종료시 로드밸런서 동작 확인하기
“인스턴스” 탭에서 대상 그룹에 연결되어있는 인스턴스중 하나를 중지한다. 다시 “대상 그룹” 탭으로 돌아와 인스턴스의 상태를 확인 해보면 하나의 인스턴스가 종료된 것을 확인 할 수있다. 반영이 되어있지 않다면 새로고침 버튼을 클릭하여 반영한다. 로드밸런서 DNS로 접속하여 아무리 새로고침 하더라도 하나의 인스턴스에만 트래픽이 요청되는 것을 확인 할 수 있다. 인스턴스 탭에서 중지한 인스턴스를 재 시작 후 대상 그룹에서 다시 확인해본다면 두개의 인스턴스 모두 정상적인 것을 확인 할 수 있을 것이다. 또한 인스턴스 재 시작 후 로드밸런서의 DNS로 웹페이지 요청을 하게 된다면 두개의 서버에 트래픽이 분배되어 서로 다른 private ip를 확인할 수 있다.
'자격증 > AWS' 카테고리의 다른 글
AWS Certification Cloud Practitioner(19) (0) | 2023.09.10 |
---|---|
AWS Certification Cloud Practitioner(18) (0) | 2023.09.09 |
AWS Certification Cloud Practitioner(16) (0) | 2023.09.07 |
AWS Certification Cloud Practitioner(15) (0) | 2023.09.06 |
AWS Certification Cloud Practitioner(14) (0) | 2023.09.05 |
Comments