본문 바로가기

STUDY/AWS

AWS: EC2(Elastic Compute Cloud)

EC2(Elastic Compute Cloud)

 

과거에는 웹 서비스를 위해 물리적인 서버를 구매하고 그 안에서 서비스를 운영하였다. 물리적인 서버는 트래픽의 증가와 감소에 유연하게 대응할 수 없었고, 그 결과 고점의 트래픽을 기준으로 물리적인 서버를 운영할 수 밖에 없었다. 하지만 지금은 다수의 서비스들이 클라우드 서버를 사용한다. 클라우드 서버는 빠르게 가상 머신을 추가하거나 제거할 수 있어서 트래픽에따라 유연하게 대응할 수 있다. EC2는  AWS에서 제공하는 클라우드 머신 서비스이다. 사용자는 다양한 종류의 가상 머신을 사용할 수 있고 이에따라 비용이 발생 한다.

 

다양한 EC2 인스턴스 종류

 


EC2 인스턴스 생성

 

ec2-study라는 이름의 EC2 인스턴스를 생성하려고 한다. EC2 생성시에는 OS 유형, 인스턴스 타입, 키페어, 네트워크, 스토리지 등을 설정할 수 있다. 일단 모든 설정값을 기본으로 하였다.

 

그리고 Network settings에서 HTTP 트래픽 허용을 체크하고, Advenced details에 User data에 위처럼 값을 넣어주었다.

User data는 인스턴스 최초 생성시 딱 한번 실행되는 커맨드라인 명령어이다. 위 커맨드라인은 서버에 기본 웹페이지를 생성하는 명령어이다.

 

그리고 생성된 인스턴스의 Public IP 주소로 접근하면 위처럼 서버가 성공적으로 생성되고 커맨드라인이 실행되어 기본 페이지가 보이는것을 확인할 수 있다.

 

 


Security Group

 

Security Group은 AWS 네트워크 보안의 주요 구성요소로서 EC2 인스턴스의 방화벽 역할을 한다. 인스턴스로 들어오고 나가는 트래픽을 IP와 Port를 기준으로 허용여부를 설정하여 관리한다. 이때 IP와 Port 이외에도 다른 Security Group을 허용할지도 설정할 수 있다. 위에서 생성한 인스턴스의 Security Group > Inbound rules을 보면 모든 IP(0.0.0.0/0)에서 80번 포트로 들어오는 트래픽을 허용한 것을 알 수 있다. 그 덕분에 Public IP로 인스턴스의 웹페이지에 접근 할 수 있었던 것이다. 해당 Inbound rule을 삭제하면 아래처럼 접근이 차단된다.

 

 

 


IAM Role

 

생성된 EC2에 SSH로 접속하여 aws 명령어를 입력하면 인증을 하라는 메시지가 나온다. 이때 aws configure 명령어로 AWS Access Key를 입력할 수 도 있지만, 이는 좋은 방법이 아니다. 해당 정보는 인스턴스에 접속 가능한 모든 사용자가 접근 가능하기 때문에 보안 문제가 발생할 수 있다. 인스턴스에는 IAM Role은 생성하여 적용하여주는것이 옳다. 

 

IAM Role을 적용한 후에는 해당 역할로 aws 명령어가 실행되는것을 확인할 수 있다.

 

 


Batch Group(배치 그룹)

 

여러 EC2 인스턴스를 생성할 때 같은 AZ(가용 영역)안에서 근접하게 배치할 수도 있을 것이고, 서로 분리하여 배치할 수도 있을 것이다. AWS에서는 이러한 배치 전략을 선택할 수 있는데 이를 배치 그룹이라고 한다. 배치 그룹에서는 클러스터, 파티션, 분산 전략중 하나를 선택할 수 있다.

 

  • 클러스터 – 인스턴스를 가용 영역 안에 서로 근접하게 패킹합니다. 낮은 지연 시간의 네트워크 성능을 달성할 수 있습니다.
  • 파티션 – 인스턴스를 논리적 파티션에 분산해, 한 파티션에 있는 인스턴스 그룹이 다른 파티션의 인스턴스 그룹과 기본 하드웨어를 공유하지 않게 합니다. 이 전략은 일반적으로 Hadoop, Cassandra, Kafka 등 대규모의 분산 및 복제된 워크로드에 필요합니다.
  • 분산 – 소규모의 인스턴스 그룹을 다른 기본 하드웨어로 분산하여 상호 관련 오류를 줄입니다.

 

 


ENI(Elastic Network Interface)

 

ENI는 가상 네트워크 카드로서 이를 통해 IP를 할당하고 식별한다. EC2 인스턴스에는 각각 1개 이상의 ENI가 기본적으로 생성되고 연결되어있으며 그 덕분에 인스턴스를 생성하자마자 private IP와 public IP가 할당되는 것이다. 그리고 추가적으로 ENI를 생성하여 연결할 수도 있다. 즉, 하나의 인스턴스가 여러 IP로 연결되는것이 가능하다는 소리이다. 그리고 런타임에도 ENI를 연결하고 해제할 수 있기 때문에, 상황에 따라 트래픽의 흐름을 유연하게 변경하는 것도 가능해진다.

 

 


EC2 Hibernate(절전 모드)

 

EC2 인스턴스를 정지 후 재시작 하면 실행중에 있던 모든 RAM 정보가 사라지게 된다. 즉 컴퓨터를 새로 시작한 것과 같아진다. 물론 영구 스토리지에 저장한 정보가 사라지지는 않지만 메모리상에 있는 정보는 사라지게 된다. 하지만 EC2 Hibernate 옵션을 적용하면 인스턴스를 중지해도 메모리에 있던 정보가 EBS 스토리지에 저장되어 다시 시작한 이후에 메모리에 그대로 올라가게 된다. 즉 컴퓨터를 중지하지 않았던 상태와 같아진다.

 

 

728x90

'STUDY > AWS' 카테고리의 다른 글

AWS: IAM(Identity and Access Managemen)  (0) 2022.12.28