목표 구성도
오토스케일링 그룹 세팅은
VPC 생성
▶ 퍼블릿 서브넷 생성
▶ 보안그룹 생성(ALB용, EC2용)
▶ 대상그룹 생성
▶ 로드밸런서 생성
▶ 시작템플릿 등록
▶ 오토스케일링 그룹 등록
▶ 스케일인 정책 등록
▶ 스케일아웃, 스케일인 테스트
순으로 진행했습니다.
이중 시작템플릿과 세팅 후 테스트 과정을 기록하였습니다.
1. TEST VPC 및 EC2 생성
- TEST VPC와 퍼블릭 서브넷을 생성했습니다.
- 보안그룹(SSH, HTTP, ICMP 허용)과 EC2를 생성했습니다. 프로토콜별로 목적은 다음과 같습니다.
ㄴSSH: SSH 연결
ㄴICMP: ping TEST 진행을 위해 ICMP IPv4를 허용하는 인바운드 규칙을 추가.
ping test를 통해 인터넷 연결을 확인했습니다.
2. 사용자템플릿
- 네트워크 구성: 각 인스턴스는 Nginx 설치를 위해 인터넷과 연결되어야 합니다. 이를 위해 퍼블릿 IP 자동 할당을 활성화합니다. 또한 스케일 인에 따른 네트워크 인터페이스가 자동 삭제되어야 하므로 자동 삭제도 활성화해줍니다.
- 사용자데이터: amazon linux1에 nginx를 설치할 것이므로, yum install nginx -y를 넣어줍니다.
yum install nginx -y
추가로 Nginx의 기본 파일 경로는 아파치 웹서버(/var/www/html/index.html)가 아닌 /usr/share/nginx/html/index.html로 설정해줍니다.
/usr/share/nginx/html/index.html
#스크립트 실행 환경 선언: Bash 쉘 스크립트
#!/bin/bash
#메타데이터를 가져오기 위한 토큰 설정
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
#실행되는 인스턴스의 가용영역, 인스턴스ID, 사설IP 값을 변수로 지정
RZAZ=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/placement/availability-zone-id)
IID=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)
LIP=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4)
#nginx웹서버 설치
yum update -y
yum install nginx -y
#설치된 nginx 실행
systemctl start nginx && systemctl enable nginx
#첫화면 꾸미기..!
echo "<html>
<head><title>Lets go: 꿈나무</title></head>
<body><h1>Ver 4 : RegionAZ($RZAZ) : Instance ID($IID) : PrivateIP($LIP)</h1></body>
</html>" > /usr/share/nginx/html/index.html
3. 테스트
3.1 로드밸런싱 테스트
- 우선 2개의 가용영역에 정상적으로 트래픽이 분산되고 있는지 확인이 필요합니다. ALB DNS 값을 변수로 선언한 후 해당 주소로 HTTP 요청을 반복해서 보내보겠습니다.
서로 다른 가용영역의 다른 인스턴스로 요청이 정상적으로 보내지는 걸 확인했습니다.
3.2 스케일아웃/스케일인 테스트
- CPU 사용률에 따른 오토스케일링 정책을 설정했습니다. 따라서 CPU 사용률에 따라 스케일아웃과 스케일인이 정상적으로 진행되는지 확인이 필요합니다. ASG 검증용으로 만든 EC2에서 아파치벤치를 통해 인위적으로 트래픽을 발생시켜 CPU 사용률을 늘리고 이를 기반으로 스케일아웃이 진행되는지 확인했습니다.
ASG검증용으로 만든 EC2에는 Apache Bench를 설치해줍니다.
이후 ALB DNS로 트래픽을 보내봅니다.
트래픽을 총 60만개 보냈습니다. 트래픽마다 1000번의 호출이 이뤄지도록 명령했습니다.
트래픽을 처리하는 동안 오토스케일링 설정과 함께 cloudwatch 지표를 확인해봅니다.
auto scale group에서 CPU 사용률이 10 이상일 경우 스케일아웃이, 5이하일 경우 스케일인이 진행되도록 설정했습니다. cloudwatch의 CPU 사용률 그래프와 GroupInServiceInstances 그래프를 보면 사용률 증감에 따라 서버가 증감하는 것을 확인할 수 있습니다.
'프로젝트' 카테고리의 다른 글
AWS 3 Tier Architecture 구축 (0) | 2024.05.31 |
---|---|
3 Tier Architecture (0) | 2024.04.18 |