EC2 Instance를 멈췄다가 다시 실행하면 공인 IP가 바뀐다. 만약 계속 고정된 IP를 사용하고 싶다면 Elastic IP를 요청해야 한다. 계정 당 5개까지 신청할 수 있지만 Elastic IP를 사용하는 건 추천하지 않는다. DNS나 Load Balancer를 사용하는 것이 낫다.
배치 그룹 (Placement Group)
EC2 인스턴스들을 어떻게 묶어서 어떤 방법으로 하드웨어에 할당할 건지에 대한 전략이다. 우리는 정전이나 지진, 혹은 그냥 등의 이유로 하드웨어가 다운될 수도 있다고 생각해야 된다. 그렇기 때문에 인스턴스를 적절히 분산해 놓거나 하는 전략이 필요하다.
클러스터 - 한 Rack에 모두 몰아넣는다. 통신이 엄청나지지만 Rack에 오류가 있으면 모든 인스턴스가 종료된다. 빅데이터 등 네트워크가 많이 필요한 작업에 유리하다.
분산 - 모든 인스턴스를 모두 다른 하드웨어에 넣는 방법이다. 같은 AZ더라도 다른 Rack에 할당하고 최대한 다른 AZ에 할당되도록 한다. 이 경우 네트워크는 느리지만 안정성이 최대가 된다. 하지만 한 배치 그룹에서 각 AZ 당 7개의 인스턴스만 사용할 수 있는 단점이 있다.
파티션 - 여러 인스턴스(각각 최대 7)를 묶어 파티션을 만들고 이 파티션을 분산해서 처리한다. 클러스터, 분산의 절충안이다. 각각의 파티션은 메타데이터를 통해 접근하며 가장 일반적인 배치 전략이다.
탄력적 네트워크 인터페이스 (ENI)
VPC에서 가상 네트워크 카드를 나타내는 논리적 구성 요소이다. EC2가 네트워크에 접근할 수 있게 하며 EC2 밖에서 사용된다. 가용 영역 안에서 사용가능하며 퍼즐처럼 EC2와 붙였다 뗐다 할 수 있다.
ENI가 따로 존재하는 이유는 EC2 뿐만 아니라 다른 서비스에도 붙을 수 있기 때문이다. ENI는 사설 IP를 유지하고 있기 때문에 ENI를 다른 서비스에 붙이면 해당 IP로 들어오는 요청이 새로 붙은 서비스로 옮겨간다. 전체적인 변경 없이 ENI만 옮기면 되기 때문에 간편하다.
좀 더 빠른 네트워크 성능을 위해 ENA와 EFA를 쓰기도 한다.
최대 절전 모드 (Hibernate)
최대 절전 모드는 in-memory (RAM)의 상태를 보존하는 기술을 의미한다.
자, 인스턴스를 정지했다 다시 시작했을 때를 생각해보자. 어떤 과정이 일어날까? 먼저 아무것도 적혀 있지 않은 램에 OS 부팅 명령이 올라가고 유저 데이터 스크립트가 올라갈 것이다. OS가 부팅되고 그 다음 어플리케이션이 램 위에서 동작한다.
최대 절전 모드는 인스턴스를 정지하기 직전의 램 상태를 기억해둔다. 그리고 인스턴스가 시작할 때 그대로 덮어씌워 정지 직전의 상태 그대로로 복원한다. 이렇게 되면 부팅 단계를 생략했기 때문에 재시작하는 속도가 월등히 빨라진다. 이것이 최대 절전 모드 (혹은 동면 모드)이다. 램의 상태는 root EBS에 암호화되어 저장되고 최대 60일까지 보전된다.
메타데이터
메타데이터는 EC2 인스턴스의 정보를 담고 있다. IAM 역할도 알 수 있지만 각각의 정책은 알 수 없다. EC2에서 http://169.254.169.254/latest/meta-data/ URL로 접근해서 각종 메타데이터를 확인할 수 있다
그 외 고급 개념들
그렇게 깊이는 안다룬다.
EC2 니트로 시스템 - 니트로 시스템은 5세대 EC2 인스턴스 클래스의 가상화 기술이다. HPC, IPv6 등의 네트워크 옵션도 추가되었고, IOPS(I/O per second)가 매우 높다. 보안도 향상되었다.
vCPU - EC2 인스턴스의 코어 x 스레드이다. 특별한 목적이 없으면 그냥 뭉뜽거려 사용해도 되지만, 코어 개수로 돈을 내는 경우에는 코어를 줄일 수도 있고, 싱글 스레드 컴퓨팅의 경우에는 스레드를 1로 설정할 수도 있다.
용량 예약 - 짧게 인스턴스를 예약하고 싶을 때 쓴다.
실습
실습 1. ENI 만들어 붙이기
새로 만드는 ENI의 보안 그룹은 아무거나 했다. 이렇게 하면 해당 EC2 인스턴스에는 추가 사설 IP가 생기고 나중에 ENI만 떼서 옮기면 해당 IP로 들어오는 트래픽도 이동한다.
실습 2. 최대 절전 모드(Hibernate) 사용해보기
절전이 되었는지 알아보기 위해 컴퓨터가 몇 분 동안 켜져 있는지 알 수 있는 uptime 명령을 사용한다. 최대 절전이 되지 않았다면 uptime은 0으로 리셋되었을 것이다. 녹화하기 진짜 어렵다....