brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Mar 14. 2019

58. AutoScaling-2019.03

목 차

<1> Auto Scaling을  위한 네트워크 만들고 서버 생성하기

1. 먼저 어떤 네트워크를 만들지에 대해 종이에 작성해본다.

2. EIP할당받고 VPC 생성한다.

3. EC2 생성한다.

4. Apache 등 애플리케이션 설치한다.

5. ELB Settup 



<2> Auto Scaling 설정하기

1. 구축된 서버의 이미지 서버를 만든다.

2. Auto  Scaling 템플릿 만든다.

3. Auto  Scaling Group을 만든다.

4. 자동 증가 테스트

5. 웹서버 2대 ,  L4를 적용해 보자

6.  Auto Scaling Groups에서  TargetGroups  추가하기,

7. Route53에서  도메인으로 L4등록 하기.

8. 삭제 




<1> Auto Scaling을  위한 네트워크 만들고 서버 생성하기


현황 : 영어 서버 1번과 영어 서버 3번 운영 중인 상태이다.

문제점 :서버 부하 시 수동으로 서버를 늘려주어야 한다.

개선 방향  :사용자가 늘어나면  미리 만들어놓은 이미지 서버로 영어 서버 4번을 만들어 서비스가 되도록 한다.


[실습]  edu.serverchk.com이라는 사이트를 만들고 Auto Scaling을 적용해보자








1. 먼저 어떤 네트워크를 만들기 종이에 작성해본다. 

서브 네팅도 한다.

Pulbic 2개

Privare 2개

Public에 NAT서버 1대 



2. EIP할당받고 VPC 생성


1)  [EC2] -[Elastic IPs]에서  EIP(Elastic IPs, 고정 공인 IP) 하나를 받는다.   

NAT GW를 사용하는 네트워크 구성을 하기 위해서이다. 


2) 네트워크 VPC를 생성한다.

 VPC Wizard로  AWS에서 제공하는 구성으로 해본다. 

[VPC] - [Launch VPC Wizard]

Public Subnet , Private Subnet , NAT를 가진 설정을 클릭해 구축한다.


VPC이름을  edu-VPC로 한다.  -VPC로 표시해서 VPC임을 구분하도록 한다.

 (AZ는 a로 한다)



4)  나중에 LB를 사용하기 위해서  추가로 서브넷 하나씩 더 만든다.  

[VPC] -[SUBNET] - [Create Subnet] -  edu-web-subnet2로 만든다.  (AZ는 c로 한다)

[VPC] -[SUBNET] - [Create Subnet] -  edu-private-subnet2로 만든다.  (AZ는 c로 한다)

필수 : edu-web-subnet2의 라우팅 테이블을  수정한다. - IGW로 가도록 변경한다.



5) 모든 서버에 대해 도메인 이름이 나오도록  설정되어 있는지 확인한다. 

만든 VPC에서 오른  마우스 눌러  Edit DNS resolution 체크되어 있는지 확인한다.



6) [VPC] - [Subnet]에서  공인 IP 자동할당받도록 변경. 

[Public Subnet] 오른 마우스 눌러 [Modify auto-assion IP setting] -  [Enable auto-assign public IPv4 adress] 체크



3. EC2 생성


Public 서브넷에 서버 1대 생성하자

[EC2] - Lanunch Instance 

보안 그룹은 새로 하나 만들자.  edu-ssh-sg

키도 새로 만들자 :  edu-key2


서버 이중화를 위해 서버 1개를 더 만들자

보안 그룹은 방금 만들어 존재하는 것으로 지정

Key 도 방금 만들어진 존재하는 것으로 지정

Name을 edu-web02으로 한다.


Putty https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

PuTTYgen - Load - Save Private Key




4. Apache 등 애플리케이션 설치 


Apache  설치

1) Yum으로 설치하기

yum install httpd -y 
/usr/sbin/httpd

ps -ef |grep httpd


vi /etc/httpd/conf/httpd.conf
cd /var/www/html
vi index.html


ps -ef |grep httpd
/usr/sbin/httpd stop
/usr/sbin/httpd -k restart



또는


tmp# wget http://ftp.neowiz.com/pub/apache/httpd/httpd-2.4.37.tar.gz

httpd-2.4.37# yum install apr*

httpd-2.4.37# yum install gcc

httpd-2.4.37# yum install pcre*

httpd-2.4.37#./configure --prefix=/usr/local/apache     ; make ; make install

httpd-2.4.37# /usr/local/apache/bin/apachectl start

httpd-2.4.37# ps -ef |grep httpd

root      2694     1  0 11:29?        00:00:00 /usr/local/apache/bin/httpd -k start


공인 IP로  웹 접속 확인.

index.html을  works 1로 문장 수정.


2번 서버도 apache 설치 

index.html을  works 2로 문장 수정.


웹서버 허용을 위한  보안 그룹을 만든다. 

[VPC]- [Security Groups] - edu-http-sg


각 서버에 보안 그룹 edu-http-sg를 추가한다.



5. ELB Settup  https://brunch.co.kr/@topasvga/419





<2> Auto Scaling 설정하기


1.   구축된 서버의  이미지 서버를 만든다.


AMI 만들기

사용 중인 EC2를 중지하고 AMI를 만들어야 한다.


1)  웹서버를 중지하고  이미지를 만든다.   

EC2 오픈 마우스 클릭 >  Image > Create Image

edu-web02-image  

AMIs에 만들어진다.


2)  AMI를 만들고 기존 중지한  EC2는 다시 시작한다.

  // 중지 후 재시작한 EC2는 애플리케이션 데몬(apache)은 다운되어 있으니 재시작해줘야 한다.



2. Auto  Scaling 템플릿 만든다.


사용할 AMI , 보안 그룹을 정의한다.


1) [EC2] -  [Launch Templates]에서 템플릿을 만든다.  edu-web-template3  


2) AMI ID는 [Search for AMI] - [My AMI]에서  edu-web02-image를 지정한다.


3) 서버 타입 지정

// 미국 버지니아에서는 템플릿으로 t2 마이크로 지원하지 않으니 조금 큰 거로 만들어 테스트하세요.

4) Key 지정 : edu-key

5)  보안 그룹 지정




3. Auto  Scaling Group을 만든다.


1)   [EC2] - [ Auto  Scaling Groups] 

어떤 템플릿으로  시작할 것인지 지정하는 것이다.

[Launch Template]에서 가져와 사용한다.  edu-web-template1

Group name :  EDU-web-AutoScaliing-Group 1


2)  Use scaling policies to adjust the capacity of this group   선택.

조정한다.

예를 들어 CPU가  50% 이상이면  서버를 증가시킨다.

인스턴스를 구분하기 위해 name    edu-web-group 3으로  이름을 준다. 

인스턴스가 1개 생성된다.


 [ Auto  Scaling Groups]에서 오른 마우스 눌러 최소/최대 서버수를 변경한다.

 [ Auto  Scaling Groups]의  Scaling Policies에서 CPU나 네트워크 용량을 변경하여 증가 조건 정책을 변경한다.


3) SNS 설정도 할 수 있다.


4)    Enable Group  Metrics Collection  하여 Auto Scaling 인스턴스 상태를 확인한다.

EC2 > Auto Scaling Groups >  Monitoring >을 해서 모니터링 하자.

서버 1대로 시작

3대를 최대로 설정

현재 서비스수 3대 


기타 : 빠르게 모니터링하려면  EC2  오른 마우스 눌러  CloudWatch detail 1분 모니터링으로 모두 변경하여 모니터링하자. (비용 발생)


참고

이미지로 만든 서버의  웹서버 데몬은 다운 상태이다.

별도로 데몬은 띠워줘야 한다.



4. 자동 증가 테스트


웹서버에 부하를 주어 증가하는지 보자.

edu-web-group 3에 부하 룰 준다.



# yum install stress


또는


wget https://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz

./configure

make

make install 



# stress  --cpu  1  --timeout  600

사이트 https://people.seas.harvard.edu/~apw/stress/





5. 웹서버 2대 ,  L4를 적용해 보자.


L4를 적용해 서버 장애 시 자동으로 서비스 투입이 되도록 한다.

1)  서버 공인 IP로 웹 접속 테스트하여 서버가 접속되는지 확인한다.


2)  [EC2]  >   [Load Balancers] - Create Load Balancer.

       EDU-web-lb1 


3)   [EC2]  >  [Target Groups] >  [Targets]  >  서버 지정  >   [Add to registerd] >  [SAVE] 해  추가한다.



4) 확인

Load Balancers  > <  Monitoring  클릭

Unhealthy Hosts 수 확인

Healthy Hosts 수 확인




5) L4 도메인 name으로 접속해 테스트해보자.

참고로,   브라우저 캐싱으로 잘 안될 수 있다.

IE, 크롬, 파이어폭스  브라우저로 테스트해보자.




6.  Auto Scaling Groups에서  TargetGroups  추가하기,

Auto Scaling Groups >   Details > Edit > Target Groups에  만들어진 타깃 그룹을 추가한다.



7. Route53에서  도메인으로 L4등록 하기.


edu.serverchk.com로  L4  지정한다.

도메인으로 접속 테스트한다. 

http://edu.serverchk.com/


잘 된다.



7. 삭제 

테스트가 완료되었으면  모두 삭제한다.

삭제해야 추가 비용이 나오지 않는다.



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari