Amazon EC2 인스턴스의 시작, 크기 조정, 관리 및 모니터링에 대한 기본 개요 실습
Amazon Elastic Compute Cloud(Amazon EC2)
- 클라우드에서 크기 조정 가능한 컴퓨팅 용량을 제공하는 웹 서비스
- 개발자가 보다 쉽게 웹 규모의 클라우드 컴퓨팅을 수행할 수 있도록 설계됨
- 간단한 웹 서비스 인터페이스 제공
- 간편하게 필요한 용량을 얻고 구성할 수 있음
- 컴퓨팅 리소스를 완전히 제어하고 Amazon의 검증된 컴퓨팅 환경에서 실행 가능
- 새로운 서버 인스턴스를 확보하고 시작하는 데 필요한 시간을 몇 분으로 줄이기 때문에 컴퓨팅 요구 사항의 변경에 따라 신속하게 용량을 확장 및 축소시킬 수 있음
- 실제 사용한 용량에 대해서만 요금을 지불 → 컴퓨팅 비용 절약
- 개발자에게 장애 발생 시 복원력이 뛰어난 애플리케이션을 구축하고 일반적인 장애 시나리오에서 애플리케이션을 격리할 수 있는 도구를 제공
목표
- 종료 방지 기능(termination protection)이 활성화된 웹 서버 시작하기
- EC2 인스턴스(EC2 Instance) 모니터링
- 보안 그룹(security group)을 수정
- 규모에 맞게 Amazon EC2 인스턴스의 크기를 조정
- 종료 방지 기능 테스트
- EC2 인스턴스 종료
아이콘 키 설명
: 다양한 유형의 지침 및 참고 사항에 대한 주의 환기용
- ⚠ 주의: 특별한 관심이 필요한 중요한 정보
- 놓쳤다고 해도 장비 또는 데이터에 문제가 발생할 정도로 중요하지는 않지만 특정 단계를 반복해야 할 수 있음
- 🛑 경고: 철회할 수 없으며 명령 또는 프로세스의 실패에 영향을 줄 수 있는 작업
- 설정 후 변경할 수 없는 구성에 대한 경고 포함
- ✅ 예상 출력
- 명령 또는 편집된 파일의 출력을 확인하는 데 사용할 수 있는 샘플 출력
- 📃 참고
- 👀 자세히 알아보기
- 💭 고려 사항
- 자신의 환경에 개념을 적용하는 방법을 고려하거나 당면한 주제에 대한 대화를 시작하기 위해 일시 중지할 시점
- 👍 태스크 완료
실습 시작
- 페이지 상단에서 "실습 시작(Start Lab)" 버튼 누르기
⚠ 프로비저닝된 AWS 서비스가 준비될 때까지 기다리기
- "콘솔 열기(Open Console)" 버튼으로 바뀌면 해당 버튼 누르고 실습 시작
- 새 웹 브라우저 탭에서 자동으로 AWS Management Console에 로그인됨
🛑 별다른 지시가 없는 한 리전(Region) 변경하지 말기
- 실습에서 사용하지 않는 AWS 서비스에 액세스하거나 이 실습 가이드에서 제공하는 것 이외의 작업을 수행하는 경우 오류가 발생할 수 있음
- 실습에 필요한 AWS 서비스 기능만 사용 가능
Task 1: Amazon EC2 인스턴스 시작
- 종료 방지 기능이 활성화된 Amazon EC2 인스턴스를 시작
- 종료 방지 기능(termination protection): EC2 인스턴스를 실수로 종료하는 것을 방지
- 인스턴스에는 간단한 웹 서버를 설치하는 사용자 데이터 스크립트가 포함되어 있음
- AWS Management Console 상단 검색 창에서
EC2 검색해 선택
- "Launch Instance" 버튼 선택
- Name and tags 섹션의 Name 상자

- Amazon Machine Image (AMI)

- Amazon Linux 2023 AMI 선택
- 이 실습은 Amazon Linux 2023 AMI로만 작업함
- Quick Start 목록에는 가장 자주 사용되는 AMI가 포함됨
- 자체 AMI를 생성하거나, AWS Marketplace에서 AMI를 선택할 수도 있음
- AWS Marketplace: AWS에서 실행되는 소프트웨어를 판매 또는 구매할 수 있는 온라인 저장소
👀 Amazon Machine Image (AMI)
- 클라우드의 가상 서버인 인스턴스를 시작하는 데 필요한 정보를 제공
- 인스턴스 루트 볼륨에 대한 템플릿
- 예: 운영 체제 또는 애플리케이션이 있는 애플리케이션 서버
- 시작 권한
- 인스턴스를 시작하기 위해 AMI를 사용할 수 있는 AWS 계정을 제어함
- 블록 디바이스 매핑
- Instance Type 섹션

- Instance type 드롭다운 메뉴를 선택하고
t3.micro 선택
- t3.micro 인스턴스 유형에는 가상 CPU 2개와 1GiB 메모리가 있음 (2vCPU 1 GiB Memory)
👀
Amazon EC2는 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공함
→ 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성됨
→ 애플리케이션에 따라 적합한 리소스 조합을 선택할 수 있는 유연성을 제공
→ 각 인스턴스 유형에는 하나 이상의 인스턴스 크기가 포함되므로 대상 워크로드의 요구 사항에 따라 리소스의 크기를 조정할 수 있음
- Key pair (login) 섹션

- Key pair name - required 드롭다운 메뉴에서 Proceed without a key pair (Not recommended) 선택
- 이 실습에서는 인스턴스에 로그인하지 않으므로 키 페어가 필요하지 않음
👀
Amazon EC2는 퍼블릭 키 암호화 기법을 사용하여 로그인 정보를 암호화하고 복호화함
→ 인스턴스에 로그인하려면 키 페어를 생성하고, 인스턴스를 시작할 때 키 페어의 이름을 지정하고, 인스턴스에 연결할 때 프라이빗 키를 제공해야 함
- Network settings 섹션

a. "edit" 버튼 누르기
b. VPC - required: 이름에
Lab VPC가 포함된 VPC 선택

c. Subnet: 이름에 Public Subnet 1이 포함된 서브넷 선택

d. Firewall (security groups)

- select existing security group 선택
- Common security groups:
Web Server security group 선택

👀
- Network
- 인스턴스를 시작할 Virtual Private Cloud(VPC)를 나타냄
- 개발, 테스트 및 프로덕션 등 다양한 용도의 다중 네트워크를 사용할 수 있음
- security group
- 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상 방화벽(a virtual firewall) 역할
- 인스턴스를 시작할 때 1개 이상의 보안 그룹을 인스턴스와 연결
- 연결된 인스턴스와 트래픽을 주고받을 수 있게 하는 규칙을 각 보안 그룹에 추가
- 언제든지 보안 그룹에 대한 규칙을 수정할 수 있음
- 새 규칙은 보안 그룹과 연결된 모든 인스턴스에 자동으로 적용됨
- Configure storage 섹션

- 선택되어 있는 항목을 그대로 두기
- 기본 8GiB 디스크 볼륨을 사용하여 Amazon EC2 인스턴스를 시작
- 이 볼륨이 루트 볼륨임
- ‘부트’ 볼륨이라고도 함
👀
Amazon EC2는 Elastic Block Store라고 하는 네트워크 연결 가상 디스크에 데이터를 저장함
- Advanced Details 섹션 확장

- Termination protection 드롭다운 메뉴로 스크롤한 다음 Enable로 설정

👀
- 종료 방지 기능 활성화
- 인스턴스가 종료되지 않도록 함
- Amazon EC2 인스턴스가 더는 필요하지 않은 경우 해당 인스턴스를 종료할 수 있음
- 해당 인스턴스를 중지하고 관련 리소스를 해제한다는 것을 의미
- 종료된 인스턴스를 다시 시작할 수는 없음
- 따라서 인스턴스가 실수로 종료되는 것을 방지할 필요가 있음
- User data - optional 필드가 표시될 때까지 맨 아래로 스크롤

👀
사용자 데이터(User data)
: 인스턴스를 시작할 때 인스턴스에 사용자 데이터를 전달하여 일반적인 구성 태스크를 자동으로 수행하는 데 사용할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행하는 데 사용할 수도 있음
- 다음 텍스트를 복사하여 User data - optional 필드에 붙여넣기
#!/bin/bash
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html
- 이 스크립트는 다음 작업을 수행함:
- Apache 웹 서버 설치(httpd)
- 부팅 시 웹 서버를 자동으로 시작하도록 구성
- 웹 서버 활성화
- 간단한 웹 페이지 생성
- "Launch instance" 버튼 선택
- 왼쪽 창의 축소 가능한 메뉴에서 Instances 선택

- 해당 옵션을 보려면 메뉴를 확장해야 할 수도 있음
- 인스턴스가 pending 상태로 표시될 수 있음
- 인스턴스가 시작되는 중임을 나타냄
- 이후 running으로 바뀜
- 인스턴스 부팅이 시작되었다는 의미
- 새 인스턴스를 생성할 때 일반적으로 인스턴스에 액세스할 수 있을 때까지 약간 시간이 걸림
- 인스턴스에 다음이 표시될 때까지 기다리기

- Instance state 또는 Status check 값이 변경되지 않으면 페이지를 주기적으로 새로 고침하기
- 새로 생성된 Web Server 옆에 있는 확인란을 선택하고 Details 탭을 선택하면 인스턴스의 세부 정보가 표시됨

📃 Details 탭에서 추가 정보를 보려면 창 구분선을 위로 끌기
- Details 탭에 표시되는 정보
- 인스턴스가 수신하는 퍼블릭 IPv4 DNS 이름(Public IPv4 address)은 인터넷에서 해당 인스턴스와 통신할 때 사용할 수 있음
👍 첫 번째 Amazon EC2 인스턴스가 성공적으로 시작되었습니다.
태스크 2: 인스턴스 모니터링
- Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스와 AWS 솔루션의 안정성, 가용성, 성능 등을 유지하는 데 중요한 부분
- Status and alarms 탭 선택

- System reachability, Instance reachability 및 Attached EBS reachability 검사를 통과한 것을 알 수 있음
-
Monitoring 탭 선택
👀
- Amazon EC2는 지표를 EC2 인스턴스에 대한 Amazon CloudWatch로 전송함
- 기본(5분) 모니터링 기능이 기본적으로 활성화되어 있음
- Basic (five-minute) monitoring is enabled by default for EC2 instances, as mentioned in the course content.
- 세부(1분) 모니터링도 사용 가능
- 콘솔의 오른쪽 상단 "Actions" 메뉴 선택 → onitor and troubleshoot ▶ 선택 → Get system log 선택

- 시스템 로그에는 문제 진단에 유용한 도구인 인스턴스의 콘솔 출력이 표시됨
- 서비스 구성 문제와 커널 문제를 해결하는 데 특히 유용
- 서비스 구성 문제: 인스턴스가 종료되거나 SSH daemon을 시작하기 전에 연결할 수 없게 되는 문제
✅ Amazon EC2 인스턴스의 시스템 로그 콘솔 출력

📃 시스템 로그가 표시되지 않으면 몇 분 정도 기다렸다가 로그가 표시될 때까지 로그 화면을 새로 고침하기
- 출력을 위아래로 스크롤하여 인스턴스 생성 시 추가한 사용자 데이터에서 httpd 패키지가 설치되었음을 확인하고 브라우저 창 하단으로 스크롤하여 Cancel 선택

- Web Server 옆의 확인란을 선택하고 "Actions" 메뉴를 선택한 다음 Monitor and troubleshoot ▶, Get instance screenshot를 차례로 선택

✅ Amazon EC2 인스턴스 콘솔에 화면을 연결했을 때의 모습

모니터 화면을 해당 Amazon EC2 인스턴스 콘솔에 연결할 경우 어떤 모습일지를 볼 수 있음

👀 SSH 또는 RDP를 통해 인스턴스에 연결할 수 없는 경우 인스턴스의 스크린샷을 캡처하여 이미지로 볼 수 있음 → 이렇게 하면 인스턴스 상태에 관한 가시성을 확보할 수 있으므로 더 빠르게 문제 해결 가능
- 브라우저 창 하단으로 스크롤하여 Cancel 선택
👍 인스턴스를 모니터링하는 몇 가지 방법을 살펴보았습니다.
태스크 3: 보안 그룹 업데이트 및 웹 서버 액세스
- EC2 인스턴스를 시작할 때 웹 서버를 설치하고 간단한 웹 페이지를 생성한 스크립트를 제공했었음 → user data 스크립트
- 이 태스크에서는 웹 서버의 콘텐츠에 액세스함
- Web Server 옆의 확인란 선택 → Details 탭 선택 → 인스턴스의 Public IPv4 address 값을 클립보드에 복사

- 웹 브라우저에서 새 탭을 열고 브라우저에
http://를 입력하고 방금 복사한 IP 주소를 붙여 넣은 다음, Enter 키 입력

💭 웹 서버에 액세스할 수 있습니까? 액세스할 수 없는 이유는 무엇입니까?
→ 보안 그룹이 HTTP 웹 요청에 사용되는 포트 80에서 인바운드 트래픽을 허용하지 않기 때문에 현재 웹 서버에 액세스할 수 없음
→ 이 데모에서는 보안 그룹을 방화벽으로 사용하여 인스턴스 안과 밖에서 허용되는 네트워크 트래픽을 제한함
→ 문제 해결 방법: 포트 80에서 웹 트래픽을 허용하도록 보안 그룹을 업데이트하기
- 브라우저 탭이 열려 있는 상태에서 EC2 Management Console 탭으로 돌아가 왼쪽 탐색 창에서 Security Groups를 선택

- 보안 그룹 이름이 Web Server security group인 Security group ID 옆에 있는 확인란을 선택 후 Inbound rules 탭을 선택
- 현재 보안 그룹에는 규칙이 없음
- "Edit inbound rules" 버튼 선택

- "Add rule" 버튼 선택

- 다음과 같이 구성하고 "Save rules" 버튼 선택

- 새 인바운드 HTTP 규칙은 IPV4 IP 주소(0.0.0.0/0) 및 IPV6 IP 주소(::/0) 모두에 대한 항목을 생성함
📃 프로덕션 워크로드에 대해서 ‘Anywhere’ 또는 보다 구체적으로 0.0.0.0/0 또는 ።/0을 사용하는 것은 권장 모범 실무에 해당하지 않습니다.
- 이전에 열었던 웹 서버 탭으로 돌아가서 페이지 새로 고침
✅ Hello From Your Web Server! 라는 메시지 표시

👍 Amazon EC2 인스턴스로 전송되는 HTTP 트래픽을 허용하도록 보안 그룹을 수정했습니다.
태스크 4: 인스턴스 크기 조정: 인스턴스 유형 및 EBS 볼륨
- 요구 사항이 변경됨에 따라 인스턴스가 과도하게 사용되거나 사용률이 낮아질 수 있음
- 인스턴스가 과도하게 사용됨 → 인스턴스가 너무 작은 상태라는 의미
- 사용률이 낮음 → 인스턴스가 너무 큰 상태라는 의미
- 이런 경우 인스턴스 유형 변경 가능
- 예: t3.micro 인스턴스가 워크로드에 비해 너무 작은 경우 t3.small 인스턴스로 변경
- 마찬가지로, 디스크 크기를 변경할 수 있음
인스턴스 중지
- 인스턴스 크기를 조정하려면 먼저 인스턴스를 중지해야 함
👀
인스턴스를 중지하면 인스턴스가 종료됨
→ 중지된 EC2 인스턴스에는 요금이 부과되지 않지만 연결된 Amazon EBS 볼륨에 대한 스토리지 요금은 그대로 청구됨
- EC2 Management Console의 왼쪽 탐색 창에서 Instances를 선택
- 아직 선택하지 않은 경우 Web Server 인스턴스 옆의 확인란을 선택
- Instance state ▼를 선택한 다음 Stop instance를 선택

- Stop 선택

- 인스턴스가 정상적으로 종료되어 실행이 중지됨

- Instance State에 Stopped가 표시될 때까지 대기

인스턴스 유형 변경
- 아직 선택하지 않은 경우 Web Server 인스턴스 옆의 확인란을 선택
- Actions ▼ 메뉴를 선택하고 Instance settings , Change instance type을 차례로 선택

- 다음과 같이 구성

- change instance type 선택

- 인스턴스가 다시 시작되면 인스턴스 유형이 t3.micro보다 메모리가 2배 큰 t3.small로 바뀜

EBS 볼륨 크기 조정
- 왼쪽 탐색 창의 ▼Elastic Block Store 섹션에서 Volumes를 선택

- 나열된 볼륨 옆에 있는 확인란을 선택하고 Actions▼ 메뉴에서 Modify volume 선택

- 현재 디스크 볼륨의 크기는 8GiB

- Size (GiB) 를
10으로 변경하고 Modify 선택
- Modify를 선택하여 확인하고 볼륨 크기 늘리기

- 새로 고침 하면 볼륨 크기가 늘어난 걸 확인할 수 있음

크기가 조정된 인스턴스 시작
- 이제 인스턴스를 다시 시작하면 더 많은 메모리와 디스크 공간이 생김
- 왼쪽 탐색 창에서 Instances를 선택 → Web Server 옆의 확인란 선택 → Instance state ▼를 선택한 다음, Start instance를 선택

- 인스턴스 유형이 t3.micro에서 t3.small로, 루트 디스크 볼륨이 8GiB에서 10GiB로 수정된 것을 확인

📃 수정되는 EBS 볼륨은 Modifying, Optimizing, Complete라는 일련의 상태를 거침
👍 Amazon EC2 인스턴스의 크기 조정 작업을 완료했습니다.
태스크 5: 종료 방지 테스트
- 더 이상 필요하지 않은 인스턴스는 삭제할 수 있음
- 인스턴스가 종료된 후에는 인스턴스에 다시 연결하거나 인스턴스를 재시작할 수 없음
- 종료 방지 기능을 사용하는 방법 익히기
- 왼쪽 탐색 창에서 Instances를 선택 → Web Server 옆의 확인란 선택 → Instance state ▼를 선택한 다음, Terminate (delete) instance를 선택

- Terminate (delete)를 선택

그러면 페이지 상단에 다음과 같은 오류 메시지가 표시됨:

위의 오류는 예상된 것으로, 인스턴스가 의도치 않게 종료되는 것을 방지하는 보호 장치임
→ 인스턴스를 종료하려면 종료 방지 기능을 비활성화해야 함
- Actions ▼ 선택 → Instance settings 선택 → Change termination protection 선택

- Enable 옆의 확인란을 선택 취소하고 save 선택

- 인스턴스 콘솔 화면 새로 고침

- Web Server 옆의 확인란 선택 → Instance state ▼ 선택 → Terminate (delete) instance 선택 → Terminate (delete) 선택
✅ Web Server 인스턴스의 Instance state가 약 30초 후에 Terminated로 바뀔 것 (페이지를 몇 번 새로 고쳐야 할 수 있음)

- 조금 기다리면 Terminated로 바뀜

👍 종료 방지 기능을 성공적으로 테스트한 후 인스턴스를 종료했습니다.
QUIZ
- Which of the following is an example of resizing an EC2 instance type?
- Changing from t3.micro to t3.small
- Changing the instance type from t3.micro to t3.small is an example of resizing an EC2 instance to increase its capacity.
- What type of monitoring is enabled by default for EC2 instances?
- Basic monitoring
- Basic (five-minute) monitoring is enabled by default for EC2 instances, as mentioned in the course content.
- What is the primary purpose of enabling termination protection for an Amazon EC2 instance?
- To prevent accidental termination of the instance
- Termination protection is designed to prevent users from accidentally terminating an EC2 instance, which helps maintain the availability of important resources.
- What is the primary difference between stopping and terminating an EC2 instance?
- Stopping is temporary, terminating is permanent
- Stopping an instance is a temporary action that allows you to start it again later, while terminating permanently deletes the instance.
- What precaution can you take to prevent accidental termination of an EC2 instance?
- Enable termination protection
- Enabling termination protection (setting the 'disableApiTermination' attribute) prevents accidental termination of an EC2 instance.
결론
다음을 성공적으로 수행했습니다.
- 종료 방지 기능이 활성화된 웹 서버를 시작했습니다.
- EC2 인스턴스를 모니터링했습니다.
- 웹 서버가 HTTP 액세스를 허용할 때 사용하는 보안 그룹을 수정했습니다.
- 규모에 맞게 Amazon EC2 인스턴스의 크기를 조정했습니다.
- 종료 방지 기능을 테스트했습니다.
- EC2 인스턴스를 종료했습니다.
실습 종료
다음 단계에 따라 콘솔을 닫고 실습을 종료하기:
1. AWS Management Console로 돌아가기

2. 페이지 오른쪽 상단에서 AWSLabsUser를 선택하고 Sign out을 선택

3. "실습 종료"를 선택한 다음 실습을 종료할 것임을 확인
