brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 16. 2018

48.(AWS) 웹사이트 구축 단계 (웹콘솔)

VPC,EC2,ELB,Route53,AMI

<1> 웹사이트 구축해보자.

<2> 구축 순서



<1> 웹사이트 구축해보자.


빠르게 IT를 배우는 무료 사이트 it.serverchk.com 


1.요건

1) 서비 해도 될 만큼 안정적인 사이트를 구축하고자 한다.

2) 웹서버와 DB서버로 나누어 보안에 안전한 사이트를 구축하고자 한다.

3) 서버 이중화를 해서 안정적인 사이트가 되도록하고자 한다.



2.사용기술

1) AWS 네트워크, 서버, 복사이미지,L4 , DNS 가 사용된다.

     AWS  VPC  ,  EC2 , AMI ,  ELB ,  Route53  이 사용된다.

2)  DNS 네임서버는 AWS Route53에서 운영하고 있다.  


3. 과정

초급 + 중급과정


4. 단계

네트워크, 서버, 어플리케이션 설치 하자.



<2> 구축 순서


1. AWS 로그인

2. VPC 생성

3. 서브네팅

4. 인터넷 게이트웨이 만들기.

5.라우팅 테이블 만들기.

6. 서버 만들기

7. 보안그룹은 새로 생성한다.

8. 서버 접속시 사용하는 키를 만든다.

9. 서버 접속해보자.

10. 웹서버 만들어보자

11. 기존 서버 이용하여 복제 이미지 만들기

12. Load Balancer 를 생성한다.

13. Route53 설정한다.

14. 서비스 확인과 이중화 확인한다.



1. AWS 로그인

https://console.aws.amazon.com/console/home



2. VPC 생성

Services 메뉴에서 VPC 클릭하여 VPC부터 만든다.


VPC마법사로 네트워크를 만들수도 있다.

기초 네트워크로 구축하려면  VPC마법사로 네트워크를 만들어도 좋다.

하지만, 여기서는 기존 개념을 이해하기 위해 VPC마법사를 사용하지 않고 하나씩 만든다.





VPC이름은  it.serverchk.com 으로 한다.   

쉽게 알아볼수 있는 이름이면 된다.

도메인명이 아니라도 상관없다. ^^

10.200.0.0/16 으로 네트워크를 만든다.

B-Class이다.

혹, 기존 물리 네트워크와 연동하거나 할때 충돌나지 않도록 하기위해 잘 안쓰는 대역으로 만든다.




VPC에서 오픈 마우스 Edit DNS hostnames 클릭한다.

DNS hostnames 를 Enable 한다.

해당 네트워크에서 만든 서버에 대해 자동으로 도메인 이름이 나오도록 하는것이다.

앞으로 도메인으로 장비 접속이나 웹 접속을 할수 있게 된다.





3. 서브네팅

용도에 맞게 네트워크를 나누는것이다.


2개의 IDC에 웹서버1과 2를 나누고자 한다.

웹서버 서브넷을 2개 만든다.

웹서버는 Public Subnet으로 외부에서 접속되는 공인IP를 가지도록 만든다.


DB서버도 마찬가지로 2개의 IDC에 놓고자 한다.

DB용도 2개의 서브넷을 만든다.

DB는 보안상 사설IP만 가진다. Private 네트워크이다.


Public 서브넷의 서버와 DB 네트워크를 분리하여 보안을 강화 하고자 한다.

WAS서버도 DB네트워크에 구축하도록 하면 됩니다.

이유는 외부에서 직접 접속하면 안되기 때문입니다.


AWS에서 IDC는 AZ (에이지)다.

AZ-a는 a IDC이고 , AZ-c는 c IDC이다. 서로 다른 물리적 위치인것이다.





AZ-a 에 10.200.0.0/24  웹서버 네트워크1 을 구축한다.

AZ-c 에 10.200.4.0/24  웹서버 네트워크2 를 구축한다.




4. 인터넷 게이트웨이 만들기.

인터넷 게이트웨이(IGW)를 만들고  10.200.0.0/16 에 매칭시키기.


10.200.0.0/16 네트워크는 모두 이 인터넷 게이트웨이(IGW)를 통해 외부로 나가도록 하기위해 문의 만드는것이다.

게이트웨이는 문이다.  

인터넷으로 나가는 문이다.




5.라우팅 테이블 만들기.



10.200.0.0/16에 대한  라우팅 테이블을 만들자.

이름은 200-route라고 라우팅테이블을 만든다.

오른쪽 마우스를 눌러 해당 라우팅 테이블을 Main Route Table로 변경한다.







Edit routes를 클릭하여, 디폴트로 모든 네트워크 트래픽을 IGW로 보내도록 설정한다.



주의!!

DB서버 네트워크는  보안상 인터넷이 되지 않아야 한다.

IGW 매칭 될 필요는 없다.


이제 네트워크 설정은 모두 완료되었다.

다음은 해당 네트워크에 서버를 만들어보자.




6. 서버 만들기

Services에 EC2를 클릭해 서버  생성을 시작한다.





7. 보안그룹은 새로 생성한다.

IT서비스를 위한 웹서버 보안그룹은  it-weg-sg 이라고 새로 만든다.

시큐리티 그룹(sg)에  SSH 와 HTTP(80)만 우선 허용한다.

외부에서 새로 만들어진 서버에 ssh로 접속해야 한다.

웹서버로 apache를 사용할 것이라 http(80)을 허용하는 보안그룹을 만든다.


SSH는 any에서 들어올 필요는 없어서 특정ip대역만 들어오도록 수정해야 한다.



8. 서버 접속시 사용하는 키를 만든다.

해당 키가 있어야 서버에 접속할수 있다.

다운로드 받아 잘 보관해야 한다.




내 PC의 다운로드 폴더에 해당 키가 다운로드 받아진다.



Launch Instances 클릭하면 서버가 만들어진다.





9. 서버 접속해보자.


리눅스 서버에 접속하는법 2가지

1) Windows서버에서 Putty 로 접속하는법

putty로 서버 접속하는법

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html


putty download 사이트

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


2) 리눅스서버에서 mod를 400으로 변경하고, ssh로 접속하는법


$ chmod 400 it-key.pem

$ ssh -i "it-key.pem"

ec2-user@ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com

The authenticity of host 'ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com (13.125.163.50)' can't be established.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '

ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com,13.125.163.50

' (RSA) to the list of known hosts.


       __|  __|_  )

       _|  (     /   Amazon Linux 2 AMI

      ___|\___|___|


https://aws.amazon.com/amazon-linux-2/

1 package(s) needed for security, out of 5 available

Run "sudo yum update" to apply all updates.


[ec2-user@ip-10-200-0-140 ~]$ sudo su -






10. 웹서버 만들어보자


apache 설치하기 https://brunch.co.kr/@topasvga/83

웹사이트가 뜨는지 확인한다.





11. 기존 서버 이용하여 복제 이미지 만들기


기존 어플리케이션이 설치된 웹서버 IT-web01서버를 이용해, 이미지 서버 AMI 를 만든다.

이 이미지를 이용해 IT-web02번 서버를 만든다.






AMI만들때 기존 원본 서버 웹데몬 다운된다.

오픈전인 서버를 이용해 해야 한다.

사용자에게 서비스중인 서버로 하면 안된다.


원본서버로 연결이 끊김

[root@ip-10-200-0-140 ~]# Connection to ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com closed by remote host.

Connection to ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com closed.


재접속해 웹서비스 데몬 확인 해보기

$ ssh -i "it-key.pem"

ec2-user@ec2-13-125-163-50.ap-northeast-2.compute.amazonaws.com

Last login: Sun Dec 16 00:06:56 2018 from 210.116.123.25


       __|  __|_  )

       _|  (     /   Amazon Linux 2 AMI

      ___|\___|___|


https://aws.amazon.com/amazon-linux-2/


apache httpd 데몬이  다운 되어 있음.

[root@ip-10-200-0-140 ~]# ps -ef |grep httpd

root      3275  3253  0 00:11 pts/0    00:00:00 grep --color=auto httpd

[root@ip-10-200-0-140 ~]#



IT-web01 서버로 AMI 이미지 서버  만들기.



AMI 만들기.

AMI Image name 은 it-web01-ami로 한다.


만드어진 AMI로 웹서버 02번을 만든다.

IT-web02 서버 만들어 진다.




IT-web02를 만들때 만드시 AZ-c 에다 만든다.

기존에 IT-web01서버가 AZ-a에 있다.




AMI로 서버 만들때, 보안그룹은 IT-web-sg라고 새로 만든다.

IT-web-sg 그룹은  80 , 22 포트가 허용된다.



IT-web02 서버 접속은

기존에  IT-web01 서버의 기존 존재하는 Key를 이용해 접속한다.



IT-web02서버가 생생되면

로그온하여 웹서버 데몬을 시작한다.

IT-web02서버  DNS URL로   웹이 접속되는지 확인한다.




IT-web01  웹서버에 DNS URL로 직접 접속되는지 확인해본다.



12. Load Balancer 를 생성한다.

서버 2대를  ELB(L4)로 묶어 서버를 이중화 한다.





ALB를 이용해  load balancer를 사용한다.






기존에 만들어진 IT-web-sg  을 사용한다.  

웹서버를  위한 보안 그룹.



서버장애시 빠르게  체크하도록 헬스체크를 2회로 조정한다.



타겟그룹을 만든다.

ELB에 포함될 서버를 지정하는것이다.

Registered target에  원하는 서버 2대를 넣는다.




13. Route53 을 설정한다. (DNS설정)

 it.serverchk.com 으로  설정한 ELB를 지정한다.





기타 )

다른 계정에  네임서버(Route53)를  사용하고 있다면,    

it.serverchk.com 에  ELB DNS URL을  CNAME 으로 설정한다.




14. 서비스 확인과 이중화 확인한다.

http://it.serverchk.com 을 접속해서 서비스가 잘 되는지 확인한다.


웹서버를 1대씩 다운 시켜 이중화가 잘되는지 확인한다.


감사합니다.













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