개발/Cloud Computing

☁️⟪AWS⟫ EC2 / EBS / ENI / AMI

hyuunii 2023. 3. 27. 15:29
아주 빠르게 읽고 정리중이라 아래 출처에서 거의 고대로 긁어왔습니다(인파님 쨩👍🏻🤍)!!! 들어가서 보시길 ㅊㅊ

출처::
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-EC2-%EA%B0%9C%EB%85%90-%EC%82%AC%EC%9A%A9-%EA%B5%AC%EC%B6%95-%EC%84%B8%ED%8C%85-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-EBS-AMI#amiamazon_machine_image_%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

일반적인 서버를 보면 보통 컴퓨팅(CPU/RAM), 하드디스크, 랜카드 로 나누어진다.

이것을 EC2에 대입해보면 다음과 같이 된다.

  • 컴퓨팅에 해당하는 인스턴스
  • 하드디스크에 해당하는 EBS(Elastic Block Storage)
  • 랜카드에 해당하는 ENI(Elastic Network Interface)

 

랜카드(Network card, LAN card)

랜 LAN은 Local Area Network 로컬 영역 연결을 뜻함. 네트워크 안에서 컴퓨터간의 통신을 할 때 사용하는 장비 중 하나. 요즘은 대체적으로 메인보드에 내장되어 있다.

 


인스턴스

인스턴스: 어렵게 접근할 필요없고 단순하게 aws 클라우드에서 사용하는 가상 컴퓨터 라고 이해하면 된다.

가상의 컴퓨터에의 CPU, 메모리, 그래픽카드 등 연산을 위한 하드웨어 부분을 담당한다.

 

EC2 인스턴스 유형: EC2 인스턴스란 한정된 요금으로 EC2 인스턴스의 유형(직업)을 고르고 사이즈(스탯 포인트)를 골라 각 인스턴스별로 사용 목적에 따라 최적화를 시키는 것이다.

예를들어 CPU에 힘을 실어 연산능력이 좋은 서버를 만든다던지, 메모리 위주에 힘을 실어 저장소로서 기능 구성한다던지, 그래픽 카드에 힘을 실어 게임을 돌린다던지 등 다양하게 구성이 가능하다.

 

RPG게임에 직업이 전사/도적/마법사 가 있듯이, 인스턴스 유형에도 타입 이라는 것이 존재한다.

aws는 각 인스턴스의 사용 목적(서버용, 머신러닝용, 게임용)에 따라 타입별로 인스턴스에 이름을 부여해 구분하고 있다.

  • e.g.) t타입, m타입, inf타입 ..등

표를 보면 범용 및 컴퓨팅, 메모리, 저장 최적화 성능 목적에 따라 타입이 여러가지 존재한다는 것을 볼 수 있다.

특히 t와 m은 범용타입이기 때문에 aws 초보자들이 가장 많이 사용하는 프리티어에서 쓰는 타입이므로 자주 접해 볼수 있는 타입이다.

 

EC2 인스턴스 유형 & 사이즈 선택하기

가장 범용적으로 쓰이는 t2 그룹에 micro 유형 크기가 프리티어로 사용이 가능하다라고 명시되어 있다.

 

 

인스턴스 유형과 사례▼

 

인스턴스 세부 정보 구성


EBS (Elastic Block Storage)

컴퓨터 본체를 보면, cpu와 램카드, 그래픽카드, SSD, HDD가 다같이 장착되어 컴퓨터가 돌아가게 된다.

EC2 인스턴스가 연산에 관한 (CPU,메모리 등) 처리를 한다고 하면, 데이터를 저장하는 역할(SSD, HDD)은 바로 EBS가 한다고 보면 된다.

즉, EBS는 클라우드에서 사용하는 가상 하드디스크(HDD)라고 말할 수 있다.

EBS는 AWS 클라우드의 Amazone EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다.

그리고 단 몇분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝(빌리는 행위)한 부분에 대해서만 저렴한 비용을 지불 할 수 있다.

 

 

EBS는 EC2와 같은 가용영역(AZ)에 존재한다. AZ가 같아야 연길 및 통신이 빠르기 떄문이다.

만일 다른 AZ로 생성해서 EC2에 붙이려고 한다면 에러가 나게 된다.

 

 

EBS는 네트워크에 있는 하드라고 생각하면 된다

옵션에 크기와 볼륨 유형이 눈에 띄는데 다음과 같다.

  • 크기(GiB) : 메모리 GB단위 (적당히 8GB로)
  • 볼륨 유형 : 항목에는 5가지 종류의 SSD가 있는데, 성능 차이에 따라 구분을 둔 것이다.
    (성능을 높게 잡으면 비용이 많이 발생할 수 있으니, 범용 SSD나 가장 저렴한 마크네틱을 선택한다.)
  • 종료 시 삭제 : 나중에 인스턴스가 삭제 될떄 EBS도 삭제할지 말지 설정하는 옵션이다.
    해당 옵션이 체크되면, 인스턴스를 종료하면 컴퓨터와 저장장치가 모두 폐기된다고 보면된다.
    체크가 안되있는 경우 컴퓨터는 폐기, 저장장치는 폐기되지 않는다고 보면 된다.
    (저장장치도 비용 발생할 수 있으니 체크를 한다.)
  • 암호화 : EBS 자체를 암호화 시키는 것이다.만일 누가 해킹해서 EBS를 뺴온다 해도 암호화 되어있기 때문에 안의 데이터가 안전하다는 뜻이다.즉, 금고 같은 개념이다. (내용물 데이터가 암호화가 되는게 아닌 하드가 암호화)

ENI(Elastic Network Interface)와 EIP(Elastic Internet Protocol Address)

서버(인스턴스)가 생성되었고, 이를 실행하는데 그전에 추가로 해야할 것이 있다. 

EC2를 올리게 되면 ENI(Elastic Network Interface)가 따라오게 되는데, ENI는 일종의 가상의 랜카드라고 생각하면 된다.

ENI는 가상이긴 하지만 랜카드이기 때문에 MAC 주소와 보안그룹에 연결되어있고 IP도 가지고 있다.

그리고 이 ENI를 EC2 사이즈에 따라 여러대 달 수도 있다.

 

이제 이 ENI(Elastic Network Interface)에 퍼블릭 IP를 달게 되면 외부에서 접속할수 있게 되는 것이다.

 

 

하지만, 인스턴스의 Public IP는 고정된 IP 주소가 아니라 유동적인 IP 주소 이다.

EC2 인스턴스를 STOP하고 상태가 중지 상태에서 새롭게 실행 상태로 변경하면, 기존에 할당받은 IP주소가 변경되어 버리는 현상이 생겨버린다.

즉, 퍼블릭 IP는 서버를 키고 끌때마다 새로운 것으로 갱신되기에, 이를 하나의 IP로 통일(고정)해야한다.

안 그러면 인스턴스 끄고 킬때마다 아이피가 바뀌는 불상사가 일어난다.

만약 DNS 도메인에 EC2 인스턴스의 IP주소를 연결해놓았는데, 이 IP 주소가 바뀌게 된다면 문제가 발생 될 것이다.

 

아래 gif에서 보듯이, 12.31.35.12 퍼블릭 IP를 부여받아 유저가 접속해서 서비스를 이용했는데, EC2를 STOP하고 재시작 했더니 ENI에 연결된 IP가 8.8.816으로 갱신되어 버린다.

 

이를 해결하고자 AWS에서는 바로 한 번 할당 받으면 절대 바뀌지 않은 Elastic IP를 제공한다.

Elastic ip는 일종의 고정된 퍼블릭 ip로, ENI에 붙여준다.

그러면 유저가 서비스를 멈췄다가 다시 가동해도 Elastic ip는 변하지 않기 때문에 계속 통신을 할수 있게 된다.


AMI(Amazon Machine Image) 

AMI는 EC2 인스턴스를 실행하기 위한 정보를 모은 단위 이다.

 

EC2(가상 컴퓨터)를 실행하기 위해서는 CPU 프로세서 타입이라던지 저장공간 용량은 몇인지, 32비트인지 64비트인지, OS는 윈도우인지 리눅스인지, 소프트웨어는 어떤게 설치되었는지 ..등 정보가 필요한데 이러한 세팅 정보(템플릿)를 저장한 단위라고 생각하면 된다.

AMI : 서버에 필요한 운영체제와 다양한 소프트웨어로 구성된 탬플릿

예를들어 나는 리눅스가 깔린 EC2사용 할 것이다! 라면,

인스턴스를 생성하고 OS를 일일히 설치해서 구성해야 하는게 아니라, 리눅스 환경 세팅이 된 리눅스 템플릿 AMI를 EC2에 적용시켜 아주 간편하게 리눅스 컴퓨터를 장만 하는 원리이다.

 

앞서 배운 스냅샷을 기반으로 AMI 구성이 가능하기 떄문에, AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다.

또한 exe처럼 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.

 

+ ...인스턴스를 생성하고 웹서버 프로그램을 깔고 띄우는 것 까지 성공한 후, 다른 곳 가서 또 인스턴스를 생성해 웹서버 띄우라고 하면 콘솔에 다시 웹서버를 설치하는 등 반복해야 할지도 모른다.

이때 AMI(이미지) 적극적으로 활용하면된다.

위를 통해 AMI 만든 후 사용하려면

 

[ EC2 인스턴스 시작 ]을 누르고 나의 AMI를 누르면 지금 생성했던 EC2가 보일 것이다.

생성한 EC2를 선택하고 앞서에 만들었던 EC2 세팅 단계를 다시 반복해서 만들면,

복제한 원본 인스턴스 내용이 그대로 반영이 되어있을 것이다.

 

잘 빌드된 백앤드 어플리케이션을 AMI로 만든 뒤

오토스케일링이나 로드 밸런싱에서

인스턴스를 처음부터 다 세팅하는게 아닌

위처럼 미리 만들어든 AMI을 사용한다면

시간을 많이 절약 할 수 있다.

 

이미 준비된 상태로 인스턴스를 실전 배치를 할 수 있기 때문이다. 

 

또한 AMI를 다른사람에게 전달도 가능하니 매우 유용하게 쓰일수 있다.