brunch

You can make anything
by writing

- C.S.Lewis -

by DNS전문가카페운영 Mar 14. 2019

58. AWS이중화,AutoScaling-2019.03

AWS 웹서비스 이중화와 Auto Scaling을  단시간에 구축하는데 목적이 있다.


현황

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


문제점

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


개선방항 

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



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

혼자 공부한 내용이라 일부 내용이 틀릴수 있습니다.





목 차


<1> 네트워크 만들고 서버 생성하기

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> 네트워크 만들고 서버 생성하기


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-Group1


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

조정한다.

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

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

인스턴스가 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-group3 에 부하룰 준다.



# 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. 삭제 

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

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



감사합니다.

매거진의 이전글 57.(요약)AWS 기초용어 30개 이해하기(이론편)

매거진 선택

키워드 선택 0 / 3 0
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari
;