AWS 교육 후기

SEUNGHWANLEE·2021년 6월 23일
0

TIL

목록 보기
7/9
post-thumbnail

6월 21일, 월요일부터 목요일까지 4일간 진행되는 AWS 세미나 교육을 수강하였다. 작성하는 날은 3일차이지만 2일차부터 심화과정을 다루었는데 현재의 나로는 이해가 쉽지않아서 기본교육에 해당하는 1일차 교육에 대한 포스팅을 남기기로 하였다.

AWS 세미나는 오전 09시30분부터 약 오후 5시까지 진행되었다. 우선 느낀점은 오전에는 개발 및 운영을 하면서 겪을 수 있는 이슈와 그에 관련된 aws 서비스를 제시하면서 이론교육이 이루어졌다. 그리고 오후에는 앞서 설명한 내용을 기반으로 실습을 하는 시간을 가졌다.

1일차는 aws 클라우드란 무엇인가? 부터 시작을해서 어떻게 작동을 하고 aws 클라우드를 사용하므로써 얻는 이점은 무엇인지 위주로 교육이 진행되었다. 이후 실습에서는 스스로 aws 서비스를 이용해 네트워크를 구성하고 aws 계정 전용 가상 네트워크 내에 가용 범위를 설정하고 라우딩 테이블을 제작하는 등 아래 그림과 같은 구조를 구성해보는 시간을 가졌다.

사용한 서비스

위와 같은 그림의 구조를 구현하기 위해서 aws 서비스 내 EC2VPC를 사용하였다. 그리고 IAM 사용자 계정으로 접근하여 리소스를 관리해주었다. 루트 사용자 계정으로 로그인을 한 뒤, IAM > 액세스관리 > 사용자 > 요약 내 보안자격증명 에 있는 콘솔 로그인 링크로 로그인을 다시 해주어야한다. 그리고 Region은 '서울'에서 작업하였다.

순서

먼저 구성할 때 순서는 아래와 같이 진행됐다.

  1. 네트워크 구성하기
    1.1. VPC 생성하기
    1.2. 추가 서브넷 생성하기
    1.3. 라우팅 테이블 편집하기
    1.4. 보안 그룹 생성하기
  2. 웹 서버 구성하기
    2.1. 웹 서버 인스턴스 생성하기
    2.2. AMI 생성하기
    2.3. AMI 기반 인스턴스 생성하기
  3. 로드밸런서 구성 및 생성하기

네트워크 구성하기

SA님이 생성하는 순서는 정해진 것은 없지만, 네트워크를 먼저 생성해야한다고 하셨다.
네트워크를 먼저 생성해야하는 이유
아무리 웹 서버를 구성해서 대치한다고 해도 실제 트래픽이 흐르지 않는 다면 웹 서버는 작동하지 않기 때문이다.

이번 실습에서는 네트워크를 먼저 구성한 뒤에 네트워크 위에 서버를 올려주고 대체하는데 '로드 밸랜서'까지 구성하는 것이 목표였다.

VPC 생성하기

VPC를 생성할 때는 VPC마법사를 이용해서 쉽게 생성할 수 있었다. 마법사를 사용해 생성할 때 '퍼블릭 서브넷의 IPv4 CIDR'를 설정해주는 란이 있는 데, 이때 향후 직접 연결할 가능성이 있는 네트워크와 주소와 중복되지 않도록 하는 것이 중요하다. 그리고 향후 확장을 고려해서 충분히 큰 주소를 할당해주어야 한다.

그림은 '퍼블릭 서브넷의 IPv4 CIDR'을 10.0.10.0/24 로 설정한 모습이다. aws에서는 VPC CIDR 블록을 설정할 때, 각 서브넷 CIDR 블록에서 첫 4개의 IP주소와 마지막 주소는 사용자가 사용할 수 없으므로 인스턴스에 할당할 수 없다. 예를 들어서 위 그림의 서브넷에서는 아래와 같이 할당 되어있다.

KeyValue
10.0.10.0네트워크 주소
10.0.10.1AWS에서 VPC 라우터용으로 예약
10.0.10.2DNS 서버 주소
10.0.10.3AWS에서 나중에 사용하려고 예약
10.0.10.255네트워크 브로드캐스트 주소

10.0.0.0이란 유입되는 트래픽을 VPC 안에서 흐르게 만들고 그 외의 0.0.0.0은 VPC 밖의 인터넷에서 흐를 수 있도록 해주는 것이다. 또한 뒤 과정에서 '라우팅 테이블'을 만들어서 인터넷에서 들어온 트래픽이 '가용 영역 A' 와 '가용 영역 C'로 이동하게 하여 A와 C도 서로 통신할 수 있도록 해준다.

추가 서브넷 생성하기

추가 서브넷을 생성한 이유는 가용 영역을 하나더 생성하기 위함이다. 이때는 서브넷 메뉴로 들어가 기존에 생성한 VPC를 선택하여 '퍼블릭 서브넷 IPv4 CIDR'을 10.0.20.0/24로 설정해주었다.

이로써 두개의 가용 영역을 설정해준 뒤 각각의 퍼블릭 서브넷을 생성해주었다.

라우팅 테이블 편집하기

라우팅 테이블 편집은 같은 화면인 서브넷 메뉴에서 편집할 수 있다. 작업 > 라우팅 테이블 연결 편집을 수정해 가용 영역 A와 C 모두 기본 라우팅 테이블이 아닌 다른 라우팅 테이블을 선택해주었다. 이때 선택한 라우팅 테이블이 인터넷으로 향하는 경로(0.0.0.0/0)가 있는지 확인해야한다.

보안 그룹 생성하기

보안 그룹은 생성하고자 하는 VPC를 선택해 인바운드 규칙아웃바운드 규칙을 정해준다. 실습에서는 HTTPSSH 두개만을 설정해주었다.
보안 그룹은 EC2 레벨에서 트래픽을 제어해주는 역할(?)로 이해하였다.

  • 인바운드 규칙 : 유입되는, in, 들어오는
  • 아웃바운드 규칙 : 유출되는, out, 나가는

서브넷 A 에서 보안 그룹을 생성해주면 들어오는 트래픽을 들어오게 할 건지 안 할 건지를 결정해주는 것, 이건 EC2 레벨에서 다룬다.

웹 서버 생성하기

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

웹 서버를 생성하기 위해서는 EC2 를 사용해야한다. 사용한 스펙은 아래와 같다.

namespec
AMIAmazon Linux 2 AMI (HVM)
인스턴스 유형t2.micro
네트워크VPC-Lab(앞 단계에서 생성한 것)
서브넷public subnet A
퍼블릭 IP 자동할당활성화
스토리지 추가(쉘)#include https://kr-id-general.workshop.aws/sh/start.sh
태그{Name : webserver 1}
보안 그룹 선택default값이 아닌 기존에 생성한 보안그룹 선택
키 페어새로운 키 페어 생성 후 파일 안전하게 보관

인스턴스가 연결되면 아래와 같은 그림으로 구성된다.

AMI 생성 및 AMI 기반 인스턴스 생성하기

위에서 웹 서버 기반 인스턴스를 생성했기 때문에 이를 기반으로 AMI를 생성할 수 있다. 일종의 템플릿 개념으로 생각해 이해하였다. 여기서 AMI는 Amazaon Machine Image로써 볼륨을 구성하는 OS(운영체제)를 편리하게 사용할 수 있도록 하는 역할이다. 일종의 템플릿 리소스, 리눅스 배포판의 아마존 버전이다.

위에서 webserver 1로 인스턴스를 생성했기 때문에 이를 통해 AMI를 생성할 수 있었다. 이를 기반으로 인스턴스를 하나 더 public subnet C에 생성하게 되면 아래와 같은 그림이 구축된다.

이때 각 webserver 1과 webserver 2의 퍼블릭 IP 주소를 자동으로 할당 받을 수 있었는데, 이 퍼블릭 IP 주소는 인스턴스가 활성화 되있는 경우에는 활성화되지만, 껐다가 키면 재시작되어서 작동한다.

cf. 인스턴스 유형
네트워크나 메모리 CPU 다양한 리소스를 조합해서 제공한다. 각각의 유형에 대해서 크기를 자유롭게 제공한다. 이는 영구적으로 지속가능하고 EC2에서 사용할 수 있는 EBS 전용이다.

로드밸런서 생성하기

로드밸런서는 말 그대로 유입되어 들어오는 트래픽을 적절하게 webserver 1과 web server 2로 분배해주는 것이다. 로드밸런서를 생성할 때는 기존에 보안그룹에서 설정한 프로토콜과 맞게 설정해주어야한다. 실습에서 HTTP만 다루었기 때문에 HTTP/HTTPS 를 선택해주고 포트번호를 맞추어준 다음 각 로드밸런싱을 설정할 가용 영역을 선택해주었다. 그리고 라우팅할 대상을 '인스턴스'로 설정해주었다. 이에 대한 대상은 물론 webserver 1과 webserver 2가 된다.

이렇게 로드밸런서를 생성한 뒤, 앞서 생성했던 보안그룹의 인바운드 규칙을 수정해주어야한다. 앞서 생성한 보안그룹의 규칙은 위치무관으로 되어있는데 이를 방금 생성한 로드밸런서로 설정해주어야한다.

로드 밸런서를 배치하므로 트래픽이 healthy인 상태로 통신되는 모습을 확인할 수 있다.

요약

네트워크를 이론만으로 접하다 실제 서비스를 운영할 수 있는 aws서비스를 이용해서 직접 구축해보는 작업은 나에게 새로운 경험을 주었다. 직접 네트워크를 생성하고 가용 영역을 설정하고 트래픽 관리까지 해볼 수 있어서 많은 것을 배운 것 같다.

용어를 이해하는데 많은 시간이 걸리긴 하였지만 포스팅을 통해서 어느정도 정리가 된 듯 하다. 세미나 내용을 이렇게 포스팅해도 되는 지는 몰라서 자세한 내용은 구체적으로 포스팅하지 않고 내가 배운 내용만을 정리했지만 현재 진행되고 있는 무료 세미나 교육이라 먼저 출처를 남긴다.

그리고 더 자세한 내용을 교육 받고 싶다면 아래 링크를 통해서 학습할 수 있다.

개념용어 정리

  • IAM 사용자 : aws 콘솔에 접근해서 모든 리소스나 서비스를 생성, 삭제, 수정 그리고 조회를 할 수 있는 계정, SA님들이 루트 계정 사용자로 작업을 하는 것 보다 IAM 계정 사용자로 작업을 하는 것이 더 좋은 방법이라고 설명해주셨다.
  • VPC : Virtual Private Cloud, 사용자의 aws 계정 전용 가상 네트워크
  • 서브넷(Subnet) : VPC의 IP 주소 범위
  • 라우팅 테이블(Routing Table) : 네트워크의 트래픽을 전달할 위치를 결정하는데 사용하는 '라우팅'이란 이름의 규칙
  • VPC 엔드포인트(end-point) : Direct Connect 연결 없이도 Private Link로 구동하는 지원된 aws 서비스
  • CIDR 블록 : Classless Inter-Domain Routing, 클래스가 없는 도메인 간 라우팅
  • 인스턴스 : 클라우드의 가상 서버
  • AMI : Amazaon Machine Image

profile
잡동사니 😁

0개의 댓글