[참고] AWS>제품>Amazon EC2>요금>온디맨드
[참고] AWS>설명서>Amazon EC2>Linux 인스턴스용 사용 설명서
[참고] CloudPing.info, CloudPing.cloud
[참고] AWS 서울 vs 도쿄 리전 속도 및 가격 비교 | 오늘부터 seapy는
[참고] [AWS] EC2 인스턴스(ubuntu) 생성 및 연결 - JJo의 개발 기록공간
[다음] 5. AWS EC2(2) - Utuntu 자바(JDK, JRE), 톰캣 설치 및 war파일 배포
운영체제(OS) : Window 10 64bit
개발도구 : PuTTY
AWS 프리 티어 범위에서 진행.
Amazon EC2이란 무엇입니까?
Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선 투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한 Amazon EC2는 요구 사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어듭니다.
Amazon EC2의 기능
Amazon EC2는 다음의 기능을 제공합니다.
-
인스턴스: 가상 컴퓨팅 환경.
-
Amazon 머신 이미지(AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있습니다.
-
인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공.
-
키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식).
-
인스턴스 스토어 볼륨: 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨.
-
Amazon Elastic Block Store(Amazon EBS), 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터 저장.
-
인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스 할 수 있는 리전 및 가용 영역.
-
보안 그룹을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능.
-
탄력적 IP 주소(EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소.
-
태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터.
-
AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 Virtual Private Clouds(VPC).
인스턴스 생성
1) AWS Management Console > EC2 검색 또는 선택.
2) 리전 위치 확인 > EC2 Console > 인스턴스 > 인스턴스 > 인스턴스 시작 클릭.
-
다른 서비스와 EC2를 연동하여 사용 시 현재 위치와 리전 위치가 다르면 프리 티어 계정일 경우 속도 차이만 발생하지만 아닐 경우 속도와 요금의 차이가 발생한다.
(속도 비교 - CloudPing.info, CloudPing.cloud)
3.1) 좌측_프리 티어만=체크 > 원하는 AMI 선택.
-
프리 티어용은 AMI아래 [프리 티어 사용 가능]이라고 나와있다.
-
Windows Server : GUI(Graphical User Interface), 처리 속도 느림.
-
Ubuntu Server : CLI(Commend-Line Interface), 처리 속도 빠름.
-
UbuntuOS_APT(Advanced Packaging Tool) 활용할 경우 참고
Ubuntu Server 20.04 LTS(focal) : openjdk-[8 11, 13, 14]-[jdk, jre](참고), apache2(참고), tomcat9(참고).
Ubuntu Server 18.04 LTS(bionic) : openjdk-[8, 11]-[jdk, jre](참고), apache2(참고), tomcat[8, 9](참고).
Ubuntu Server 16.04 LTS(xenial) : openjdk-[8, 9]-[jdk, jre](참고), apache2(참고), tomcat[7, 8](참고). -
따로 설치하면 여러가지로 할 게 많아 피곤해지므로 APT를 활용하는 것이 좋다.
-
주의) 프리 티어용은 전부 64bit(x86)이다.
3.2) t2.micro=체크 > 다음: 인스턴스 세부 정보 구성 클릭.
-
프리 티어용은 유형에서 [프리 티어 사용 가능]이라고 나와있다.
3.3) 기본값 유지 , 종료 방식=종료 선택 , 종료 방지 기능 활성화=체크 > 다음: 스토리지 추가 클릭.
-
종료 방식 : [중지 | 종료], 인스턴스 종료=인스턴스 삭제. 잠깐 중지하고 시작할 일이 생길 수 있으니 종료를 권장한다(참고).
-
종료 방지 기능 활성화 : 실수로 종료(삭제)하는 것을 방지.
종료 방지 기능 비활성화 : EC2 Console > 인스턴스 > 인스턴스 > 종료할 인스턴스 체크 > 작업 > 인스턴스 설정 > 종료 방지 기능 변경 > 종료 방지_활성화=체크 해제 > 저장. -
필자는 설정 시 요금 발생에 대해 잘 몰라 기본값에서 2개만 건드렸다.
3.4) 크기=[8~30] , 볼륨 유형=[범용 SSD(gp2), 마그네틱(standard)] , 종료 시 삭제=체크 > 다음: 태그 추가 클릭.
-
크기(GiB) : EBS 볼륨 크기는 0 또는 사용된 스냅샷의 크기보다 커야 함. 인스턴스 생성 시 기본값=8로 되어있음(참고).
-
볼륨 유형 : 참고.
-
종료 시 삭제 : 인스턴스 종료 시 종속되어 있는 EBS 볼륨 삭제. 미체크 시 인스턴스 종료(삭제)할 때 EBS 볼륨은 남아있기에 인스턴스를 삭제했다고 하더라도 요금이 나간다(참고).
3.5) 태그 추가 클릭 > 키=Name , 값 작성 , 인스턴스=체크 , 볼륨=체크 > 다음: 보안 그룹 구성 클릭.
-
태그(선택 사항). 보안 그룹이 여러 개일 경우 다른 서비스에서 참조 시 태그 값으로 구분하기에 편의상 태그를 추가하는 것이 좋다.
-
키 : "Name"으로 작성해야 보안 그룹 목록에서 태그 값으로 나와 구분이 가능하다. 키를 다른 이름으로 작성 시 공백으로 나온다.
-
값 : [어디에 어떻게 쓰이는 무엇인지 + 보안 그룹]으로 작성하는 것이 좋다.
3.6)
새 보안 그룹 생성 : 보안 그룹 이름 작성 , 설명(선택) 작성 > 규칙 추가 클릭 > 유형 , 프로토콜 , 포트 범위 , 소스 , 설명(선택) 설정 > 검토 및 시작 클릭.
기존 보안 그룹 선택 : 추가할 보안 그룹 체크 , 검토 및 시작 클릭.
-
보안 그룹은 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상의 방화벽 역할. 즉, 배포 후 해당 Web Server에 접근 허용 규칙을 만드는 것.
-
새 보안 그룹 생성 시 인바운드 규칙만 설정 가능, 아웃바운드 규칙은 default로 모든 트래픽으로 되어있음.
-
새 보안 그룹 생성 시 사용자 정의 TCP 유형의 위치 무관 소스로 규칙 추가 시 아래 그림과 같은 경고 알람이 나오고 마지막 단계에서 인스턴스 생성 실패 에러가 발생된다.
-
기존 보안 그룹 선택 시도 같은 경고가 나오나 정상적으로 인스턴스가 생성된다.
-
버그인지 뭔지 6단계에서 문제가 되는 규칙을 지워 경고 알람을 사라지게 해도 마지막에 에러가 발생된다. 고로 처음부터 기존 보안 그룹을 선택하거나 위 그림과 같이 SSH, HTTP, HTTPS 유형만 추가하여 진행하는 것이 좋다.
3.7) 1단계 ~ 6단계 내용 확인 > 시작하기 클릭.
3.8) 새 키 페어 생성 선택 , 키 페어 이름 작성 > 키 페어 다운로드 클릭 > 인스턴스 시작 클릭.
-
Key Pair란 생성한 인스턴스에 접속하기 위한 비밀번호 파일. Key Pair 이름을 입력해서 저장하거나 이미 있는 경우 Key Pair 선택 후 인스턴스 시작 클릭.
-
새 Key Pair를 생성하는 경우 pem파일로 로컬에 비밀번호 파일을 저장한다. PuTTY, Xshell을 이용해 서버에 접속할 때 필요한 비밀번호 파일.
-
절대 잃어버리면 안 된다. 실수로 삭제하거나 잃어버릴 시 인스턴스부터 다시 만들어야 한다. Key Pair 분실 시 참고(방법1, 방법2).
탄력적 IP 주소 연결
6) 할당된 탄력적 IP 주소 체크 > 작업 > 탄력적 IP 주소 연결 클릭.
-
인스턴스가 중지/시작되는 경우 퍼블릭 IPv4 주소가 매번 변경되는데 탄력적 IP(정적 IPv4) 주소를 인스턴스에 연결하면 주소가 고정되어 항상 같은 주소로 접근할 수 있다.
-
AWS 프리 티어에서 탄력적 IP 1개를 무료로 사용할 수 있다. 하지만 사용 중인 인스턴스에 탄력적 IP를 연결해두지 않으면 요금이 청구된다(참고).
7) 리소스 유형=인스턴스 , 인스턴스=인스턴스_태그 값 , 프라이빗 IP 주소=인스턴스_프라이빗 IPv4 주소 > 연결 클릭.
-
인스턴스 SelectBox를 클릭하면 인스턴스 ID(인스턴스 태그 값) 형태로 나온다. 인스턴스가 여러 개일 경우 인스턴스 ID로 찾으려고 하면 힘들기에 웬만하면 인스턴스 태그를 지정하는 것이 좋다.
-
프라이빗 IP 주소_SelectBox를 클릭하면 하나밖에 나오지 않는다.
8) 인스턴스에 탄력적 IP 주소 연결 확인.
PuTTY를 활용한 인스턴스 접속
9) PuTTY 검색 후 홈페이지 접속 > Download PuTTY_here 클릭.
-
PuTTY 한글 버전은 여기로 들어간 뒤 iPuTTY-x.xx.x-x64-ko.zip를 받으면 된다.
10) 본인의 운영체제(OS)_시스템 종류 확인 > Alteernative binary files > putty.exe 다운로드, puttygen.exe 다운로드.
-
설치형도 있지만 미설치형(포터블 프로그램)을 다운로드하는 게 편하다.
11) puttygen.exe 실행 > Parameters-RSA 선택 > Load 클릭 > 파일 유형=All Files (*.*) 선택 > pem파일 선택 > 알림창 "PuTTYgen Notice" 확인 클릭(참고).
-
알림창 "PuTTYgen Notice" 내용 : 외부 키 가져오기 성공(OpenSSH SSH-2 개인 키(이전 PEM 형식)). 이 키를 PuTTY와 함께 사용하려면 "Save private key" 명령을 사용하여 PuTTY의 고유한 형식으로 저장해야 한다.
12) Save private key 클릭 > 알림창 "PuTTYgen Warning" 예 클릭 > 파일명과 저장 위치 지정 후 저장 클릭 > ppk파일 생성 완료(참고).
-
알림창 "PuTTYgen Warning" 내용 : 이 키를 보호하기 위해 암호 없이 저장하시겠습니까?
-
Key passphrase, Confirm passphrase를 통해 ppk파일의 암호를 지정할 수 있다.
13) SSH로 정상적으로 접속하기 위해선 다운로드한 putty.exe 실행 > Connection > SSH > Auth 클릭 > Borwse... 클릭 > ppk파일 가져오기.
-
ppk파일을 가져오지 않고 접속 시 아래 그림과 같이 Error가 발생돼서 접속이 불가하다.
-
알림창 "PuTTY Fatal Error" 내용 : 지원되는 인증 방법이 없음(서버 전송: 공용 키).
14) Session 클릭 > Host Name (or IP Address) : AMI 이름@퍼블릭 IPv4 DNS(or주소) 입력 > Port : 22 입력 > Connection type : SSH 선택 > Saved Sessions 이름 입력 > Save 클릭 > Open 클릭 > 예(Y) 클릭(Linux에 인스턴스 연결, 인스턴스에 대한 정보 가져오기).
-
매번 ppk파일 가져와서 Session을 설정하여 들어가기 귀찮으니 Save를 하여 필요할 때마다 Load 하여 Open 하면 된다.
-
AMI 이름 : 각 Linux 인스턴스는 기본 Linux 시스템 사용자 계정으로 시작됩니다. 기본 사용자 이름은 인스턴스를 시작할 때 지정된 AMI에 의해 결정된다. 연결하려는 인스턴스의 인스턴스 세부 정보 > AMI 이름에서 확인 혹은 설명서 참고.
-
Host Name (or IP address) : 연결하려는 인스턴스의 인스턴스 요약 > 퍼블릭 IPv4 주소(or DNS)에서 확인.
-
알림창 "PuTTY Security Alert" 내용 : 이 호스트를 신뢰하는 경우 예를 눌러 PutTY의 캐시에 키를 추가하고 연결을 계속하십시오. 캐시에 키를 추가하지 않고 한 번만 연결하려면 아니요를 누르십시오. 이 호스트를 신뢰할 수 없으면 취소를 눌러 연결을 끊으십시오.
-
Host Name 입력 시 AMI 이름은 생략이 가능하다. 생략하고 접속 시 아래 그림처럼 login as: ubuntu를 입력하면 된다.
15) cat /etc/issue 입력.
마무리
요약 : 인스턴스 생성 > 탄력적 IP 할당 및 연결 > 인바운드 규칙 확인 > PuTTY를 통한 인스턴스 접속.
인터넷에 사람들이 한 EC2 인스턴스 생성에 대한 내용을 따라 하다 시간을 많이 날렸다. 차라리 잘 못 알아듣더라도 AWS 설명서를 보다가 정 모르겠으면 인터넷을 참고하는 게 좋을 것 같다.
프리 티어 계정이어도 EC2를 어떻게 활용하냐에 따라 요금이 발생할 수 있으니 인스턴스 생성 후 탄력적 IP를 할당해줘야 한다.
Ubuntu Server를 기준으로 말하자면 인스턴스 생성 후 따로 SDK나 Server를 다운받아 쓴다면 상관없지만 Ubuntu APT를 이용한다면 인스턴스 생성 시 고려사항으로 본인이 프로젝트에 사용한 개발환경을 Ubuntu Server에도 똑같이 세팅해줘야 하기 때문에 버전별 Ubuntu APT 라이브러리를 확인하고 선택해야 한다.
Ubuntu APT 라이브러리를 활용하면 환경변수와 서비스 등록까지 자동으로 세팅해주기에 편하다. 따로 설치할 경우 저 모든걸 수동으로 해야된다.
필자는 Linux는 처음이고 CLI도 거의 처음이다시피 안 만져봐서 잘 모르는 상태로 따로 설치했다가 제대로 돌아가지도 않고 해결하려고 대략 4시간 동안 시간만 날려 개빡쳐서 Ubuntu Server 20.04 인스턴스를 삭제, Ubuntu Server 18.04 인스턴스로 다시 생성 및 연결, Ubuntu Server 환경세팅, war파일 배포를 30분만에 처리했다....ㅠㅠ
'IT 개발 > AWS' 카테고리의 다른 글
1. AWS VPC - RDS, EC2, Mail 보안 그룹 및 탄력적 IP 생성 (0) | 2020.12.18 |
---|---|
5. AWS EC2(2) - Utuntu 자바(JDK, JRE), 톰캣 설치 및 war파일 배포 (0) | 2020.12.14 |
AWS 프리 티어 사용 시 요금 발생(폭탄)을 막기 위한 팁 (0) | 2020.12.11 |
3. AWS S3 - 버킷 생성 및 연동 (0) | 2020.12.07 |
2. AWS RDS - DB인스턴스 생성 및 Oracle SQL Developer 접속 (0) | 2020.12.04 |