AWS의 기초 개념 및 기초 실습
AWS 기초 개념
주요 AWS Services
- EC2 - 가상 서버
- S3 - Object 스토리지
- RDS - 관계형 데이터베이스
- VPC - 가상 사설 네트워크
- IAM - 사용자 인증 및 권한 관리
EC2
- Elastic Cloud Compute
- AWS의 가장 기본적인 자원 - 리눅스 서버, 윈도우 서버
- 가상 머신 상에 OS가 설치되어 있는 형태
EC2 가격 정책
- 온디맨드 가격 정책
- 예약 인스턴스
- 1년 또는 3년 단위로 계약
- 조건에 따라 30% ~ 75% 요금 할인
- 스팟 인스턴스
- 경매방식으로 최대 90% 저렴하게 이용 가능
- 입찰 가격을 정해 놓고 조건이 맞으면 인스턴스 사용
- 인스턴스가 생성되지 않을 수 있으며 사용 중 중단 될 수 있음
- 배치 처리 등 실시간이 아닌 기능에 사용
AMI
Amazon Machine Image
- 가상 머신은 Image를 활용하여 생성
- 이미지를 가상 서버에 적용하여 동일한 환경을 구성 가능
- Os 별, 목적 별 다양한 AMI 제공
Security Group
- EC2 인스턴스에 대한 보안 설정
- EC2는 모든 Port가 막혀 있음(Default)
- Inbound, Outbound에 대해 접속 허용 설정 가능
- 접속 허용 할 Port, Source
Key Pair
- EC2 인스턴스에 접속하기 위한 암호화 된 파일
- 처음 사용 시 새로운 Key Pair 생성 해야 함
- Mac : pem 사용 가능, Window: ppk로 변환 필요
인스턴스의 상태
- EC2 인스턴스를 생성하면 실행 상태
- 인스턴스를 중지 가능 -> 재실행 가능
- 인스턴스 종료(Terminate) 하면 인스턴스가 삭제 됨
Elastic IP
- EC2 인스턴스는 Private IP와 Public IP를 보유
- 기본적으로 할당되는 Public IP는 인스턴스 재실행 후에는 변경 됨
- 영구적인 Public IP를 설정하려면 Elastic IP 사용
- Elastic IP는 실행 중인 인스턴스에 연동하여 사용하면 무료
- 생성 후 사용하지 않는 경우 비용 발생
AWS 실습
간단한 웹서버를 위해 리눅스 기반 서버를 만들어본다.
인스턴스 생성(Linux AMI)
-
로그인 후 EC2 서비스에 들어간다.
-
인스턴스 시작 버튼을 누른다.
-
우분투 서버 16.04 AMI를 선택한다.
-
프리티어(무료 사용)로 사용하기 위해 인스턴스 유형중 t2 micro 인스턴스를 선택한다. (가입 후 12개월동안 매월 750시간까지 무료, 인스턴스가 2개라면 375시간씩(n개의 인스턴스의 무료 시간 = 750/n시간))
-
인스턴스 세부 정보 구성에서는 프리티어로 사용 시 기본값으로 사용한다.
-
스토리지는 무료로 30GB까지 사용가능 하므로 필요에 맞게 선택한다. 또한 비용부담이 무서울 경우 인스턴스 종료시 EBS(Elastic Block Store) 삭제를 꼭 체크하도록 한다.
-
관리를 위한 태그를 추가한다.(현업에서 수십~수백개의 인스턴스 관리를 위해서 사용)
대문자 N으로 시작하는 Name 태그를 작성시 값이 인스턴스 이름이 된다.
-
모든 곳에서 접속할 수 있는 서버를 만들 것이기 때문에 보안 그룹 설정의 소스는 0.0.0.0/0으로 놔둔다. 또한 기본으로 22번 포트만 열려있다.
-
검토 후 시작하기 버튼을 누르면 키패어 생성 창이 뜬다. 기존에 생성한 키패어가 없으므로 새 키패어 생성 후 다운로드 받고 시작한다.
-
조금만 기다리면 인스턴스에 관한 모든 정보를 볼 수 있는 페이지가 로딩된다. 약 1~2분후 상태검사가 초기화 -> 상태검사 통과가 되면 생성은 완료된다.
ps : Windows 인스턴스를 생성할 경우에도 위의 과정과 거의 같다.
다만, 보안 그룹 설정이 약간 다르다. 유형은 RDP에 포트 번호는 3389이다.
Linux 인스턴스 접속(Windows 환경)
만들어진 인스턴스의 퍼블릭 IP로 접속을 하기 위해 필요한 프로그램들을 설치한다.
- SSH(Secure Shell) 접속을 위한 프로그램
- 키 패어 pem파일 -> ppk로 변환하기 위한 프로그램(For Windows user)
-
mobaxterm 다운 (외부에 있는 서버에 접속하기 위한 프로그램, PuTTY를 사용할 줄 안다면 PuTTY를 사용해도 된다.)
-
PuTTYgen 다운
- 다운로드 페이지에서 폰트가 파란색인 puttygen.exe를 다운로드
-
키패어 파일을 변환하기 위해 puttygen을 실행하고 인스턴스를 시작하며 만든 키패어 파일을 로드한다.(파일형식을 모든파일로해야 pem파일이 보인다)
-
save private key버튼을 눌러서 ppk파일을 저장한다.
-
인스턴스 접속을 위해 mobaxterm을 실행 후 Session을 누른다.
-
SSH 프로토콜로 접속하기 위해 SSH를 누른다.
-
Remote host 에는 인스턴스의 퍼블릭 ip를,
Specify username에는 체크 후 ubuntu( AMI 마다 다르므로 aws 문서 참조),
Advanced SSH settings탭 - Use private key를 체크 후 이전에 변환한 ppk 키패어 파일을 선택하고 OK를 누른다.
-
이러한 창이 뜨고 Welcome to Ubuntu 메시지가 보인다면 접속 완료!😆
Elastic IP 설정
인스턴스를 중지 후 재실행할 때마다 퍼블릭 ip의 주소가 바뀌게 되므로 영구적인 퍼블릭 ip를 갖기 위해 Elastic ip를 설정한다.
-
AWS 관리화면의 좌측 사이드바 - 네트워크 및 보안 탭에서 탄력적 ip를 선택한다.
-
탄력적 ip 주소 할당 버튼을 누르고 다음 페이지에서 바로 할당을 누른다.
-
작업 - 탄력적 ip 주소 연결을 누르고 생성했던 인스턴스에 연결한다.
-
mobaxterm에 생성된 세션에서 우클릭 - Edit Session 을 누른 후 Remote host를 인스턴스에 연결한 탄력적 ip로 수정한다.
-
Windows 인스턴스 접속(Windows 환경)
-
Windows 인스턴스를 체크하고 연결버튼을 누른다.
-
RDP 클라이언트를 선택하고 원격 데스크톱 파일(.RDP)을 다운받는다.
-
암호 가져오기를 누른 후 발급받은 키 패어 파일을 넣고 암호 해독을 누른다.
-
해독된 암호를 복사해서 저장해놓는다. (타인에게 공개 절대 금지)
-
취소를 누른 후 2. 에서 다운받은 RDP파일을 실행하고 4.의 암호를 입력한다.
-
연결을 누르면 완료!😆
EC2 Linux 인스턴스를 활용하여 Nginx 웹서버 세팅
Nginx란?
동시접속 처리에 특화된
웹 서버 프로그램으로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다.Apache
보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.
-
기존에 설치되어 있는 패키지들을 업그레이드한다.
sudo apt-get update sudo apt-get upgrade [y]
-
nginx를 설치한다.
sudo apt-get install nginx
-
잘 설치되었는지 확인한다.
ls /var/www/html
nginx는 이러한 서버안에 저장되어 있는 html파일을 네트워크를 통해서 클라이언트에게 전달해주는 역할을 한다.
-
nginx는 기본적으로 80포트를 쓴다. Elastic ip:80으로 접속해보자.
접속이 되지 않는다.
왜? 인스턴스를 생성할 때 보안그룹에서 기본적으로 22번 포트만 열어놓고 나머지 포트를 막아놨기 때문에!
-
포트 설정을 위해 해당 인스턴스의 보안 그룹에 들어간다.
-
인바운드(외부 -> 서버) 규칙 편집을 누르고 규칙을 추가한다.
-
HTTP 유형의 위치무관으로 규칙을 추가한다.
-
그 후 4. 브라우저에서 새로고침을 누르면 우분투 nginx 서버에 있는 index.nginx-debian.html를 서버로 부터 전달받아 내용을 볼 수 있다.
- 우분투 서버에서 본 index.nginx-debian.html 파일의 내용↓
-
기존의 index.nginx-debian.html 파일을 지우고 vim을 이용하여 간단한 나만의 html을 만들어 테스트를 해본다.
cd /var/www/html ls sudo rm -f index.nginx-debian.html ls sudo vi index.html
-
브라우저로 elastic ip:80 으로 접속해본다.
잘 된다! 끝😆
댓글남기기