본문 바로가기

KOSA 클라우드 솔루션즈 아키텍트 양성과정

[5.27] 퍼블릭 클라우드 스토리지

# 퍼블릭 클라우드의 스토리지 서비스(AWS, AZURE, GCP 등)

 

 - 객체 스토리지 :

    - URL(링크)를 통해 파일을 주고 받을 수 있는 스토리지

    - 정적인 웹 사이트를 만들 수 있는 기능 (HTTP 기능)

 

 

  - 파일 스토리지 :

    - NFS, SAMBA와 같이 네트워크를 통한 공유폴더와 유사

 

 

  - 블록 스토리지 :

    - OS, 애플리케이션 설치하고 구동(운영)할 수 있는 공간

    - 일정 크기의 블록 단위로 데이터를 저장

 


# 결제

 

결제 대시보드

* 비용이 청구되면 페이지 중간의 현재 당월 누계 잔액 이하의 항목들에 비용이 표시됨

 

 

청구서 화면

* 프리티어만 이용해서 비용 청구되지 않음

* 프리티어 제한시간이 지나면 비용이 청구될 수 있으니 주의

* Data Transfer : 트래픽에 대한 비용(나의 서버에서 아웃바운드 트래픽이 발생해도 나한테 비용이 청구됨)

 


# EBS


  - EC2를 만들면서 추가 볼륨을 추가

 

 

새 볼륨 추가로 EBS 볼륨 추가

* /dev/xvda

* /dev/sdb 

-> 끝에 a, b, c ... 순서대로 생김

 

 

마운트

* xvdb가 df -h에서 없으니까 마운트가 안 된 상태

 

 

 

xvdb 마운트 하기

* mkfs : make file system

* xvdb 드라이버를 ext4 포맷으로 포맷

* /dev : 장치 폴더

* ext4는 호환성이 좋아서 xvdb디스크를 떼서 다른 곳에서 사용할 수 있게 함

* Block size=4096 : 블록 단위로 데이터를 저장

 

 

mnt

* 최상위 폴더 / 밑에 마운트 하라고 mnt 원래 있음

 

 

마운트 완료

* /dev/xvdb 장치 파일을 mnt폴더에 마운트


 - 서비스를 이용 중에 볼륨을 추가

 

 

어떤 게 루트 블륨인지 확인

* 연결된 인스턴스에서 보면 xvda와 sdb를 볼 수 있음,  a가 루트 볼륨

cf.) EBS는 같은 가용영역 안에서만 EC2와 attach 될 수 있음

 

 

볼륨 추가

* EC2와 동일한 가용 영역 내에서 추가

* 단순 백업 정도로 사용할 볼륨이라면 콜드  HDD를 사용 하는 것이 비용 효율적(다소 느림)

* 프리티어 기준으로는 HDD 사용하면 비용 청구됨

* 암호화가 안 된 상태로 만들어진 디스크는 볼륨 생성 후 암호화 시킬 수 없음

 

 

 

태그

* 어떤 볼륨이 어디와 연결되고 어떤 특징이 있는지 태그로 추가해주는 것이 추후 구분하기에 용이함

* WEB01 인스턴스에 볼륨을 추가하는 것이니까 ADD로 명명(직관적으로)

 

 

볼륨 연결 클릭

* 볼륨 연결이 활성화 안 되어 있다면 EC2와 EBS의 가용영역이 다른 것은 아닌지 확인해 보기

 

 

볼륨 연결 화면

* 특별한 이유가 없다면 장치 파일 이름을 sdf에서 다른 것으로 바꿀 필요 없음

 

 

마운트

* xvdf를 ext4 포맷으로 포맷팅

* 사용자 폴더에 ebs-share라는 폴더를 마운트용으로 생성

* ebs-share에 xvdf를 마운트

 

 

aws.tar파일 업로드

* 권한 문제로 사용자 디렉토리에 넣는 것이 편함

 

 

 

 

 

* WEB01의 퍼블릭IP로 브라우저에서 접속이 안 됨

* 우선 보안그룹이 문제인지 확인

* 지난 블로그 포스팅에서 SG-ALB의 인바운드 트래픽만 허용했음

 

 

인바운드 전부 허용

* 하지만 IP로 소스를 넣으려고 하면 안 됨

 

 

HTTP 인바운드 규칙 추가

* 아예 HTTP를 삭제 해주고 다시 만들어야 함

 

 

 

 

tar명령어를 이용

* tar 파일을 /var/www/html 경로에 풀음 

 

 

 

aws.tar 파일을 ebs-share로 잘래내서 보내기

 

* 원래 xvda라는 루트 볼륨에 aws.tar파일에 들어가 있음

* xvda 루트볼륨이 aws.tar파일의 용량 때문에 부족한 상황 가정

 

 

파티션 나누기

* sudo growpart /dev/xvda 1 : 파티션 1번을 만들어줌

 

 

xfs 파일 시스템 확장

 

 


# 다른 가용영역에 인스턴스 생성

 

마운트 해제

 

 

볼륨을 분리

* 볼륨 분리하고 다시 WEB02에 붙이려고 해도 가용영역이 달라서 불가능 

* 따라서, 스냅샷을 이용해야 함

 

 

스냅샷 생성

 

 

스냅샷에서 볼륨 생성

* 스냅샷에서 이미지 생성 : 루트 볼륨에 OS가 담겨 있으니까 루트 볼륨의 스냅샷이어야 함

  -> 이미지를 만들고 해당 이미지를 활용해서 인스턴스를 생성

 

볼륨 생성

* 볼륨 생성 화면에서 가용 영역을 선택할 수 있음, WEB02는 2에 있으므로 2c를 선택

 

 

WEB02와 attach

 

xvdf가 생김

* 이제 마운트를 해야 함

 

 

마운트 완료

 

 

cf.) curl http://169.254.169.254/latest/meta-data/public-ipv4 를 통해 퍼블릭IP 확인 가능


# 다른 리전으로 스냅샷 복사

 

 

도쿄리전에서 확인

* 서울 리전에서 도쿄 리전으로 스냅샷을 복사하면 백업이라고 할 수 있음(비용 발생)

 

 

스냅샷에 이미지 생성

* 서울 리전에서 도쿄 리전으로 루트 볼륨의 스냅샷을 가져왔으니 이제 이미지 생성하기

 

 

이미지 생성됨

 

 

AMI(Amazon Machine Image)

* SEOUL-IMAGE 이미지 만듦

 

 

도쿄리전에서 인스턴스 생성

* 키 페어는 리전단위라서 도쿄리전에서 새로 만들어줘야 함

 

 

도쿄 보안 그룹

* 보안 그룹도 리전 별로 구분되어 있어서 도쿄 리전에서는 서울리전에서 만든 보안그룹이 보이지 않음

 

 

HTTP 포트 열어주기

* 소스 유형 정보에서 위치 무관하거나 원본(src)에 0.0.0.0/0 해주거나 둘 다 상관없음


* Multi AZ : 하나의 리전에서 여러개의 가용 영역을 사용

  - ELB를 사용하여 로드 벨런싱

*  Cross Region : 여러 개의 리전에서 가용 영역들을 사용

  - Route53을 사용하여 리전 간 로드 벨런싱

  - Route53에서는 리전 명이 글로벌로 표시

 

 

* AMI에는 아무 데이터도 없음

* AMI의 뒤에 있는 스냅샷이 데이터를 담고 있음

* 따라서 스냅샷을 AMI보다 먼저 삭제할 수 없음

 

 

AMI 등록 취소

* AMI는 삭제가 아닌 등록 취소라고 표현


* 오늘의 애러

  - 사용자 데이터 작성 시 오타가 있으면 curl 127.0.0.1 했을 때

     curl: (7) failed to connect to 127.0.0.1 port 80 after 0 ms: connection refused 오류 발생

 -> 사용자 데이터를 편집한다고 해도 적용이 안 돼서 인스턴스를 삭제하고 다시 만들어야 함