1. EC2란 ?
- Amazon Elastic Compute Cloud는 컴퓨팅 용량을 제공하는 서비스로, EC2를 이용하면 서버를 간단하고 쉽게 설계가 가능하다. 원래는 물리적으로 서버를 빌렸었어야 하지만 서버에 필요한 세트를 클라우드에서 빌릴 수 있다는 말이다.
- 내가 원하는 대로 하드웨어 구성과 OS 조합으로 선택해 구축할 수 있다.
- EC2 를 효율적으로 사용하기 위해서는 '어떻게 구성할까?' '어느 정도의 성능이 필요할까?' 와 같은 설계적 관점이 필요하다.
- 서버를 생성할 때 소프트웨어를 설치할지 혹은 준비되어 있는 AMI를 사용할 수도 있다.
2. 사용 절차
- EC2를 사용하기 위해서 관리 콘솔에서 EC2 대시보드를 열고 인스턴스 생성하면 된다. 대시보드에서는 인스턴스 유형을 선택하거나 보안 그룹을 설정할 수 있다.
- EC2 서비스는 인스턴스, AMI, 키 페어 등의 기능이 있다.
- 주요 기능
- 인스턴스: AWS 클라우드에 생성한 가상 서버.
- AMI: 가상 이미지. 인스턴스를 생성하는 기준이 되는 금형과 같은 것이다. OS 가 설치된 것부터 소프트웨어까지 설치되어 있는 다양한 AMI 종류가 있다.
- 키 페어: 인스턴스에 접속할 때 인증을 위해 사용하는 키.
- EBS: AWS 클라우드에서 사용할 수 있는 스토리지. 인스턴스 스토리즈로 사용.
- 보안 그룹: 가상 방화벽. 1개 이상의 인스턴스 트래픽을 제한.
- Elastic IP: 고정 IPv4 주소
- 사용 절차
- AWS 로그인( 리전 선택-> 관리 콘솔 열기 -> EC2 대시보드 열기)
- EC2 인스턴스를 생성한다(AMI 선택 -> 인스턴스 유형 선택 -> 네트워크, IP주소 할당 -> 스토리지 추가 -> 보안 그룹 설정 -> 키 페어 선택)
- 인스턴스 설정시 CPU, 메모리, OS, 웹서버 등 검토한 후 설치하면 되며, AMI 에서도 제공한다. 하지만 잘 모른다면 적당한 것 고르면 된다.
- EC2에 접속(SSH로 EC2에 접속)
- 소프트웨어 설치 및 설정
- AMI
- 인스턴스 유형: 인스턴스의 장비 유형. CPU, 메모리, 장비 유형 결정
- 리전: 지역 선택
- 네트워크: EC2 인스턴스를 배치할 네트워크. VPC 에서 선택
- 서브넷: 설치할 네트워크의 범위. 서브넷을 선택하면 가용 영역이라 하는 설치 장소와 어떤 범위에 사설 IP 가 부여될지를 결정한다.
- IAM 역할: 인스턴스의 접속 권한 정책을 설정
- 스토리지의 용량과 종류: 서버 장비의 스토리지. EBS를 선택하고 사용할 디스크 용량과 스토리지 종류를 선택한다. S3 같은 외부 스토리지는 선택 불가.
- 태그(EC2 인스턴스의 레이블): 인스턴스에 임의의 태그를 부여할 수 있는데 Name 태그를 사용하여 인스턴스 이름에 부여할 수 있다.
- 보안 그룹: 프로토콜별 포트나 IP주소, 혹은 양쪽에 필터링을 설정
3. 인스턴스 생성과 요금
- 인스턴스 사용량 = 가동시간 X 단가
- EBS(스토리지) 요금 = 용량 X 단가
- 통신 요금
- 그 외 옵션
4. AMI( Amazon Machine Image)
- 인스턴스(가상 서버)를 생성하기 위한 금형같은 것으로 금형을 한 번 만들어 두면 같은 설정의 서버를 생성하는 것이 가능하다.
- 주요 AMI
- Amazon Linux: 아마존 제공 레드햇 기반 리눅스
- CentOS: 센트 OS리눅스
- Red Hat Enterprise Linux
- Debian GNU/Linux
- Ubuntu Server
- SUSE Linux Enterprise Server
- Microsoft Windows Server
- LAMP Certified by Bitnami
- Tomcat Certified by Bitnami: 자바 서블릿을 움직이는 톰캣 서버
- WordPress powered by AMMIMOTO: 블로그 시스템 워드프레스
- Movable Type: 블로그 시스템 무버블 타입
- NGINX Open Source Certified by bitnami: 웹 서버
- Redmne Certified by Bitnami: 진행 현황 관리 도구 서버
- NextCloud Powered by IVCISA: 파일 공유 도고 서버
- SFTP Gateway: 암호화 FTP 서버
5. 인스턴스 유형 : 머신의 용도
CPU, 메모리, 스토리지, 네트워크 용량 등이 용도에 맞게 조합되어 있다.
- 주요 인스턴스 유형
- 범용(T2, T3, M5, M4): 일반적인 서버.
- 컴퓨팅 최적화(C5, C4): 연산 능력이 높은 서버
- 메모리 최적화(X1e, X1): 메모리 엑세스 속도를 높인 서버
- 메모리 최적화(R4): 대용량 메모리를 탑재한 서버
- 가속화된 컴퓨팅 최적화(P3,P2,G3, F1): 머신 러닝 등에 사용되는 GPU를 탑재한 유형 및 그래픽 기능이 높은 유형
- 스토리지 최적화(H1,I3,D2): 스토리지를 최적화한 유형
6. Amazon EBS(Amazon Elastic Block Store)
- 영구적인 블록 스토리지(데이터를 기록하는 장소) 볼륨이며 EC2 인스턴스와 조합해 사용 *블록스토리지볼륨: 데이터를 바이트 블록 단위로 디스크에 저장하는 방식
- 종류
HDD(Hard Disk Drive) | SDD(Solid State Drive) | |
읽기쓰기속도 | 보통 | 빠름 |
가격 | 보통 | 높음 |
소비전력 | 조금 높음 | 보통 |
내구성 | 약함 | 강함 |
고장 | 이중화되어 있음 | 이중화되어 있음 |
- 기능
- 탄력적 볼륨: 볼륨 크기 조정
- 스냅샷: 어떤 시점의 데이터를 통째로 저장
- 데이터 라이프 사이클 매니저: 일정에 따라 스냅샷 생성, 삭제하는 기능
- 최적화 인스턴스: 특정 인스턴스 유형을 최적화 인스턴스로써 읽기, 쓰기를 고속화는 기능
- 암호화: 데이터 볼륨, 부팅 볼륨, 스냅샷을 암호화하는 기능
7. SSH를 사용한 접속과 키 페어
- EC2 도 서버에 설치한 소프트웨어의 SSH로 관리한다. 키페어 방식을 사용하는데 키 페어 파일을 분실하면 서버를 다시 만들어야 한다.
- 서버에 설치한 소프트웨어를 조작할 때 SSH 방식을 사용해 원격 접속해 조작하는 것이 일반적이다.
- 서버에 SSH 사용을 위한 프로그램을 기동(서버에는 이미 설치되어 동작 중임) -> 클라이언트에는 조작을 위한 소프트웨어 설치(Putty 나 Tera Term 주로 사용)
- 키 페어 : 로그인 시 인증으로 사용하며 공개키와 비밀키(나만 아는 키)로 된 한 쌍을 일컫는다. SSH로 서버(인스턴스)에 접속할 때 인스턴스쪽에 키 페어에 포함되어 있는 공개키를 지정하고 클라이언트쪽 소프트웨어에는 내려받는 키페어파일을 비밀키로 설정한다. 키 페어는 생성할 때만 내려받기 가능하고 재 발행이 안 되니 주의가 필요하다. 같은 리전의 서비스면 공통 키 페어 사용 가능하다.
8. Elastic IP
- AWS는 고정 주소를 탄력적 주소(Elastic IP)로 제공하는데 Elastic IP는 AWS 계정에 속해 있어 인스턴스를 삭제해도 계속 사용 가능하다. (AWS 에서 금액이 매달 청구되어 인스턴스를 삭제했음에도 계속 청구가 되어 봤더니 Elastic IP 때문에 청구가 되는 것이었다.ㅠㅠ 사용하지 않는다면 IP 주소를 해지해야 한다)
- 특징
- 보유 중인 IP 주소는 다른 인스턴스나 네트워크에 부여 가능
- 인스턴스에 이미 할당되어 있는 공인 IP 대신 Elastic IP 주소를 할당하면 AWS IPv4 주소 풀로 되돌아 간다.
- 이미 할당 중인 IP 주소는 Elastic IP 주소로 사용할 수 없다
- Elastic IP 주소는 리전에 속함으로 다른 리전이 보유 중인 Elastic IP 주소를 사용할 수 없다.
9. Elastic Load Balancing
- AWS가 제공하는 로드 밸런서(서버에 집중되는 접속을 서버 여러 대나 네트워크에 분배하는 방식)
- 종류
- ALB(Application Load Balancer) : HTTP/HTTPS에 가장 적합한 로드 밸런서. OSI 7계층의 애플리케이션 계층에서 동작한다. 요청 명령어의 내용을 보고 판단하기 때문에 대상의 URL 디렉터리 단위로 분배가 가능하다. 인스턴스와 로드 밸런서 사이의 통신 암호화가 가능하다.
- NLB(Network Load Balancer): 전송 계층에서 독작하며, 분배 대상의 정적 IP주소를 설정할 수 있고 서버에 접속한 클라이언트의 IP 주소를 설정할 수 있고 서버에 접속한 클라이언트의 IP 주소를 그대로 서버에 전송하도록 설정 가능하다.
- CLB(Classic Load Balancer): 오래된 유형의 로드 밸런서. 지원 프로토콜(TCP, SSL/TLS, HTTP, HTTPS) 이 많지만 앞으로 구축할 시스템에는 사용하지 않는 것을 권장한다.
10. 스냅샷 Snapshot
- 어떤 시점의 서버 디스크 상태를 통째로 보존한 파일이나 폴더 등의 집합.
- 스냅샷을 작성 해 EBS 볼륨의 데이터를 S3에 백업할 수 있고 생성된 스냅샷은 백업용으로 많이 사용한다.
- AWS는 최초에는 통째로 보존하지만 두 번째 이후는 증분만 보존한다.
- 스냅샷 삭제 시 해당 스냅샷 고유 데이터만 삭제한다.
- 스냅샷 요금은 생성 스냅샷의 분량 단위로 발생한다
- 생성 방법
- 관리 콘솔에서 볼륨 단위(스토리지 전체)로 선택해 생성한다.
- 스냅샷을 기반으로 EBS 볼륨을 생성하면 새로운 볼륨은 원래 볼륨의 복제가 된다.
- AMI 작성하고 싶을 때 스냅샷으로 작성한다
- 데이터 수명 주기 관리자를 사용하면 스냅샷의 생성, 삭제를 자동화 할 수 있는데 서버가 망가졌을 때 대응이 가능하다.
11. 오토 스케일링 Auto Scaling
- 서버의 액세스 상태에 따라 인스턴스의 증감을 자동으로 실행하는 것이다.
- 액세스가 많아지면 서버 대수를 증가시키고 적어지면 줄이는 것이다.
- 사용 방법
- Auto Scaling 그룹을 생성(AMI, 키페어, 보안 그룹 등을 설정)하고 그룹에 인스턴스(서버)의 최소 대수와 최대 대수를 설정 -> 이 범위 안에서 인스턴스 수가 증감한다.
- 오토 스케일링 요금은 무료이나 CloudWatch는 모니터링에 관련된 요금을 부과한다.