[따라하며 배우는 AWS 네트워크 입문] 01. AWS 인프라

ssu_hyun·2022년 3월 21일
0

AWS

목록 보기
1/2
post-thumbnail

클라우드

인터넷을 통해 언제 어디서든지 원하는 때 원하는 만큼의 IT 리소스(컴퓨팅, 스토리지, 네트워크)를 손쉽게 사용할 수 있게 하는 서비스

종류

  • IaaS | EC2(컴퓨팅), VPC(네트워크), EBS(스토리지)
  • PaaS | AWS Elastic Beanstalk (애플리케이션 배포)
  • Serverless 플랫폼 | Lambda(컴퓨팅), API Gateway(API 프록시)
  • SaaS

구현 모델

  • 퍼블릭 클라우드
    • 운영,관리 : 클라우드 서비스 제공 업체
    • 사용 : 해당 클라우드의 리소스 사용
  • 프라이빗 클라우드 (온프레미스)
    • 사용자가 자신의 온프레미스(기업 데이터센터) 내에 클라우드 플랫폼을 구축해 직접 사용
  • 하이브리드 클라우드
    • 퍼블릭 클라우드, 온프레미스 모두에 서비스

AWS 클라우드

  • 가용 영역(AZ, Availability Zone)
    : 한 개 이상의 데이터 센터들의 모음 (초고속 광통신 전용망으로 연결)
  • 리전 (Region)
    : 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역의 모음
    (최소2개~최대6개)
  • 엣지(Edge POP, Point of Presence)
    : 외부 인터넷과 AWS 글로벌 네트워크망과 연결하는 별도의 센터 (Edge Location, Regional Edge Cache)

AWS 제품

컴퓨팅 서비스

  • EC2 (Elastic Compute Cloud)
    • 컴퓨팅 리소스를 가상 머신으로 제공
    • 인스턴스라 부름
    • 사용 목적에 따라 인스턴스 타입과 스펙(CPU, 메모리, 디스크 등)으로 구분
    • 사용한 만큼 비용 지불
  • 오토 스케일링 (Auto Scaing)
    • EC2 인스턴스 조건에 따라 자동으로 서버 추가/제거
  • 람다 (AWS Lambda) - 서버리스 컴퓨팅
    • 프로그램 실행 컴퓨팅 엔진
    • 코드만으로 서비스 실행 가능

네트워킹 서비스

  • AWS VPC (Virtual Private Cloud) - 리소스 격리
    • AWS 클라우드 내 논리적으로 독립된 섹션 제공
    • 독립된 가상의 클라우드 네트워크
  • AWS VPN (Virtual Private Network) - 가상 사설망
    • 공용 인터넷을 통해 가상의 사설 네트워크를 구성하여 프라이빗 통신 제공
    • 데이터 암호화, 전용 연결 등 여러 보안 요구사항 충족 가능
    • Site-to-Site VPN, 클라이언트 VPN
  • ELB (Elastic Load Balancing) - 로드 밸런서
    • AWS에서 제공하는 로드 밸런싱(부하 분산) 기술
    • 서비스 대상 시스템에 데이터 분산 전달
  • AWS Private Link - 프라이빗 연결
    • 퍼블릭 인터넷에 데이터가 노출되지 않도록 하고 내부 네트워크를 통해 AWS 서비스와 온프레미스 간에 안전한 비공개 연결 제공
  • Route 53 - 도메인 네임 시스템
    • AWS에서 제공하는 관리형 DNS 서비스
    • 도메인 이름 구매를 대행
    • 구매한 도메인 주소에 대한 호스팅 영역 설정을 통해 도메인 질의에 대한 응답 처리
    • Route 53 Resolver : 하이브리드 클라우드 환경에서 온프레미스와 AWS 간 도메인 질의가 가능하게 함
  • AWS 전송 케이트웨이 - 네트워크 확장
    • VPC나 온프레미스 등의 네트워크를 단일 지점으로 연결할 수 있는 라우팅 서비스
  • AWS Direct Connect - AWS 전용 연결
    • 데이터 센터, 본사 사무실 또는 코로케이션(Co-Location) 환경과 같은 장소에서 AWS와의 전용 네트워크 연결을 제공하는 전용선 서비스
  • AWS CloudFront - CDN (콘텐츠 전송/캐시)
    • AWS 글로벌 네트워크를 통하여 콘텐츠를 캐싱하여 서비스 제공
  • AWS Global Accelerator - 글로벌 전송
    • 로컬 또는 글로벌 네트워크 통해 사용자에서 애플리케이션으로 이어진 경로를 최적화해 트래픽의 성능 개선
  • 네트워크 보안
    • 보안 그룹, 네트워크 ACL, 웹 방화벽

스토리지 서비스

  • EBS (Elastic Block Store)
    • 가용 영역 내의 EC2 인스턴스에 연결되어 사용될 수 있는 블록 스토리지 (Block Storage)
  • S3 (Simple Storage Service)
    • 객체 기반 무제한 파일 저장 가능 스토리지
    • 사용자는 URL통해 파일 사용
    • 여러 가용 영역에 걸쳐 99.999999999%의 뛰어난 내구성 제공

데이터베이스 서비스

  • Amazon RDS (Relational Database Sevice)
    • 관계형 데이터베이스
  • Amazon DynamoDB
    • 키-값 및 NoSQL 데이터베이스 서비스
    • 서버리스 서비스 (사용자의 서버 전반 운영 관리 필요X)

그 외 서비스

  • AWS CloudFormation
    • 프로그래밍 언어나 텍스트 파일을 사용해 AWS 리소스 자동 배포
  • AWS CloudWatch
    • AWS 리소스 및 온프레미스의 자원 모니터링 서비스
    • 데이터를 수집해 로그 저장 가능
    • 특정 조건에 만족 시 알람 제공 가능




SSH 키 페어

SSH

  • 네트워크를 통해 원격 시스템(서버, 장비 등)에 접근할 수 있는 프로토콜 및 프로그램
  • SSH 서버, SSH 클라이언트(사용자)로 구성
  • SSH 클라이언트가 SSH 서버에 접속하기 위해서는 인증 절차 필요
    • 유저-암호 : 무차별 대입 공격 방식에 의해 권한 탈취를 할 수 있는 우려 존재
    • 키 페어 파일 : 사용자의 개인키가 노출X, 키파일로 로그인 가능(편리)

AWS 키 생성 방식 (서울 리전)

1) AWS 관리 콘솔(서울 리전) - EC2 서비스
2) 좌측 메뉴 : 네트워크 및 보안 - 키 페어
3) 키 페어 생성 클릭 및 설정

  • 이름
  • 파일 형식
    • 윈도우 OS로 Putty 프로그램 사용 : ppk
    • 맥 OS나 리눅스 내장 SSH 사용 : pem

4) 생성된 개인키 파일을 로컬 컴퓨터에 잘 보관할 것

키 분실할 경우

  • System Manager Session Manager를 이용해 접근 후 관리자 권한 상승으로 임시 조치 가능
  • http://bit.ly/cnba0101




[실습1] EC2 배포 및 사용

구성도

AWS 관리 콘솔 : EC2 인스턴스 배포

1) AMI 선택 ➡ Amazon Linux 2 AMI
2) 인스턴스 유형 ➡ t2.micro
3) 인스턴스 세부 정보 ➡ 네트워크/서브넷: 기본값, 퍼블릭 IP 자동 할당: 활성화, 나머지는 기본값
4) 스토리지 추가 ➡ 기본 값
5) 태그 추가 ➡ [태그 추가], 키: Name, 값: WebServer
6) 보안 그룹 ➡ SSH(내 IP), 규칙 추가, HTTP(위치 무관)
7) 키 페어 선택 ➡ 3.5항에서 생성한 키 페어 생성

사용자 PC에서 SSH로 EC2 인스턴스 접근

8) 인스턴스에서 퍼블릭 IP 확인 ➡ 메모해둘 것
9) 윈도우 OS ➡ PuTTY 다운로드
10) PuTTY SSH 설정 (키 페어 파일 지정) ➡ PuTTY - Connection - SSH - Auth
11) 퍼블릭 IP로 SSH 접속 시도 ➡ PuTTY - Session - Host name에 퍼블릭 IP 입력 - Open
12) SSH 터미널 생성 & SSH 암호 통신을 위한 SSH 서버(EC2 인스턴스)의 키 다운
13) EC2 인스턴스 로그인 (ec2-user 입력)

EC2 인스턴스에 웹 서비스 설치 & 웹 접속 확인

14) EC2 인스턴스 SSH 터미널에서 웹 설정

  • root 계정으로 전환 : sudo su -
  • Web 서비스 설치 : yum install httpd -y
  • Web 서비스 실행 : systemctl start httpd
  • 웹 페이지 구성 : echo "<h1>Test Web Server</h1>" > /var/www/html/index.html
  • curl 명령어로 웹 접속 확인 : curl localhost

15) 사용자 PC의 웹브라우저에서 http://퍼블릭IP로 접근

EC2 인스턴스 삭제

16) 서비스 ➡ EC2 ➡ 인스턴스 ➡ 인스턴스 선택 ➡ 작업 ➡ 인스턴스 상태 ➡ 종료




[실습2] CloudFormation 스택 생성 및 삭제

구성도

CloudFormation

  • AWS 인프라에 대해 코드로 개략적인 선언을 하는 방법
  • 자신이 생성할 AWS 인프라 자원을 코드로 정의하여 자동으로 정의된 자원을 생성하거나 삭제할 수 있다.
  • IaC(Infrastructure as Code)
  • 템플릿 : 생성할 AWS 인프라 자원을 코드로 정의한 파일 (JSON, YAML 형식)
  • 스택 생성 : 템플릿을 업로드해 순서대로 스택을 자동 생성한다.
  • 스택 삭제 : 생성에 의해 생성된 AWS 인프라 자원을 순서대로 자동 삭제

CloudFormation 템플릿

YAML 형식의 코드를 통해 다음을 정의해 배포할 수 있다.

  • EC2 인스턴스에 대한 OS, 인스턴스 타입, 키 페어, 태그, 보안 그룹
  • EC2 인스턴스가 부팅 시 자동으로 실행되는 명령어
Parameters:
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
    Type: AWS::EC2::KeyPair::KeyName
    ConstraintDescription: must be the name of an existing EC2 KeyPair.
  LatestAmiId:
    Description: (DO NOT CHANGE)
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
    AllowedValues:
      - /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref LatestAmiId
      InstanceType: t2.micro
      KeyName: !Ref KeyName
      Tags:
        - Key: Name
          Value: WebServer
      SecurityGroups:
        - !Ref MySG
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash
            yum install httpd -y
            systemctl start httpd && systemctl enable httpd
            echo "<h1>Test Web Server</h1>" > /var/www/html/index.html

  MySG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0

CloudFormation 스택 생성

1) 서비스 - CloudFormation - 스택 생성
2) 템플릿 지정 | 준비된 템플릿 - 템플릿 파일 업로드
3) 스택 세부 정보 지정 | 임의의 스택 이름 지정
4) KeyName | 이전 생성한 자신의 키 페어 선택
5) 옵션, 검토 부분 단계 생략
6) 스택 생성
7) 생성된 자원 확인 | 서비스 - EC2 - 인스턴스 - 인스턴스
8) 생성된 EC2 인스턴스 SSH 접속
9) 생성된 EC2 인스턴스 웹 서비스 접속

CloudFormation 스택 삭제

10) 스택 삭제 | 서비스 - CloudFormation - 스택 - 생성한 스택 선택 - 삭제 - 스택 삭제
11) 삭제된 자원 확인 | EC2 - 인스턴스 - 인스턴스

0개의 댓글