[AWS] EC2 서버 구축하기

shinny·2024년 3월 20일

AWS

목록 보기
1/5

Amazon EC2를 사용하면 AWS 클라우드에서 실행되는 가상 머신 또는 인스턴스를 생성할 수 있다.

먼저 EC2에 들어가서 인스턴스 시작하기 버튼을 누르게 되면 아래의 순서에 따라 인스턴스를 생성할 수 있다.

이름 및 태그

  1. 이름은 내가 만들고자 하는 인스턴스를 구별할 수 있는 것으로 지으면 된다.
  2. 태그는 AWS 리소스에 할당하는 레이블이다. 태그는 사용자가 정의하는 키와 선택적 값으로 구성된다. 태그를 사용하면, 용도, 소유자 또는 환경을 기준으로 AWS 리소스를 다양한 방식으로 분류할 수 있다.

예를 들어, 인스턴스의 이름을 EC2-WebServer-NY라고 했을 때, OWNER=Nicole, Dept=Platform 이런 식으로 태그를 달 수 있다.

하나의 리소스 당 최대 태그의 갯수는 50개이며, 각 리소스에 대해 각 태그 키는 고유하다.

애플리케이션 및 OS 이미지(Amazon Machine Image)

  • AMI는 Amazon Machine Image의 줄임말이다.
    인스턴스를 시작하는데 필요한 소프트웨어 구성(운영체제, 애플리케이션 서버, 애플리케이션)이 포함된 템플릿이다.

플랫폼에 따라 amazon, ubuntu, windows, x86_64_mac 등을 찾을 수 있다.
그리고 OS 카테고리에 따라 모든 Linux/UNIX, 모든 Windows를 선택할 수 있고, 아키텍처도 64비트(Arm), 32비트(x86), 64비트(x86), 64비트(Mac), 64비트(Mac-Arm)도 선택할 수 있다.

Amazon Linux

  • Amazon Linux 2 AMI : Amazon EC2에 성능이 최적화된 Linux Kernel 5.10 + a이다.
  • Amazon Linux 2023 AMI : 최신 범용 Linux 기반 OS고 AWS에 최적화되어 있으며 클라우드 애플리케이션을 개발 및 실행할 수 있는 안전하고 안정적인 고성능 실행 환경을 제공하도록 설계되었다.

Linux

리눅스는 커널이라는 운영체제의 일종이다. 운영 체제는 User Mode를 담당하는 부분도 있지만, 하드웨어와 소통하면서 CPU와 같은 자원 사용을 효율적으로 할 수 있게 도와주는 역할도 한다. 그리고 이 역할을 하기 위해 항상 메모리 위에 올라가서 작동하는 운영체제의 구성요소가 바로 커널이다. 커널은 1. 메모리 관리 2. 저장공간 관리 3. 업무 관리를 한다.
하지만 또 커널 하나만으로는 운영체제의 역할을 다 할 수가 없기 때문에 GNU와 함께 사용해서 GNU/Linux 형태로 사용하게 된다고 한다.

순수하게 리눅스 커널만 사용하는 것이 아니라 커널과 함께 운영체제 목적에 맞는 여러 프로그램을 패키징하여 제공하는데 이것을 배포판이라고 한다. 그리고 이제 여기 AMI에서 보이는 다양한 종류들이 (Window 제외) 리눅스 커널을 사용하되 목적에 따라서 다양한 프로그램을 함께 제공하는 배포판의 종류이다.

그래서 여기서 이제 개인이 사용하는지, 기업에서 사용하는지, 딥러닝에 사용하는지, IoT에 사용하는지에 따라 특화된 서버를 선택하여 사용하게 되는 것이다.

AWS에 최적화하여 만들어진 것이 Amazon Linux이기 때문에, 특별한 이유가 없다면 Amazon Linux AMI를 사용하는 것이 좋다고 한다.
그리고 Amazon Linux AMI는 클라우드 환경과 Docker Container에 최적화되어 있다고 한다.

그리고 프로세서의 아키텍처로 64비트(x86), 64비트(Arm)를 선택하면 된다.

인스턴스 유형

지정하는 인스턴스 유형에 따라 인스턴스에 사용되는 호스트 컴퓨터의 하드웨어가 결정된다. 인스턴스 유형은 서로 다른 컴퓨팅, 메모리, 스토리지 용량을 제공하며, 이 용량에 따라 한 인스턴스 패밀리로 분류된다.
인스턴스에서 실행하려는 애플리케이션 또는 소프트웨어의 요구 사항에 따라 인스턴스 유형을 선택하면된다.

(참고) 인스턴스 유형 명명 규칙

c7gn.xlarge
  • c : instance family
  • 7 : instance generation
  • g : processor family
  • n : additional capability
  • xlarge : instance size


키 페어

키 페어를 생성해서 인스턴스에 연결 시 사용한다.

네트워크 설정

네트워크 vpc

AWS 리소스를 논리적으로 격리된 가상 네트워크에 띄운다.

위 그림은 vpc 의 예시 다이어그램이다. vpc는 그 리전의 AZ(Availability Zone)에 한 개의 서브넷을 가진다. 그리고 각 EC2 인스턴스들은 각각의 서브넷에 위치한다. 그리고 인터넷 게이트웨이를 통해서 VPC와 인터넷에 있는 리소스 간의 커뮤니케이션을 하게 된다.

서브넷

VPC 안에서 IP 주소의 범위다. 서브넷은 하나의 AZ(Availability Zone) 안에 있어야 한다. 서브넷을 추가하고 나면, VPC 안에서 AWS 리소스를 배치할 수 있게 된다. 기본 설정은 없고, 가용영역의 기본 서브넷을 사용한다고 되어 있다.

퍼블릭 IP 자동 할당

활성화로 되어있다.

방화벽(보안그룹)

보안 그룹은 인스턴스에 대한 트래픽을 제어하는 방화벽 규칙 세트다. 특정 트래픽이 인스턴스에 도달하도록 허용하는 규칙을 추가한다.
인바운드 규칙은 인스턴스로 들어오는 수신 트래픽을 제어하고, 아웃바운드 규칙은 인스턴스에서 나가는 발신 트래픽을 제어한다.

  • Amazon VPC 콘솔에 들어가서 보안그룹을 생성한다. 그런 다음 인바운드 규칙을 보안그룹에 추가한다. 프라이빗 DB 인스턴스에 대해서도 VPC 보안그룹을 생성해서, 인바운드 규칙을 추가해주어야 한다.(참고 : 자습서: DB 인스턴스에 사용할 Amazon VPC 생성(IPv4 전용))

  • SSH 트래픽 허용 (내 IP에서만 접근할 수 있도록 설정한다.)

  • 인터넷에서 HTTP 와 HTTPS 트래픽을 모두 허용해준다.

스토리지 구성

AWS 공식 문서에서 스토리지 볼륨으로 지칭하는 스토리지 드라이브는 물리적인 저장 장치를 가상화한 가장 대표적인 사례 중 하나이다. AWS 스토리지 볼륨은 인스턴스에서 실행되는 OS를 저장한다는 측면에서 기존의 물리적인 스토리지와 별 차이가 없어 보이지만 AWS는 사용 목적에 따라 다양한 볼륨을 제공하며, 이들 볼륨의 특징과 각각의 장단점을 이해한다면 인스턴스를 좀 더 잘 활용할 수 있다.

  • 하나의 인스턴스에 다수의 EBS(Elastic Block Store)를 부착할 수 있고, 이들 스토리지 볼륨은 기존의 물리 드라이브처럼 활용할 수 있다. EBS 볼륨의 성능은 최대 IOPS/볼륨 즉 초당 input/output 작업 횟수로 측정하며 두 가지는 SSD 기반 나머지 두 개는 HDD 기반 기술을 사용한다.
  • 인스턴스 스토어 볼륨 : EBS 볼륨과 다르게 인스턴스 스토어 볼륨은 비지속형 스토리지이며 인스턴스를 종료시키면 인스턴스 스토어에 저장된 데이터는 손실된다. 인스턴스 스토어 볼륨은 EC2 서버 호스팅 시 물리적으로 부착되어있는 SSD이다. 인스턴스 생성 시 자동으로 생성되며, 별도의 비용 부담은 없다. 인스턴스 재부팅 후에도 데이터가 소실되지 않게 하려면 EBS 볼륨을 사용해야 한다. 하지만 시스템 실패나 재부팅으로인한 데이터 소실보다 고속의 데이터 입출력 및 처리가 더 중요한 경우, 인스턴스 스토리지도 좋은 대안이 될 수 있다. 또 항상 EC2 스토리지에만 기댈필요는 없고, 쓰기/읽기 성능을 최적화하기 위해서 S3를 활용하는 방법도 있다.

참고로 프리티어에서는 최대 30GB의 EBS 범용(SSD) 또는 마그네틱 스토리지를 사용할 수 있다. 그리고 월별 프리티어에 대해서는 AMI에 대한 t2.micro로 월 750시간 무료, EBS 스토리지 30GiB, IO 2백만개, 스냅샷 1GB, 인터넷 대역폭 100GB가 포함된다.

참고자료

profile
꾸준히, 성실하게, 탁월하게 매일 한다

0개의 댓글