

인스턴스 스토어 볼륨 : 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전화 또는 종료시 삭제된다.
=> Amazon Elastic Block Store, 즉 Amazon EBS 볼륨을 사용해 영구 스토리지 볼륨에 데이터를 저장한다.
인스턴스와 Amazon EBS 볼륨 등의 리소스를 다른 물리적 장소에서 액세스할 수 있는 Region 및 가용 영역을 같게 만들어 주어야 한다.
볼륨을 생성하고, instance에 attach 해서 사용할 수 있다.
: 보안그룹(AWS 방화벽)을 사용해 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능이 있다.
(선택)탄력적 IP 주소(EIP) : 동적 클라우드 컬퓨팅을 위한 고정 IPv4 주소
태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터
AWS 클라우드에서는 논리적으로 격리되어 있지만 원할 때마다 고객의 네트워크와 간편히 연결할 수 있는 가상 네트워크인 virtual private clouds(VPC)가 있다.


=> ping이 보내진다.
: 확장성을 위한 기능

어떠한 워크로드가 들어와도 바로 처리할 수 있게 해준다. 워크로드를 분산시켜 준다.
비용이 없다.(-> EC2를 증설하는 것이기 때문에 EC2 비용만 발생한다.)
인터넷 게이트웨이로 요청이 들어와서 허용이 되면 로드 밸런서로 들어온다. 자체 DNS 기능이 있어서 ELB, NLB 기능에 의해 분산이 된다.
AMI를 먼저 만들어놓아야 auto scaling이 가능하다.
시작 템플릿, AMI, auto scaling group로 단 몇 분 만에 확장이 가능하다.

확장 조정 계획을 통해 리소스에 대한 확장 조정을 구성하고 관리할 수 있다.
예측 조정
동적 조정은 애플리케이션의 확장 가능 리소스에 대한 대상 추적 조정 정책을 생성한다.
로드 예측
최대 14일 동안의 기록을 분석해서 향후 2일 동안의 수요를 예측한다.
예약 조정 작업
시간대별로 리소스 용량을 사전에 추가하고 제거하는 조정 작업을 예약한다.

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
































## 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 사용률이 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
: 로드밸런서가 요청을 전달할 서버들을 묶어둔 개념적인 그룹
로드밸런서가 요청을 보낼 인스턴스들을 더 쉽게 관리하기 위해 만든 기능이다.
인스턴스나 auto scaling group이 포함될 수 있다.
: 등록된 서버 중 정상 상태로 동작하는 서버에만 요청을 전달한다.
이를 확인하기 위해 상태 검사(health check, heart-bit)과정을 수행한다. 200이 아닌 코드나 제시간에 응답을 못 주면 비정상 상태로 간주한다.



[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 추가

추가

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


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)
: 인스턴스 서버 호스팅시 물리적으로 부착되는 SSD 저장장치
인스턴스를 생성하면 자동적으로 인스턴스 스토어 볼륨이 생성된다. 추가 비용이 없다.
단기적인 목적으로 인스턴스를 시작하는 배포 모델에 적합하다.
고속의 데이터 입출력 및 처리가 중요한 경우에 사용한다.
: 고성능 블록 스토리지 서비스
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차 서비스







## 현재는 붙인 볼륨을 사용할 수 없는 상태
[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.




[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

[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 /

[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
: 스토리지를 프로비저닝하거나 관리하지 않고도 파일 데이터를 공유할 수 있게 해주는 간단하고 한 번만 설정하면 되는 탄력적 서버리스 파일 시스템을 제공
AWS 클라우드 서비스 및 온프레미스 리소스와 함께 사용할 수 있다. 원하는 만큼 확장이 가능하다. NFSv4 Protocol을 사용한다. PB 사이즈까지 지원한다.
=> AWS Fully Managed Service(완전 관리형 서비스)

EFS 생성시 VPC 안의 AZ Subnet에 Mount Target을 생성한다.
-> 간편성, 자동확장, 공유 파일 스토리지, 원활한 통합, 높은 가용성 및 내구성 제공, 보안












## 양쪽 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
