[AWS] AWS

5 분 소요

지역과 가용구역

  • Region: 전 세계 아마존 컴퓨터가 존재하는 곳, 서울에도 존재
  • 웹사이트 주 사용자의 분포가 중요: 주 소비자가 일본인 경우 일본 인프라를 사용하는 것이 유리
  • 가용구역: 하나의 지역에는 여러개의 가용구역이 존재한다. 자연재해 등으로 인한 장애 방지를 위함이다.

CDN(Contents Delivery Network)

  • CloudFront는 AWS에 제공하는 CDN 서비스이다. 캐싱을 통해 빠른 응답을 보장한다. 전 세계 Edge Server를 두고 Client에 가장 가까운 Edege Server를 찾아서 Latency를 최소화한다.
  • Origin Server: 원본 데이터를 가지고 있는 서버(S3, EC2 등)
  • Edge Server: AWS에서 제공하는 전 세계에 퍼져있는 서비스, 캐싱 기능
  • 데이터 전송이 발생하는 과정
    1. 클라이언트로부터 Edge Server로의 요청이 발생한다.
    2. Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인한다.
    3. 사용자의 근거리에 위치한 Edge Server 중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터를 응답한다.
    4. 사용자의 요청에 적합한 데이터가 캐싱되어 있지 않은 경우 Origin Server로 요청이 포워딩된다.
    5. 요청받은 데이터에 대해 Origin Server에서 획득한 후 Edge Server에 캐싱 데이터를 생성하고, 클라이언트로 응답이 발생한다.
  • Edge Server의 기본 TTL은 24시간이고 사용자의 설정에 따라 변경이 가능하다. (TTL 수정 시 Edge Server에 반영되는 시간이 한 시간 가량 소요)
  • 이러한 캐시의 설정 후 반영 시간 때문에 각 개별 데이터에 대해서 invalidation API(특정 파일을 캐시에서 삭제하는 기능)을 통해 캐시를 삭제한다.

EC2 (Elastic Compute Cloud) 시작하기

소개

  • 독립된 컴퓨터의 임대
  • 인스턴스는 컴퓨터 1대를 의미
  • 지역은 서울로 선택
  • 원격으로 접속하여 제어 가능

인스턴스 타입

  • 여러가지 OS가 존재
  • 여러가지 컴퓨터 사양: CPU, Memory, Network, 인스턴스 스토리지 (Type으로 구분)

인스턴스 장치 설정

  • 임대 컴퓨터 설정
  • 인스턴스 개수 설정
  • 네트워크 설정
  • 종료 방식: stop, terminate
  • 스토리지 설정: 용량, 볼륨 유형, 인스턴스 삭제시 삭제 여부

태그와 보안그룹

  • 인스턴스의 역할, 관리자 등
  • 키값 형태
    • 역할: 웹서버
    • 관리자: YHW
  • 인스턴스 접근 권한
    • 방화벽 역할
    • 새로운 보안 그룹 생성 또는 기존 그룹에 인스턴스 추가
    • 허용 가능한 여러가지 protocol 유형 선택 가능: SSH, HTTP, HTTPS, DNS 등
    • Source를 통해 특정 IP 설정 가능

인스턴스 비밀번호 생성

  • 파일로 비밀번호를 생성
  • 인스터스 접속시 해당 비밀번호 필요

EC2 접속과 사용

OSX에서 리눅스 인스턴스로 접속

  • 터미널을 통한 ssh 접속
  • chmod 400 aws_password.pem: 특정 사용자에게 권한 부여 (UI 로도 가능)
  • 인스턴스의 IP를 통해 접속
  • ssh -i "aws_password.pem" ID@IP

리눅스에서 웹서버 사용

  • sudo apt-get update
  • sudo apt-get install apache2
  • 인스턴스의 IP 또는 DNS로 접속 가능
  • 사용자의 접속을 위한 보안그룹 설정이 필요함(Source)

OSX에서 Windows 인스턴스로 접속

  • 윈도우 운영체제로 인스턴스 생성
  • 보안그룹 설정이 다름: RDP / HTTP 추가
  • aws_password.pem 을 이용하여 password 생성
  • App store에서 remote 앱 다운
  • PC name: IP, User name: Administrator, password: …
  • GUI로 원격 접속 가능

윈도우에서 웹서버사용

  • iis 웹서버 install
  • iis 웹서버 실행
  • wwwroot에 index.html 생성

AMIs

  • Amazon Machine Image: 이미지란 인스턴스의 특정시점의 스냅샷을 의미
  • 해당 이미지로 새로운 인스턴스 생성 가능
  • 이미지 생성시 인스턴스 중단

AWS Marketplace (Wordpress 설치)

  • 다른 사람이 만든 이미지로 인스턴스 런칭
  • Docker Hub의 이미지의 개념과 유사
  • 운영체제도 aws에서 기본으로 제공하는 AMI이다.
  • 이미지의 version, region 선택 가능
  • 인스턴스 유형 선택 가능
  • Key pair name 을 통해 ssh 인스턴스 접속 가능
  • App 접속의 경우 App의 ID와 password 알아낸 후 접속
  • DB도 마찬가지 방법으로 접속 가능

AWS를 이용한 자유로운 규모 확장과 축소

Scalability

  • 가상머신: 물리적기계 + 운영체제 + 가상머신(소프트웨어로 만든 기계) + 여러가지의 운영체제
  • VMWare, VirtualBox 등
  • AWS도 물리적 기계가 필요
  • 스타트업의 경우 여러가지 EC2의 사양을 선택 효율성 증대 가능
  • 큰 회사의 경우 고유 서버 시스템을 갖고 있을수 있지만 여러개의 EC2를 생성하여 서비스 처리 가능
  • AWS 활용시에 트래픽에 따른 융통성 있는 EC2 관리가 가능

스트래스 테스트

  • 수비: wordpress(marketplace에서 이미지를 통한 EC2 생성)
    • top 명령어로 CPU 점유율 점검
  • 공격: sudo apt-get update, sudo apt-get install apache2-utils, ab -n 요청횟수 -c 동시접속자수 웹서버주소
    • 요청, 동시접속, 총소요시간, 실패, 초당처리속도, 개별처리속도 -> 테이블 작성
    • 동시접속이 커질수록 개별처리속도가 비례하여 증가
    • 총소요시간과 초당처리속도는 유의미한 차이가 없다.

Elastic IPs

  • 현재 인스턴스를 이미지화 하고 해당 이미지로 다시 높은 사양의 인스턴스 생성
  • 인스턴스를 멈춘후 다시 시작시 새로운 IP 할당, 새로운 인스턴스 생성 후에도 마찬가지
  • Elastic IP를 통해 위와 같은 문제를 해결 가능(단 유료이다.)
  • Allocate New Address를 통해 IP 할당 가능
  • Associate Address를 통해 생성된 EC2 인스턴스에 일관된 IP 부여 가능

인스턴스 교체

  • 이미지 생성후 해당 이미지로 새로운 인스턴스 생성
  • Elastic IP를 기존 인스턴스에서 뺏어온후 새로운 인스턴스에 부여

Scale out 소개

  • 단일 컴퓨팅의 한계를 돌파
  • 여러대의 컴퓨팅을 연결

Scale Out의 흐름

  • Web Server -> Middle ware -> Database(톰캣 -> 스프링 부트 -> mysql)
  • 트랙픽 처리의 가장 간단한 방법은 scale up
  • Web Server, Middle ware, Database를 별도의 EC2로 변경
  • 경우에 따라 Database, Middle ware, Web Server scale up 가능
  • ELB를 이용하여 여러 http 요청을 각각의 Web server로 적절히 분산 가능

ELB 생성

  • Elastic Load Balance
  • 부하를 적절히 분배
  • ELB(Load Balancer Port) 생성후 EC2(Instance Port)와 연결
  • ELB와 EC2는 http 방식으로만 통신 가능
  • Health Check: ELB에서 EC2와의 연결성을 검사(/index.html 다운 가부로 검사하므로 해당 웹서버에 해당 파일이 존재해야 한다.)

ELB 적용

  • 웹서버가 설치된 EC2 여러대 준비
  • 해당 EC2를 ELB와 연결
  • ELB 주소로 접속

ELB 주의사항

  • 각 인스턴스별 DB의 경우 하나의 DB로 통합 필요

AutoScaling 소개

  • scale out 자동 설정
  • 인스턴스화 이미지 필요
  • 이미지로 인스턴스 생성: Launch Configuration
  • Launch Configuration: 인스턴스 생성시 사용될 (내가 미리 생성해둔)이미지 선택, 인스턴스 유형 선택, 보안 그룹 설정

AutoScaling Group 생성

  • 생성한 인스턴스를 어떠한 조건에서 생성할 것인지에 대한 설정
  • 가용구역 설정
  • Load Balacing: ELB에 연결
  • Configure scaling policies: 그룹의 인스턴스 개수 설정(keep / adjust)
  • adjust: CPU Utilization의 경계를 설정하여 알람 설정이 가능하고 세밀한 인스턴스 자동 생성 설정이 가능하다.
  • CloudWatch에서 미리 설정한 알람 확인 가능

S3

  • Simple Storage Service: 파일을 저장하는 서비스
  • 내구성이 뛰어난 인프라, 중복 저장
  • 융통성 있는 가격 정책
  • Bucket: 하나의 저장소(uique해야함)
  • 접근 권한 설정 가능
  • 서비스 사용자가 업로드한 파일을 저장 가능

AWS RDS

RDS 소개

  • Relational Database Service
  • 안전하고 안정적인 DB 운영
  • 관계형 데이터베이스: MySQL, MariraDB(MySQL과 완전 호환), Aurora(AWS에서 직접 만든 DB), ORACLE, SQL Server

RDS 서버 생성

  • 지역 선택 가능
  • Production(여러군데의 가용구역 제공), Dev/Test

RDS 백업 & 복원

  • 안정성의 추구
  • Multi-AZ: 서로 연동된 여러개의 DB를 생성, 하나의 DB가 죽을경우 standby중인(백업과 비슷한 개념) 다른 DB가 기능
  • 백업: take snapshot
  • 복원: restore snapshot -> 새로운 DB 인스턴스 생성
  • Restore to Point in Time: DB 인스턴스를 특정 시점으로 되돌리는 기능

RDS Scale up & out

  • Scale up: 하나의 DB 인스턴스의 사양을 높임
    • DB instance type를 변경
    • 언젠가는 한계에 도달
  • Scale out: 여러대의 DB 인스턴스를 생성, master라는 DB 인스턴스 생성 후에 slave라는 별도의 인스턴스 여러대를 master와 동기화,
    • 읽기 작업: select -> slave
    • 쓰기 작업: insert, update, delete -> master(slave는 동기화 필요)
    • master가 여러대 필요해진 경우 sharding이라는 스킬 필요(추후 포스팅)
  • slave는 create read replica로 생성 가능

태그:

카테고리:

업데이트:

댓글남기기