흰 스타렉스에서 내가 내리지

[AWS_Builders] EC2 본문

AWS

[AWS_Builders] EC2

주씨. 2023. 7. 14. 20:20
728x90

동일한 지리적 영역 내에 위치한 데이터 센터를 '리전'이라고 한다.

예를 들어 서울 리전은 서울 지역에 위치한 데이터 센터의 모음이다. 

AWS에서는 이런 리전에 있는 물리적 서버를 가상화하여 여러 개로 나누어 서비스하고 있다. 

하이퍼바이저라고 하는 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 통해, 물리적 호스트를 여러 개의 게스트로 나누게 되고, 우리는 이것을 EC2 인스턴스라고 말한다. 

 

 

 

리눅스, 윈도우즈, 맥과 같은 OS 지원

물리적 호스트 전체를 그대로 이용하는 베어메탈 서비스와 디스크, 네트워킹 서비스를 이용할 수 있다.

우리의 워크로드에 맞는 다양한 인스턴스를 제공하고 있다. 

다양한 구매 옵션으로 비용 절감에 도움을 주고 있다.

 

 

우리는 EC2를 사용하기 위해서 기존 물리 서버처럼 필요한 OS나 애플리케이션을 하나하나 설치할 필요가 없다. 

AMI는 EC2 인스턴스의 구동에 필요한 운영체제 및 애플리케이션을 담고 있으며, 

이를 이용하여 동일한 구성의 여러 개의 인스턴스를 상당히 손쉽게 시작할 수 있다. 

 

AMI는 1개 이상의 Amazon EBS 스냅샷이나 운영체제, 애플리케이션을 담고있는 루트 볼륨에 대한 템플릿을 가지고 있다. 

또한 시작권한과 인스턴스에 연결한 볼륨을 지정하는 블록 디바이스 매핑을 가지고 있다. 

 

 

기본 AMI를 이용하여 여러분들의 애플리케이션을 직접 구성하여 사용자 정의 AMI를 만들 수 있다. 

AMI는 Amazon S3 오브젝트 스토리지에 저장되는데, 먼저 기본 AMI를 이용하여 EC2 인스턴스를 생성한다. 

여기에 우리의 워크로드에 맞게 애플리케이션을 설치하고 구성한 후, 사용자 정의 AMI를 작성하면 다시 S3에 저장된다. 

그리고 이 AMI를 이용하여 우리들의 워크로드를 구성하는 인스턴스를 손쉽게 시작할 수 있다. 

 

인스턴스 생명주기는 크게 실행 중, 정지됨, 종료됨 상태가 있을 수 있다. 

AMI로부터 인스턴스를 시작하면 대기 상태를 거쳐 실행 중 상태가 됩니다. 

실행 중 상태일때 reboot, 정지, 혹은 종료를 할 수 있다.

 

한 가지 주의해야 할 것은, 인스턴스는 한 번 종료되면 완전히 제거되므로 복구할 수 없다. 

 

 

맨 앞에는 인스턴스의 패밀리 유형을 보여주고, 

그 다음부터 인스턴스의 세대, 추가기능, 그리고 마지막에는 인스턴스의 크기를 나타내게 된다. 

 

인스턴스 패밀리는 크게 범용, 컴퓨팅 최적화, 메모리 최적화, 가속 컴퓨팅, 스토리지 최적화, HPC 최적화의 종류로 나누어진다.

대략 살펴보면 범용은 t나 m으로 시작하고, 컴퓨팅은 c, 메모리 최적화는 R, 가속 컴퓨팅은 G나 P, 스토리지 최적화는 I, HPC는 H이다.

 

 

인스턴스는 추가 기능으로 구분할 수 있는데, 프로세서별로 gai 나뉘고,

인스턴스가 인스턴스 스토어라는 호스트 컴퓨터에 물리적으로 위치하는 임시 디스크를 사용할 수 있는 경우는 d, 

고성능 네트워크를 지원하는 경우에는 n, 

스토리지 io 성능을 최적화하여 사용할 수 있는 경우에는 b로 표시하고,

대용량 메모리를 지원하는 경우 e로 표기한다. 

 

 

 

 

8xlarge는 4xlarge 2개와 동일한 사이즈이다. 

이 때 동일한 작은 사이즈의 인스턴스를 여러 개 사용하는 것과 이와 동일한 큰 사이즈의 인스턴스를 적은 수량으로 이용하는 것에 대한 요금은 같다. 

 

위 사진처럼 하루동안 사용량 변화를 갖는 워크로드가 있다고 가정했을 때, 

m5.large 인스턴스 29개를 이용했을 때는 인스턴스 용량을 낭비하는 구간이 많이 보이지만, 

동일한 사용량에서, 59개의 t2.small 인스턴스로 변경하면, 인스턴스 용량을 효율적으로 사용할 수 있다. 

 

약 50%의 비용 절감 효과가 있다.

 

EC2를 처음 만들고 난 뒤, 각 시스템에 접근하기 위해 Linux의 경우 최초 호스트 로그인을 위한 SSH 키페어가 필요하며,

윈도우즈의 경우 AWS CLI를 이용하여 초기 관리자 암호를 검색할 수 있다. 

SSH는 표준 SSH RSA 키페어를 사용하여, 일반 OS에 대한 초기 액세스를 제공하기 위해  안전하고 개인화된 비제네릭 방식을 제공합니다.

 

 

 

 

EC2 Instance Connect 기능을 이용하면 리눅스 인스턴스에 손쉽게 연결할 수 있다. 

이 기능은 사전에 Linux에 EC2 Instance Connet가 설치되어야 하며 Amazon Linux의 경우 사전에 설치돼 있습니다.

또한 public IP 주소가 필요하다.

이 기능을 이용하여 콘솔을 이용해 손쉽게 EC2 Instance에 접속할 수 있다. 

 

 

EC2 인스턴스 Connect 기능의 경우 public IP주소가 필요하다.

세션 관리자를 이용하면 EC2 인스턴스에 퍼블릭 IP가 없는 경우에도 퍼블릭 IP가 있는 별도의 호스트, 즉 배스천 호스트나 SSH 키를 사용하지 않고 인스턴스에 접속할 수 있다. 

사용자는 인스턴스에 직접 연결하지 않고 AWS의 시스템 매니저를 이용하여 인스턴스에 별도의 SSH 등의 포트를 오픈하지 않고 미리 설치된 SSM Agent를 통하여 접속하게 된다. 

따라서 SSM Agent가 미리 설치돼 있어야 하며 아마존 리눅스는 미리 설치되어 있다. 

세션 매니저를 사용하기 위해서는 EC2 인스턴스를 시스템 매니저를 통해 관리하기 위해 미리 생성돼 있는 IAM 권한 설정이 필요함.

 

x86의 경우 Intel이나 AMD 프로세서를 사용하고, 
Arm 의 경우 AWS에서 개발한 Graviton 프로세서를 사용하고 있다.

 

데모에서는 아마존 인스턴스 커넥트와 세션 매니저를 통해 접근하기 때문에 키페어를 생성하지 않는다. 

 

HTTP로 접속하려고 하기 때문에 방화벽 설정에서 HTTP 트래픽은 허용한다.

그리고 public IP 자동할당도 활성화한다.

 

세션 매니저를 통해 인스턴스에 접속하려고 하기 때문에 권한이 필요하다.

EC2에 설치돼 있는 SSM Agent를 통해 세션 매니저가 접속하기 때문에 이에 대한 권한이 필요하다. 

IAM 인스턴스 프로파일 항목을 선택하면 미리 만들어 놓은 IAM 프로필을 선택한다. 

 

HTTP 페이지를 보여주기 위해 웹 서버를 설정하고 페이지를 배포해야 한다. 

인스턴스가 처음 실행될 때 수행되는 스크립트를 지정할 수 있는데 유저 데이터에 입력하면 된다. 

미리 복사해 놓은 스크립트를 입력한다. (맨 아래 있음)

 

인스턴스를 생성했다. 

퍼블릭 아이피, 프라이빗 아이피, 도메인 주소를 확인할 수 있다. 

 

아까 HTTP에 체크를 했기 때문에 80번 포트에 대한 인바운드 규칙을 확인할 수 있다. 

 

 

첫번째 탭인 EC2 인스턴스 연결은 public IP가 있어야 한다. 

 

IAM 역할 권한을 아직 주지 않았기 때문에 세션매니저로 접속할 수 없다.