10주차 -4 AutoScaling 그룹을 이용하여 WebSrvs 구성

아이수베어·2022년 1월 21일
0

AFOS[2기]

목록 보기
27/29
post-thumbnail

최종 구성

EC2 -> EC2 시작 템플릿 생성 -> 아래 내용 입력 후 시작 템플릿 생성 클릭

시작 템플릿 이름 : WPEC2LaunchTemplate
설명 : Wordpress Web Auto Scaling v1.0
Auto Scaling 지침 : 체크
AMI : Amazon Linux 2 AMI(HVM), SSD Volume Type - 아키텍처 : 64비트(x86)
인스턴스 유형 : t2.micro
키 페어 : (각자 자신의 SSH 키페어 선택)
네트워킹 플랫폼 : VPC
보안 그룹 : ###-WP-VPC1SG-### 포함된것 선택
리소스 태그 :(Lab) , 값(WPLab)
고급 세부 정보 ← 클릭
- IAM 인스턴스 프로파일 : WPLabInstanceProfile
- 세부 CloudWatch 모니터링 : 활성화
- 사용자 데이터 : 아래 내용 복붙!

아래 EFS 사용 시 각자 자신의 EFS 파일시스템 ID로 변경할 것

#!/bin/bash
amazon-linux-extras install lamp-mariadb10.2-php7.2 php7.2 -y
yum install httpd htop amazon-efs-utils tree -y
systemctl start httpd && systemctl enable httpd
yum install gcc php-xml php-mbstring php-sodium php-devel php-pear ImageMagick-devel ghostscript -y
cat <<EOT> /etc/php.d/40-imagick.ini
extension = imagick.so
EOT
printf "\n" | pecl install imagick
sed -i 's/^upload_max_filesize = 2M/upload_max_filesize = 64M/g' /etc/php.ini
sed -i 's/^post_max_size = 8M/post_max_size = 64M/g' /etc/php.ini
sed -i 's/^max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/^memory_limit = 128M/memory_limit = -1/g' /etc/php.ini
mkdir -p /var/www/wordpress/
mount -t efs 자신의EFS파일시스템ID:/ /var/www/wordpress
chown -R apache:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
chmod u+wrx /var/www/wordpress/wp-content/*
echo 'ServerName 127.0.0.1:80' >> /etc/httpd/conf.d/MyBlog.conf
echo 'DocumentRoot /var/www/wordpress' >> /etc/httpd/conf.d/MyBlog.conf
echo '<Directory /var/www/wordpress>' >> /etc/httpd/conf.d/MyBlog.conf
echo '  Options Indexes FollowSymLinks' >> /etc/httpd/conf.d/MyBlog.conf
echo '  AllowOverride All' >> /etc/httpd/conf.d/MyBlog.conf
echo '  Require all granted' >> /etc/httpd/conf.d/MyBlog.conf
echo '</Directory>' >> /etc/httpd/conf.d/MyBlog.conf
systemctl restart php-fpm
systemctl restart httpd

생성된 시작 템플릿

시작 템플릿 생성 클릭

시작 템플릿 이름 : WPEC2LaunchTemplate
설명 : Wordpress Web Auto Scaling v1.0
Auto Scaling 지침 : 체크

AMI : Amazon Linux 2 AMI(HVM), SSD Volume Type - 아키텍처 : 64비트(x86)
인스턴스 유형 : t2.micro
키 페어 : (각자 자신의 SSH 키페어 선택)
```bash 네트워킹 플랫폼 : VPC 보안 그룹 : ###-WP-VPC1SG-### 포함된것 선택 ``` ```bash 리소스 태그 : 키(Lab) , 값(WPLab) ```
IAM 인스턴스 프로파일 : WPLabInstanceProfile
세부 CloudWatch 모니터링 : 활성화
사용자 데이터 : 아래 내용 복붙!

아래 EFS 사용 시 각자 자신의 EFS 파일 시스템 ID로 변경할 것

#!/bin/bash
amazon-linux-extras install lamp-mariadb10.2-php7.2 php7.2 -y
yum install httpd htop amazon-efs-utils tree -y
systemctl start httpd && systemctl enable httpd
yum install gcc php-xml php-mbstring php-sodium php-devel php-pear ImageMagick-devel ghostscript -y
cat <<EOT> /etc/php.d/40-imagick.ini
extension = imagick.so
EOT
printf "\n" | pecl install imagick
sed -i 's/^upload_max_filesize = 2M/upload_max_filesize = 64M/g' /etc/php.ini
sed -i 's/^post_max_size = 8M/post_max_size = 64M/g' /etc/php.ini
sed -i 's/^max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/^memory_limit = 128M/memory_limit = -1/g' /etc/php.ini
mkdir -p /var/www/wordpress/
mount -t efs **자신의EFS파일시스템ID**:/ /var/www/wordpress
chown -R apache:apache /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} \;
find /var/www -type f -exec chmod 0664 {} \;
chmod u+wrx /var/www/wordpress/wp-content/*
echo 'ServerName 127.0.0.1:80' >> /etc/httpd/conf.d/MyBlog.conf
echo 'DocumentRoot /var/www/wordpress' >> /etc/httpd/conf.d/MyBlog.conf
echo '<Directory /var/www/wordpress>' >> /etc/httpd/conf.d/MyBlog.conf
echo '  Options Indexes FollowSymLinks' >> /etc/httpd/conf.d/MyBlog.conf
echo '  AllowOverride All' >> /etc/httpd/conf.d/MyBlog.conf
echo '  Require all granted' >> /etc/httpd/conf.d/MyBlog.conf
echo '</Directory>' >> /etc/httpd/conf.d/MyBlog.conf
systemctl restart php-fpm
systemctl restart httpd

시작 템플릿 생성 클릭

작업 -> Auto Scaling 그룹 생성 클릭

Auto Scaling 그룹 이름 : FirstEC2AutoScalingGroup
시작 템플릿 : WPEC2LaunchTemplate

다음 클릭

인스턴스 구매 옵션 : 시작 템플릿 준수
네트워크 - VPC : WP-VPC1
네트워크 - 서브넷 : WP-VPC1-Subnet-1, WP-VPC1-Subnet-2

다음 클릭

로드 밸런싱 : 기존 로드 밸런서에 연결
로그 밸런서 대상 그룹에서 선택 : 선택
기존 로드 밸런서 대상 그룹 : ALB-TG
상태 확인 유형 : ELB (Check)
상태 확인 유예 기간 : 60초
모니터링 - CloudWatch 내에서 그룹 지표 수집 활성화 : 체크

다음 클릭

원하는 용량 : 2
최소 용량 : 2
최대 용량 : 4
조정 정책 : 대상 추척 조정 정책
조정 정책 이름 : Scale Out Policy
대상 값 : 303분 동안 3번 연속 CPU 30% 경우(1분 마다 기록)
인스턴스 요구 사항 : 60초 → 지표에 포함하기 전 워밍업 시간()
확대 정책만 생성하려면 축소 비활성화 : Check → 축소 설정하지 않음
인스턴스 축소 보호 활성화 : UnCheck

다음 클릭

다음 클릭

태그 :(Name) , 값(WebServers)

다음 클릭

AutoScaling 그룹 생성 클릭

EC2 2개가 생성 됨

워드프레스 사이트도 접속이 됩니다.
\

CPU 부하 발생 및 Auto Scaling 확인

# 웹 접속 테스트 (리전, 인스턴스ID, Private IP)
WPDNS=cloudfront.net
Web1=퍼블릭 주소
Web2=퍼블릭 주소

# 터미널1 - 1개 요청(풀)로 총합 500번 요청 진행
ab -n 500 -c 1 http://$Web1/load.php

# 터미널2 - 20개 요청(풀)로 총합 1000번 요청 진행
ab -n 1000 -c 20 http://$Web2/load.php
ab -n 1000 -c 20 http://$WPDNS/load.php

# 접속 되는 EC2 마다 현재 CPU 부하 출력
while true; do curl $WPDNS/xff.php --silent --connect-timeout 1; date; echo "---[AutoScaling]---"; sleep 1; done

# EC2 증가 이후 증감 확인
for i in {1..100}; do curl $WPDNS/xff.php --silent;echo ; done | sort | uniq -c | sort -nr

새로 생성된 EC2 두개가 ALB 타겟그룹에 포함되어 있습니다





EC2가 4개로 증가했습니다

CPU 사용률을 비교해봅시다

1시간으로 바꿔줍니다

이렇게 변화했네요

EC2가 4개로 증가했습니다

타겟그룹에도 포함되고 있습니다

EC2에서도 확인할 수 있습니다

for i in {1..100}; do curl $WPDNS/xff.php --silent;echo ; done | sort | uniq -c | sort -n

참고 자료: AFOS[2기] 노션 내용

profile
Junior Cloud Engineer

0개의 댓글