sol 개발 블로그 로고
Published on

AWS EC2 정리

Authors
  • avatar
    Name
    Chan Sol OH
    Twitter

목차

EC2 개요

EC2란 Elastic Compute Cloutd의 약자 = Infrastructure as a Service 클라우드란 컴퓨팅 기능을 필요에 따라(온디멘드하게) 임대해 사용하는 것.

EC2가 실질적으로 제공하는 서비스

  1. EC2라는 가상 머신
  2. EBS라는 가상 드라이브에 데이터 저장
  3. ELB라는 로드벨런서로 부하 분산
  4. ASG라는 오토 스케일링 기능

EC2의 옵션

  1. 운영체제 : 리눅스, 윈도우, 맥OS
  2. CPU 파워와 코어 수
  3. RAM
  4. 저장소
    • 네트워크에 연결된 저장소 (EBS & EFS)
    • EC2 하드웨어에 붙은 저장소 (EC2 instance Store)
  5. 네트워크 카드 속도, 공용 IP 주소 설정
  6. Security Group이라는 방화벽 설정
  7. EC2 User Data라고 EC2 첫 시작 때 실행시키는 Bootstrap script를 설정
    • update 설치
    • Software 설치
    • 인터넷에서 파일 다운로드 같이 원하는 작업을 설정할 수 있다.
    • EC2 User Data Script는 인스턴스의 root user 권한으로 실행된다. (Sudo 권한)

Bootstrap이란?

머신이 시작할 때 첫번째로 한번 실행하는 명령 스크립트 EC2에서는 EC2 User Data라고 한다. 즉 부팅 작업을 자동화하는 것이다. 어떠한 작업도 괜찮지만, 부트스크립트가 길어지면 부팅 시에 인스턴스가 할 일이 많아지고 부팅 시간이 길어질 수 있다. 또한, EC2 User Data Script는 root 유저로 실행되기 때문에 sudo 권한으로 명령을 실행하게 된다.

  • 업데이트 설치
  • 소프트웨어 설치
  • 인터넷에서 일반 파일 다운로드

EC2 인스턴스 종류

ec2 인스턴스 종류

EC2 시작 설정

EC2 인스턴스 생성 설정

  1. 인스턴스 이름

  2. 운영체제 선택

  3. 인스턴스 타입 선택

  4. 키 페어 생성

    • SSH 로그인을 위해 필요함
  5. 보안그룹(SG) 설정

    • EC2에서 웹 서버를 실행하려면 HTTP 트래픽을 허용하도록 설정해야한다.
  6. 저장소 설정

    • 일단 기본 사용
  7. 고급 세부 정보에서 User Data 설정

    • EC2가 처음 시작할 때 명령어 예시로 아래와 같이 작성
    • 인스턴스가 처음 실행될 때 딱 한번 실행되는 명령어
     #!/bin/bash
     # Use this for your user data (script from top to bottom)
    
     # install httpd (Linux 2 version)
    
     yum update -y
     yum install -y httpd
     systemctl start httpd
     systemctl enable httpd
     echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
    

EC2의 인스턴스를 제거하고 싶진 않지만, 요금이 두려울 때는 인스턴스 상태를 중지로 해놓으면 된다. 삭제되지 않지만, 요금은 나오지 않는다. 다만, 인스턴스를 중지했다가 나중에 다시 시작하면, 인스턴스의 공개 IPv4를 바꾸기도 한다. 하지만, 프라이빗 IP는 바뀌지 않는다.

AWS naming convention

AWS는 EC2 인스턴스의 이름을 짓는 방법이 있다. 예를 들어 m5.2xlarge로 설명하겠다.

  1. m : instance class
  2. 5 : generation 새로운 세대의 하드웨어를 출시하고 붙이는 세대 번호
  3. 2xlarge : 인스턴스의 크기 small, large, 2xlarge,...등등 크면 클 수록 더 많은 메모리를 가지고 있다.
  • General Purpos
    • t2나 m2 시리즈 같이 t,m으로 시작하느 인스턴스
    • 네트워크, 메모리, 컴퓨팅 성능이 균형잡혀있다.
  • Compute Optimized
    • 배치 처리 작업, 미디어 인코딩, 고성능 서버, 머신러닝, 게이밍 서버가 필요할때 사용
    • C6g나 C4 시리즈 같이 C로 시작하는 인스턴스
  • Memory Optimized
    • 메모리가 많다는 것은 빠른 작업이 가능하고 대용량 데이터를 처리할 수 있다.
    • 고성능 데이터베이스, 인메모리 데이터베이스, 실시간 비정형 데이터 처리 작업을 위해 필요하다.
    • R5, R4 같이 R로 시작하는 인스턴스
  • Storage Optimized
    • 대용량 로컬 데이터를 자주 읽고 쓰기 권한이 필요한 작업에 적합
    • 관계형, 비관걔형 데이터베이스에 사용
    • 인 메모리 데이터베이스의 캐시 (Redis)나 분산 파일 시스템에 사용
    • I, H, G로 시작하는 인스턴스

AWS에서 사용가능한 인스턴스를 보여려면 Vantage에서 인스턴스를 전부 확인할 수 있다.