네트워크 구성이 완료 되었으니 이제 본격적으로 서버 구축을 시작해보자. 서버는 EC2를 사용하여 가상 서버를 구축할 예정이다. EC2는 갑작스러운 트래픽 증가와 같은 변동 사항에도 신속하게 규모를 확장하거나 축소할 수 있기 때문에 서버 트래픽 예측 필요성이 줄어든다. 이 덕분에 개발자는 좀 더 본래의 일에 집중할 수 있기 때문에 아주 아주 유용한 서비스이다.


웹 서버 생성

 

EC2 인스턴스 생성

 AWS 에서 EC2를 검색 후 인스턴스 생성 페이지에 들어가면 생성할 수 있다. 인스턴스 이름은 목적에 맞게 설정하여 헷갈림을 줄이는게 좋다. 현재 나는 따로 AMI를 생성해두지 않은 상태이므로 프리티어에서 사용가능한 것을 선택해주었다. 여기서 AMI(Amazon Machine Image)란 인스턴스를 생성하는데 필요한 정보를 미리 만들어 둔것이다. 동일한 기능의 인스턴스가 여러개 필요할 때 AMI를 활용해 생성할 수 있다.

인스턴스 유형 역시 프리티어로 사용 가능한 t2.micro를 선택해주었다. 이후 키페어를 생성해 준뒤 네트워크 설정을 진행해주었다. 네트워크는 이전에 만들어둔 vpc와 보안그룹을 연결하면 된다. 현재 퍼블릭 IP가 자동으로 할당되게 해둔 상태인데 이 경우 인스턴스를 껐다 킬때마다 IP주소가 바뀌게 된다. 이를 방지하기 위해서 탄력젹 IP를 설정하면 되지만 현재는 불필요하기 때문에 건너 뛰도

마지막으로 세부설정에서 user data에 인스턴스가 생성될 때 실행될 스크립트를 미리 지정해주었다. 인스턴스가 생성된 후 ssh에 접속해 스크립트를 실행하여도 되지만 번거롭기 때문에 미리 작성해 두었다. 이렇게 해두면 인스턴스 최초 부팅 시에 작성된 스크립트가 실행되기때문에 좀 더 편리하다. 해당 스크립트에 jdk 설치나 nginx 설정 등과 같이 자주 사용하는 서버 설정을 적으면 된다. 현재는 LAMP 설치, 웹 애플리케이션 다운로드, AWS SDK for PHP 설정을 해둔 코드를 삽입해 둔 상태이다.

이제 모든 인스턴스 설정을 끝마쳤으니 생성을 하면 된다. 현재까지 생성한 아키텍처의 구성도는 다음과 같다. 만일 방금 생성한 인스턴스와 동일한 기능을 하는 인스턴스를 하나 더 생성하고 싶을땐 어떻게 해야할까. 이러땐 굳이 모든 설정을 다시 반복할 필요 없이 AMI를 만들어서 사용하면 된다.

 

AMI(Amazon Machine Image) 기반  인스턴스  생성

위에서 생성한 ec2의 이미지를 뜨는 과정을 진행해보자. 앞서 만든 인스턴스를 선택하여 이미지 생성 페이지로 들어간다. 해당 페이지에서 이름과 설명만을 작성한 뒤에 나머지는 기본값으로 두고 생성하였다. 이제 이를 기반으로 인스턴스를 다시 생성해보자.

 

생성이 완료된 AMI를 선택하면 해당 ami로 인스턴스를 만드는 버튼이 활성화 된다. 해당 버튼을 클릭하여 인스턴스 생성을 진행할 수 있다.

인스턴스 이름을 설정하고 키페어 및 보안그룹 설정을 위의 과정과 동일하게(서브넷c를 사용) 진행하였다. 이후 생성이 완료된 인스턴스의 퍼블릭 IP주소를 타고 들어가면 다음과 같은 화면을 볼 수 있다. 이 과정에서 난 화면이 제대로 뜨지 않는 문제가 발생했었는데 인바운드 규칙에 http와 ssh 접근만을 허용해놓은 상태에서 https로 접근을 해서 발생한 문제였다. aws에서 퍼블릭 ip주소 클릭시 자동으로 https로 접속이 되기 때문에 이를 http로 바꿔 접근하니 화면이 잘 뜨는걸 확인 할 수 있었다.
현재 생성한 아키텍처의 구성도는 다음과 같다. 인스턴스를 생성하고 그 이미지를 따서 새로운 인스턴스를 생성하여 서브넷C에 위치시켜두었다. 두개의 서브넷에 위치한 인스턴스를 효율적으로 활용하기 위해서는 로드 밸런싱 과정이 필요하다. 다음 게시물에서 해당 기능을 도입해보자.