[Cloud] 3일차 수업 정리

soyeon·2022년 10월 17일
post-thumbnail

EC2 store

인스턴스 스토어 볼륨 : 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전화 또는 종료시 삭제된다.
=> Amazon Elastic Block Store, 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터를 저장한다.

인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스할 수 있는 Region 및 가용 영역을 같게 만들어 주어야 한다.

볼륨을 생성하고, instance에 attach 해서 사용할 수 있다.

EC2 구성

: 보안그룹(AWS 방화벽)을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능이 있다.

(선택)탄력적 IP 주소(EIP) : 동적 클라우드 컬퓨팅을 위한 고정 IPv4 주소

태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터

AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 virtual private clouds(VPC)가 있다.

  • ping
    windows prompt에서 ping을 보내면 보내지지 않는다. ICMP를 허용해주어야 한다.

=> ping이 보내진다.

Auto Scaling Group

: 확장성을 위한 기능

어떠한 워크로드가 들어와도 바로 처리할 수 있게 해준다. 워크로드를 분산시켜 준다.
비용이 없다.(-> EC2를 증설하는 것이기 때문에 EC2 비용만 발생한다.)

인터넷 게이트웨이로 요청이 들어와서 허용이 되면 로드 밸런서로 들어온다. 자체 DNS 기능이 있어서 ELB, NLB 기능에 의해 분산이 된다.

AMI를 먼저 만들어놓아야 auto scaling이 가능하다.

시작 템플릿, AMI, auto scaling group로 단 몇 분 만에 확장이 가능하다.

확장 조정 계획을 통해 리소스에 대한 확장 조정을 구성하고 관리할 수 있다.

예측 조정
동적 조정은 애플리케이션의 확장 가능 리소스에 대한 대상 추적 조정 정책을 생성한다.

로드 예측
최대 14일 동안의 기록을 분석해서 향후 2일 동안의 수요를 예측한다.

예약 조정 작업
시간대별로 리소스 용량을 사전에 추가하고 제거하는 조정 작업을 예약한다.

EC2 instance 수명 주기

ASG 실습

순서
1) EC2 생성 확인 -> 중지(stop)
2) AMI 생성
3) 시작 템플릿 -> AMI, SG, Network 구성 등을 저장하고 있다. ASG가 확장시 사용할 포맷(양식)이다.
4) ASG 생성

  • EC2 중지
  • 이미지 생성
  • 이미지 이름과 설명 적어주기
  • AMI가 만들어졌는지 확인한다.

  • Name에 myAPM tag도 넣어준다.
  • 시작 템플릿 탭으로 이동
  • 시작 템플릿 생성
  • 이름과 설명 쓰기
  • 생성한 AMI 선택
  • 인스턴스 유형 선택
  • 키 페어 선택
  • 네트워크 설정
  • 태그 붙이기
  • 시작 템플릿이 생성되었다.
  • 확인
  • auto scaling 그룹 탭으로 이동
  • auto scaling 그룹 생성
  • 단계
  • 이름 입력
  • 시작 템플릿 선택
  • 네트워크 두개 선택
  • 인스턴스 유형
  • 로드밸런서는 사용하지 않는다
  • cloudwatch 선택
  • 그룹 크기 설정
  • 정책 선택
  • 알림 추가
  • 태그 추가
  • 생성되었다.
  • 확인 - 2개가 생성되었다.
  • auto scaling group 확인
  • stress 주기
## install
[ec2-user@ip-172-31-10-19 ~]$ sudo amazon-linux-extras install epel -y
[ec2-user@ip-172-31-10-19 ~]$ sudo yum -y install stress

## 부하 주기
[ec2-user@ip-172-31-10-19 ~]$ stress --cpu 1 --timeout 600
  • CPU 사용률이 증가하였다.
  • 인스턴스가 추가된 것을 볼 수 있다.

EC2 & EBS + ELB

대량의 트래픽이 발생하면 이를 처리한다.

ELB

: 네트워크 트래픽을 하나 이상의 서버 혹은 장비로 분산하기 위해 사용되는 기술

: CPU 사용률이 5분 동안 60%를 초과하게 되면 이 알람이 cloudwatch로 push가 된다. cloudwatch는 auto scaling group에게 알려준다. auto scaling group은 ec2를 하나 증설하고, ELB에서 load balancing을 할 수 있도록(인지할 수 있도록) 알려준다.

로드밸런싱은 기존 온프레미스에서 사용했던 L4 스위치, L7 스위치 개념이다.

L4 스위치는 Layer4(Transport Layer)의 TCP, UDP 등을 스위칭한다.
TCP와 UDP 그리고 RTP 등의 헤더를 사용하여 FTP, HTTP, TFTP, SMTP 등의 프로토콜 중 어떤 것을 우선시해서 스위칭할 지 판단할 수 있다.
=> Network Load Balancer

L7 스위치는 OSI의 Layer 7, 즉 애플리케이션 레이어에서 동작하는 것으로 이메일의 문자열로 내용을 파악하거나 HTTP의 URL, FTP의 파일명, 쿠키 정보 등을 분석해서 정교한 로드밸런싱이 가능하다.
=> Application Load Balancer

ELB 대상 그룹(target group)

: 로드밸런서가 요청을 전달할 서버들을 묶어둔 개념적인 그룹
로드밸런서가 요청을 보낼 인스턴스들을 더 쉽게 관리하기 위해 만든 기능이다.

인스턴스나 auto scaling group이 포함될 수 있다.

ELB 상태 검사

: 등록된 서버 중 정상 상태로 동작하는 서버에만 요청을 전달한다.
이를 확인하기 위해 상태 검사(health check, heart-bit)과정을 수행한다. 200이 아닌 코드나 제시간에 응답을 못 주면 비정상 상태로 간주한다.

실습

  • auto scaling group에서 원하는 용량과 최소 용량을 2로 변경해준다.

  • 인스턴스가 2개로 늘어났다.
  • 인스턴스 2개에서 로그를 볼 수 있게 설정해놓는다.
[ec2-user@ip-172-31-46-131 ~]$ sudo tail -f /var/log/httpd/access_log
  • 로드밸러서 탭으로 이동

  • 로드 밸런서 생성 - ALB create 선택

  • 이름 설정

  • zone 선택

  • 보안 그룹 선택

  • listener 설정 - create target group 클릭

    • create target group
    • 이름 설정
    • health checks
    • 태그 설정
    • 두 instance 선택하고 include as pending below 클릭
    • target group 생성 완료
  • 생성한 target group 선택

  • 요약 확인

  • 로드밸런서 생성 완료

  • DNS 이름으로 접근할 수 있다.

  • auto scaling groups의 load balancing 설정에 만든 loadbalancer 추가

  • 추가

  • 로드밸런싱이 되는 것 확인 가능

EC2 & EBS & EFS

Amazon Storage 서비스 분류

Ephemeral Disk : instance와 life cycle이 같다.
EBS
ㄴ IO 계열, GP 계열, 일반 디스크
S3 : 오브젝트 스토리지. url을 통해 접근한다.(정적)
Glacier : 백업용(오래된 데이터) 꺼내는데 오래걸린다.

클라우드에서 기본 디스크는 xfs를 사용한다. 속도가 더 빠르다.

[ec2-user@ip-172-31-4-84 ~]$ sudo mount | grep ext4
[ec2-user@ip-172-31-4-84 ~]$ sudo mount | grep xfs
/dev/xvda1 on / type xfs (rw,noatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)

ephemeral (비지속형 storage)

: 인스턴스 서버 호스팅시 물리적으로 부착되는 SSD 저장장치

인스턴스를 생성하면 자동적으로 인스턴스 스토어 볼륨이 생성된다. 추가 비용이 없다.
단기적인 목적으로 인스턴스를 시작하는 배포 모델에 적합하다.
고속의 데이터 입출력 및 처리가 중요한 경우에 사용한다.

EBS

: 고성능 블록 스토리지 서비스

EBS 스냅샷은 Amazon S3에 저장된다. -> Amazon Dta Lifecycle Manager 활용

사용 예
: 빅데이터 분석 엔진(하둡/HDFS 에코시스템 -> Amazon EMR 클러스터 등)
: 관계형(Amazon RDS) 및 NoSQL 데이터베이스(Amazon DynamoDB)
: 스트림 및 로그 처리 어플리케이션(Kafka, Splunk(=elasticsearch))
: 데이터웨어하우징(DW -> AWS Redshift) 어플리케이션(Vertica, Teradata 등)

Amazon이 붙어있으면 1차 서비스
AWS가 붙어있으면 2차 서비스

  • EBS 특징
    : EC2에 설치된 os에서 일반적인 HDD/SSD로 인식한다.
    : AZ의 여러 서버에 자동으로 복제되어 구성 요소 장애로부터 보호한다.
    : Provisioning한 부분에 대해서만 비용을 지불한다.
    : 원하는 크기와 Disk성능(IOPS, MBPS)으로 설정 가능하다.
    : EBS 볼륨의 사이즈와 스토리지 타입은 실행 중에도 변경할 수 있다.
    : EBS 마그네틱 볼륨(HDD)은 1GB ~ 1TB 크기로 생성 가능하다.
    : EBS General Purpose(SSD)와 Provisioned IOPS(SSD) 볼륨은 16TB 크기로 생성 가능하다.
    : EC2 인스턴스에 독립적으로 지속된다.
    : EC2 인스턴스 종료시 Root EBS는 디폴트로 삭제되지만 DeleteOnTermination flag로 수정할 수 있다.

EBS 실습

  • EBS 생성하고, EC2에 붙이기
  • 볼륨 탭으로 이동
  • 볼륨 설정 - myAPM-1이 있는 region으로 설정한다.
  • 태그 넣어주기
  • 생성 확인
  • 만든 볼륨을 EC2 instance에 연결
  • 연결하려는 instance 선택
  • disk가 ec2에 잘 붙었는지 확인하고 사용할 수 있게 설정하기
## 현재는 붙인 볼륨을 사용할 수 없는 상태
[ec2-user@ip-172-31-4-84 ~]$ sudo fdisk -l
Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7F24463C-2CA8-4011-B531-E8704FF21B48

Device       Start      End  Sectors Size Type
/dev/xvda1    4096 20971486 20967391  10G Linux filesystem
/dev/xvda128  2048     4095     2048   1M BIOS boot

Partition table entries are not in disk order.


Disk /dev/xvdf: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

## 현재는 붙인 볼륨을 사용할 수 없는 상태
[ec2-user@ip-172-31-4-84 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0  10G  0 part /
xvdf    202:80   0  10G  0 disk

## type 확인하기 -> data이면 아직 사용이 안 되는 것이다.
[ec2-user@ip-172-31-4-84 ~]$ sudo file -s /dev/xvdf
/dev/xvdf: data

## format
[ec2-user@ip-172-31-4-84 ~]$ sudo fdisk /dev/xvdf
n
p
1
enter
enter
w

## partitioning이 되었다
[ec2-user@ip-172-31-4-84 ~]$ sudo file -s /dev/xvdf
/dev/xvdf: x86 boot sector; partition 1: ID=0x83, starthead 32, startsector 2048, 20969472 sectors, extended partition table (last)\011, code offset 0x0

## partitioning이 되었다
[ec2-user@ip-172-31-4-84 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0  10G  0 part /
xvdf    202:80   0  10G  0 disk
└─xvdf1 202:81   0  10G  0 part

## 파일 시스템 등록
## format 잡아주기
[ec2-user@ip-172-31-4-84 ~]$ sudo mkfs.xfs /dev/xvdf1

## mount 할 디렉터리 생성
[ec2-user@ip-172-31-4-84 ~]$ mkdir DATA
[ec2-user@ip-172-31-4-84 ~]$ cd DATA/
[ec2-user@ip-172-31-4-84 DATA]$ pwd
/home/ec2-user/DATA

## mount
[ec2-user@ip-172-31-4-84 DATA]$ sudo mount /dev/xvdf1 /home/ec2-user/DATA

## 확인
[ec2-user@ip-172-31-4-84 DATA]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/xvdf1       10G   43M   10G   1% /home/ec2-user/DATA

## 새로운 파일 만들기
[ec2-user@ip-172-31-4-84 DATA]$ echo 'I love AWS.' > aws-ec2-ebs1.txt
[ec2-user@ip-172-31-4-84 DATA]$ cat aws-ec2-ebs1.txt
I love AWS.
  • myAPM-2에도 동일하게 볼륨을 생성해서 붙여준다.

  • umount 하기 - shell에서 먼저 umount를 한다.
[ec2-user@ip-172-31-4-84 DATA]$ sudo umount /home/ec2-user/DATA
[ec2-user@ip-172-31-4-84 DATA]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  456K  482M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1       10G  2.2G  7.9G  22% /
tmpfs            97M     0   97M   0% /run/user/1000
  • 볼륨을 분리해준다.
  • lsblk로 확인하면 볼륨이 없어졌다.
[ec2-user@ip-172-31-4-84 DATA]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0  10G  0 part /
  • 다시 붙여보기
  • mount를 하면 데이터가 남아있는 것을 확인할 수 있다.
[ec2-user@ip-172-31-4-84 DATA]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0  10G  0 part /
xvdf    202:80   0  10G  0 disk
└─xvdf1 202:81   0  10G  0 part
[ec2-user@ip-172-31-4-84 DATA]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           483M     0  483M   0% /dev/shm
tmpfs           483M  456K  482M   1% /run
tmpfs           483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1       10G  2.2G  7.9G  22% /
tmpfs            97M     0   97M   0% /run/user/1000
[ec2-user@ip-172-31-4-84 DATA]$ sudo mount /dev/xvdf1 /home/ec2-user/DATA
[ec2-user@ip-172-31-4-84 DATA]$ ls
aws-ec2-ebs1.txt

EFS

: 스토리지를 프로비저닝하거나 관리하지 않고도 파일 데이터를 공유할 수 있게 해주는 간단하고 한 번만 설정하면 되는 탄력적 서버리스 파일 시스템을 제공

AWS 클라우드 서비스 및 온프레미스 리소스와 함께 사용할 수 있다. 원하는 만큼 확장이 가능하다. NFSv4 Protocol을 사용한다. PB 사이즈까지 지원한다.
=> AWS Fully Managed Service(완전 관리형 서비스)

EFS 생성시 VPC 안의 AZ Subnet에 Mount Target을 생성한다.

-> 간편성, 자동확장, 공유 파일 스토리지, 원활한 통합, 높은 가용성 및 내구성 제공, 보안

EFS 실습

  • 파일 시스템 생성 클릭
  • 이름 정하고 사용자 지정 클릭
  • 자동 백업 활성화 체크 풀기
  • 암호화 체크 풀기
  • 태그 설정
  • 보안그룹 설정 a와 c만 남기고 b와 d는 지운다
  • 정책
  • 생성 완료
  • 사용 가능이 뜨면 연결을 누른다.
  • 해당 명령어로 mount 가능
  • mount 전에 보안 그룹에서 NFS를 허용해주어야 한다.
  • NFS 허용
  • mount
## 양쪽 instance에서 실행
[ec2-user@ip-172-31-46-131 ~]$ sudo yum -y install amazon-efs-utils
[ec2-user@ip-172-31-46-131 ~]$ mkdir efs

## mount(양쪽 instance에서 실행)
[ec2-user@ip-172-31-46-131 ~]$ sudo mount -t efs -o tls fs-020df025a58faa0e3:/ efs

## 이동해서 파일 만들기
[ec2-user@ip-172-31-46-131 ~]$ cd efs
[ec2-user@ip-172-31-46-131 ~]$ sudo chown -R ec2-user /home/ec2-user/efs
[ec2-user@ip-172-31-46-131 ~]$ sudo echo 'i love AWS' > aws-efs-1.txt
[ec2-user@ip-172-31-46-131 efs]$ sudo ls
aws-efs-1.txt

## 다른 instance에서 확인해도 파일이 존재한다
[ec2-user@ip-172-31-4-84 ~]$ cd efs
[ec2-user@ip-172-31-4-84 efs]$ ls
aws-efs-1.txt

## umount(양쪽 instance에서 실행)
[ec2-user@ip-172-31-46-131 ~]$ sudo umount /home/ec2-user/efs
  • umount 후에 삭제한다.

실습 삭제

  • target group 삭제
  • 로드밸런서 삭제
  • umount 해주기
  • 볼륨 삭제
  • asg 삭제

0개의 댓글