EC2 Session Hands-on Lab

EC2 Linux 실습


  • 키페어 생성하기

  • 웹 서버 인스턴스 생성하기

  • Session Manager를 사용하여 EC2 인스턴스에 접근하기

  • CloudWatch Agent 설치

  • 부하테스트를 통한 모니터링


키페어 생성하기

실습에서는 SSH 키 쌍을 사용하여 EC2 인스턴스를 생성해야 합니다. 다음 단계에 따라 이 실습에서 사용할 고유한 SSH 키 쌍을 생성할 수 있습니다.

  1. AWS 관리 콘솔에 로그인하고 Amazon EC2 콘솔 을 엽니다. AWS 관리 콘솔의 오른쪽 상단 모서리에서 원하는 AWS 리전에 있는지 확인합니다.

  2. 왼쪽 메뉴 하단의 네트워크 및 보안 섹션에서 키 페어를 클릭합니다. SSH 키 쌍을 관리하는 페이지가 표시됩니다.

  1. 새 SSH 키 페어를 생성하려면 브라우저 창의 맨 위에 있는 키 페어 생성 버튼을 클릭합니다.

  1. 키 페어 이름: 텍스트 상자에 [Your Name]-ImmersionDay를 입력하고 키 페어 생성 버튼을 클릭합니다. (Windows 사용자의 경우 Putty와 같은 서드파트 툴 사용을 희망하는 경우 파일 형식에 대해 ppk를 선택)

  2. 웹 브라우저에서 [Your Name]-ImmersionDay.pem 파일을 로컬 드라이브에 다운로드합니다. 브라우저 지침에 따라 파일을 기본 다운로드 위치에 저장합니다.

방금 생성한 키페어를 사용하여 나머지 실습에서 진행하는 EC2 인스턴스를 관리합니다.


웹 서버 인스턴스 생성하기

  1. 맨 왼쪽 메뉴 상단에서 EC2 대시보드를 클릭합니다. 그리고 인스턴스 시작을 클릭합니다.

  1. NameWeb server for IMD 값을 넣습니다. 그리고 아래의 Amazon Machine Image에서 화면과 같이 기본 값 설정을 확인합니다.

  2. 인스턴스 유형에서 t2.micro를 선택합니다.

  3. 앞선 실습에서 생성한 키페어를 선택합니다.

  4. EC2가 위치할 공간을 설정하는 네트워크 설정에서 편집 버튼을 클릭합니다.

default VPCsubnet을 확인합니다. 퍼블릭 IP 자동 할당활성화로 설정합니다. 바로 아래에서 네트워크 방화벽 역할을 하는 보안 그룹를 생성합니다. 보안 그룹은 방화벽 정책으로 허용하고자 하는 프로토콜과 주소를 지정하게 됩니다. 현재 생성하는 보안 그룹의 경우, 생성될 EC2에 적용되는 규칙입니다. 보안 그룹 이름과 설명에 Immersion Day - Web Server 를 입력 후, 보안 그룹 규칙 추가를 선택합니다.

유형에 HTTP를 지정하여 웹 서비스를 위한 TCP/80도 함께 허용합니다. 소스 주소에서 내 IP를 선택합니다.

  1. 나머지 모든 값들은 기본값을 사용하고, 화면 하단의 고급 세부 정보 탭을 클릭하여 확장하십시오. 사용자 데이터 입력란에 아래의 값을 입력 후, 인스턴스 시작을 클릭하세요.

메타데이터 버전 드랍 다운을 클릭하고 **V2만 해당(토큰 필수)**를 선택합니다.

다음 내용을 사용자 데이터 필드에 붙여넣고 인스턴스 시작을 클릭하세요.

- 웹서버 살펴보기

인스턴스가 상태 검사를 통과하여 로드가 완료될 때까지 기다립니다. 새 브라우저 탭을 열고 EC2 인스턴스의 퍼블릭 DNS 이름을 브라우저에 입력하여 웹 서버를 찾습니다. EC2 인스턴스의 퍼블릭 DNS 이름은 위에서 강조 표시된 퍼블릭 IPv4 DNS 이름 줄을 검토하여 콘솔에서 찾을 수 있습니다.

다음과 같은 웹 페이지를 확인할 수 있습니다.

만약 크롭 웹 브라우저를 사용하고 계시다면 퍼블릭 IPv4 DNS 값을 붙여넣을 때 자동으로 https가 DNS 값 앞에 자동으로 추가되어 에러가 발생할 수 있습니다. 따라서 http://<DNS 이름> 형태로 입력하시기 바랍니다.

Session Manager를 사용하여 리눅스 인스턴스에 접근하기

Session Manager는 대화형 원클릭 브라우저 기반 셸 또는 AWS CLI를 통해 Amazon EC2 인스턴스를 관리할 수 있는 AWS Systems Manager의 기능입니다. Session Manager를 사용하여 계정의 인스턴스에 세션을 시작할 수 있습니다. 세션이 시작된 후, 다른 연결 유형을 통해 bash 명령을 실행할 수 있습니다.

- Systems Manager를 위한 IAM 인스턴스 프로파일 생성

  1. AWS 콘솔창에 접속한 후 IAM 콘솔 을 엽니다. 네비게이션 항목에서 역할을 선택한 후, 역할 생성을 클릭합니다.

  1. 신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다. 바로 아래에 이 역할을 사용할 서비스인 EC2를 선택합니다. 사용 사례는 EC2 Role for AWS Systems Manager를 선택한 뒤 다음을 클릭합니다.

  2. 권한 정책에 AmazonSSMManagedInstanceCore 정책이 선택되었는지 확인 후 다음을 선택합니다.

  1. 역할 이름SSMInstanceProfile를 입력합니다. 역할 생성를 클릭합니다. 그러면 역할 창으로 돌아오게 됩니다.

- 기존의 인스턴스에 Systems Manager 인스턴스 프로파일 부착

  1. AWS 콘솔창에 접속한 후, Amazon EC2 콘솔 을 엽니다.

  1. 인스턴스 섹션 아래에 인스턴스를 선택합니다. 실습 때 생성한 EC2 인스턴스를 클릭합니다.

  1. 작업 메뉴에서 보안 선택 후, IAM 역할 수정을 클릭합니다.

  1. IAM 역할에서 방금 생성한 SSMInstanceProfile 인스턴스 프로파일을 선택한 뒤 IAM 역할 업데이트 버튼을 누릅니다.

- Session Managers를 사용하여 리눅스 인스턴스 연결하기

  1. EC2 인스턴스 콘솔에서 방금의 인스턴스를 선택한 후, 연결 버튼을 클릭합니다.

만약 아래와 같은 에러가 발생할 경우, 수초를 기다린 후, 브라우저를 리프레시합니다. EC2 인스턴스가 Session Manager를 사용하기 위한 준비를 하고 있기 때문입니다. 혹은 앞선 페이지에서 인스턴스를 클릭한 후, 인스턴스 상태 드랍 다운을 클릭한 후, 인스턴스 재부팅을 클릭합니다. 인스턴스 재부팅 이후 3분 내외로 Session Manager 사용가능한 상태로 변경됩니다.

  1. 인스턴스에 연결 페이지에서 Session Manager 탭을 선택합니다. Session Manager 사용에 대한 이점이 담겨있는 Session Manager 사용 내용을 검토합니다.

  1. 연결를 선택합니다. 새로운 세션이 새로운 탭에서 시작될겁니다. 세션이 시작된 후, bash 명령어를 실행할 수 있습니다.

SSH를 통하여 리눅스 인스턴스에 접근하기

  1. EC2 인스턴스 콘솔에서 연결할 인스턴스를 선택한 다음 연결 버튼을 클릭합니다.

  1. 인스턴스에 연결 페이지에서 SSH 클라이언트 탭을 누릅니다.

  1. 프라이빗 키가 있는 로컬 디렉토리 위치로 이동하고 다음 명령을 입력합니다.

  1. 연결을 계속 진행할 것인지 묻는 질문에 yes라고 대답한 후, 아래와 같은 결과를 확인할 수 있습니다.

- Mac

- Window

  • cmd

  • powershell

🚨 만약 SSH 접근 명령어 실행 시 "Permission denied (publickey,gssapi-keyex,gssapi-with-mic)." 와 같은 권한 오류가 발생한다면, 아래의 과정을 통하여 권한 설정을 실행합니다.

  • pem 키가 위치한 곳으로 이동 후 pem [파일 우클릭] -> [속성] -> [보안] -> [고급] -> [SYSTEM, Admin 제외 나머지 사용 권한 제거]

사용 권한 제거 후 SYSTEM, Administrators 만 권한 설정에 유지되어야 합니다.

Cloud Watch Agent 설치

CloudWatch Agent는 AWS의 모니터링 서비스인 Amazon CloudWatch와 함께 사용되는 소프트웨어입니다. CloudWatch에서 기본으로 제공하는 모니터링 외에 추가로 메모리, 디스크 사용량 등 더 많은 지표들을 수집하기 위하여 설치합니다. 해당 서비스 사용 시 추가비용이 발생하지만 더 많은 지표들을 추가할 수 있어 원활한 모니터링 운영에 도움이 되는 소프트웨어 입니다.

- IAM Role 생성

  1. AWS 콘솔창에 접속한 후 IAM 콘솔 을 엽니다. 네비게이션 항목에서 이전 실습에서 생성한 SSMInstanceProfile역할클릭합니다.

  1. 권한추가를 선택하여 CloudWatchAgentServerPolicy 정책을 추가합니다.

- EC2 인스턴스에 CloudWatch Agent 설치

  1. CloudWatch Agent 설치를 위하여 Session manager 혹은 SSH 접속을 통하여 인스턴스에 접근합니다. 이후 아래의 명령어를 통하여 CloudWatch Agent를 설치합니다.

  1. 설치가 완료된 후 구성 파일 생성 시, 위자드를 사용해 구성파일을 생성합니다.

매트릭 수집 설정

- Basic: 사용량(used_percent) - Standard: Basic 지표에 CPU 대기시간(cpu_usage_iowait), 디스크IO 시간(diskio_io_time) 등 추가 - Advanced: Standard 지표에 Disk 읽기, 쓰기양(diskio_write_bytes, diskio_read_bytes) 등 추가

해당 설정 파일은 /opt/aws/amazon-cloudwatch-agent/bin/config.json 위치에 저장되며, 필요한 경우 이 파일을 직접 편집하여 설정을 수정할 수 있습니다.

  1. 아래의 명령어를 사용하여 CloudWatch Agent 파일 실행합니다.

서비스 실행 후 약 5분 이내로 CloudWatch에서 해당 인스턴스에 대한 메모리 및 디스크에 대한 지표 확인이 가능합니다.

부하테스트를 통한 모니터링

  1. System Manager 혹은 SSH 를 통하여 Web server for IMD 인스턴스에 접속합니다.

  1. 루트 사용자 권한으로 변경한 후 아래의 명령어를 통하여 인스턴스에 메모리 및 디스크에 부하를 실행시킵니다.

아래와 같은 실패 문구가 나온다면 메모리 부족으로 인한 OOM(Out Of Memory)이 발생할 수 있습니다.

아래의 명령어를 통하여 Out Of Memory 관련 에러가 발생했는지 확인 할 수 있습니다.

  1. "Successful run complated"라는 문구를 확인하였다면, CloudWatch 콘솔로 이동하여 부하가 발생한 시점의 메모리 및 디스크의 지표를 확인합니다.

Last updated