AWS 배포 기본

Posted by on June 14, 2019

Recently by the same author:


Python에서 Singleton 구현

You may find interesting:


AWS 보안 그룹

리전

aws서비스를 제공하는 서버의 위치

리전은 물리적 위치이며 각 리전은 분리됨

또한 2개 이상의 가용 영역을 굥유


엣지 로케이션

물리적으로 가까이 존재해야 하는 서비스(CDN, DNS…)


네트워크 - 서버 - 디스크 - 새로운 서버 - 로드밸런서(부하 방지)



VPC(Virtual Private Cloud)


aws내 가상 네트워크 공간 생성

가상 데이터 센터


aws가용영역에 vpc생성

aws 관리 콘솔

cli, 스크립트

api, sdk: 클라우드를 자동화하여 효율적으로 사용


CIDR?

cider block: 클라우드의 영역, 크기 설정

10.0.0.0/16 => 앞의 16bit 고정, 뒤 16bit만 사용가능한 공간이 된다

ip주소에서 0000 0110 0000 0000 만 고정


10.대 IP를 사용하는 이유

10.대 IP: 가장 많은 주소영역 보유하기 때문에 10.대를 사용

128.12대?

192.168.대

는 사설 ip주소로서 집, 회사 등 내부 네트워크 ip로 사용하며, 다른 ip주소와 최대한 겹치지 않기 위해 사설 ip주소를 사용


서브넷

서버가 돌아갈 네트워크 공간

같은 vpc공간에서 다른 가용영역을 차지한다

겹치지 않는 CIDR을 설정해야 한다(10.0.1.0/24, 10.0.2.0/24)

사용할 vpc와 가용영역(서울:3개)을 지정한다


게이트웨이

외부의 요청과 가상 네트워크 공간을 연결

사용할 vpc에 연결할것인지 설정


라우팅 테이블

네트워크 패킷이 어디로 향할지 지정

route -rn으로 컴퓨터 내부 테이블 참조 가능

사용할 vpc에 연결

라우팅 테이블 추가: 0.0.0.0/0: 해석하지 않는 모든 요청을 게이트웨이로 설정

가용영역 내부에서는 자동으로 네트워크가 구성된다

어떤 서브넷에 지정할지도 설정


보안 그룹

vpc내 방화벽 룰을 적용

방화벽처럼 어떤ip, 어떤 port로 부터의 접근만 허용하겠다

사용할 vpc에 연결

인바운드 규칙: port, 프로토콜, 소스(0.0.0.0/0 접근 대상 제한 X)를 지정. 나가는 요청은 제한하지 않는다



EC2


인스턴스를 네트워크에 연결


IAM

권한: 파일을 읽고, 쓰고, 지우고 등등의 행위를 할 수 있는 권한

정책: 권한, 역할을 정의

역할: 사용자, 리소스 등이 받을 수 있다.


AMI(Amazon Machine Image)

OS, 관련 sw 등을 설치해놓은 파일


인스턴스 유형

t2: 정해진 computer power보다 조금 더 사용 가능(bursting), micro service에 적합

어떤 네트워크에 지정? 어떤 서브넷에 넣을것?

퍼블릭 ip 활성화?: 인터넷 연결 위해 aws public ip 풀에 ip 주소를 요청

IAM 부여


고급 세부정보
  • 인스턴스가 생성됐을때 한번만 실행되는 스크립트
  • 패키지 설치등을 실행
  • 반드시 실행해야 웹 서버가 실행된다
실행 스크립트
#include
http://bit.ly/AWS101HOL-Linux-Userdata

#!/bin/sh
yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
yum -y install httpd php mysql php-mysql
chkconfig httpd on
service httpd start
if [ ! -f /var/www/html/ec2-linux-web.tar.gz ]; then
   cd /var/www/html
   wget https://for-distribution-cwk.s3-ap-northeast-2.amazonaws.com/ec2-linux-web.tar.gz
   tar xvfz ec2-linux-web.tar.gz
fi
yum -y update


스토리지 추가

네트워크 스토리지(디스크)를 추가한다


키페어

키페어 없이 사용할 수도 있다



Elastic IP


고정하여 사용할 수 있는 ip

ip주소를 할당받아 인스턴스에 연결하여 사용

인스턴스에 ip주소를 부여




EBS(스토리지 서비스)


볼륨을 생성하여 추가할 수 있다

볼륨을 생성한 EC2 instance에 연결


IOPS

스토리지의 효율을 나타내는 수치



인스턴스 접속


기존에는 key pair를 사용하여 ssh로 접속했다

요즘은 session manager를 사용하여 웹브라우저로 접속 가능

EC2에 SSM 역할을 부여했기 때문에 사용 가능


인터넷 게이트웨이에 연결했기 때문에 인터넷 사용 가능(wget)

파일을 옮기고 서버를 실행




커스텀 AMI


이미 설치했었던 파일, 설정등을 인스턴스에서 불러와 이미지로 저장

새로운 인스턴스에 동일한 설정 적용을 위해 사용. 이미지로 저장된 설정을 새 인스턴스에 적용한다.

이미지 작업 위해 인스턴스를 중지해야 한다



Changing Elastic IP


새로운 인스턴스에 기존 EIP 적용

기존 인스턴스는



로스 밸런서


서버의 부하를 다른 인스턴스로 분산

가용성 증가

서로 가용영역이 다른 네트워크로 연결시 하나의 가용영역이 불가하더라도 서비스 지속 가능

라운드로빈 방식

로드 밸런서를 생성하고 이를 인스턴스들에 연결한다


클래식 로드밸런서

http, https, tcp 지원


ALB

Url path에 맞춰 로드 밸런싱

하나의 로드밸런서로 여러 urls 사용가능

웹 어플리케이션에 적합


Network LB

네트워크 레벨의 로드 밸런싱

게임 서버등에서 사용


정상 임계값: 정상적으로 보내는 해시체킹수

비정상 임계값: 해시체킹이 초과할 경우 보내지 않는다

제한시간: 해시체킹의 응답에 시간

간격: 해시체킹 요청 시간 간격



전체적인 구조

aws