AWS- 7

박형준·2024년 4월 17일

-S3: 저장소, 데이터의 무결성(99.999%), ssd방식과 hdd방식
-EBS: 저장소, 안전하고 백업용으로 사용
-스냅샷으로 백업
-증분백업
-EFS: 파일 시스템

AWS 파일 시스템

  • EBS(저장소), EFS(EC2-1,2연동), S3(외부접속)

1.CloudFormation 으로 배포 해서 서비스 생성

스택 생성후 자원 확인하기

  • url 입력( yaml 파일 )
  • 이름 지정 및 키페어 지정

리소스

생성된 스택 리소스 확인

  • VPC
    • 이름: MyVPC,
    • IP or 연결된 곳 -> CidrBlock: 10.40.0.0/16
  • 게이트웨이
    • 이름: MyIGW
  • 라우팅 테이블
    • 이름: MyPublicRT,
    • IP or 연결된 곳 -> DestinationCidrBlock: 0.0.0.0/0
  • 서브넷-1
    • 이름: MyPublicSN1,
    • IP or 연결된 곳 -> CidrBlock: 10.40.1.0/24
  • 서브넷-2
    • 이름: MyPublicSN2,
    • IP or 연결된 곳 -> CidrBlock: 10.40.2.0/24
  • EC2-1
    • 이름: EC2STG1,
    • 퍼블릭 IPv4 주소 : 52.78.104.236
  • EC2-2
    • 이름: MyVPC,
    • 퍼블릭 IPv4 주소 : 3.34.99.114
  • 보안그룹
    • 이름: MySG,
    • IP or 연결된 곳 -> TCP[22, 80, 2049], ICMP

인스턴스 접속하고 ping test

  • 접속 확인
  • ping test 확인(인스턴스끼리 통신 가능)

*볼륨 확인 명령어

  • #df -h /xvda1
    • #blkid

생성된 인스턴스의 하드디스크 확인

  • 인스턴스의 디스크 이름 확인( /dev/xvda1 )
  • UUID=22f01e0d-b2e6-432c-a680-49c5e628a372:를 fstab에 디스크를 등록(mount)할 때 입력
  • UUID확인 명령어(blkid)

*EBS 볼륨 추가

EC2 / EBS / 볼륨 / 볼륨 생성 / 이름 입력(TEST), 가용영역(a), 나머지는 기본 ⇒ 볼륨 생성

  • 볼륨 추가
  • 크기 지정, IOPS(input, output) : 초당 입출력 속도
  • 태그 설정을 통해 쉽게 찾기
  • 생성된 볼륨 확인
  • 볼륨을 삭제할 때는 분리하고 삭제

*추가된 볼륨 연결

  • 추가된 볼륨 선택 / 작업 / 볼륨 연결 / 인스턴스 선택 , 디바이스 이름 (/dev/xvdb) / 연결

볼륨 연결

  • 가용영역에 맞게 인스턴스 연결, 하드디스크 이름 선택

연결이 끝나면 lsblk 로 확인

  • 파일시스템 생성
    • mkfs -t xfs /dev/xvdf

볼륨 연결 확인

  • 볼륨 확인 명령어( lsblk )
  • fdisk 접속 확인
  • mkfs 명령어를 통해 파일시스템 xfs로 연결

*디렉터리 생성 과 마운트

  • [root@EC2-STG1 ~]# mkdir /test
  • [root@EC2-STG1 ~]# mount /dev/xvdbf /test
    • /test 에 테스트 파일 생성 ,
    • test.txt 내용 입력
  • /root/test 디렉토리 만들고 파일 시스템과 마운트
  • 디렉터리에 텍스트 문서(test.txt) 추가 후 내용 입력
  • fstab에 등록 시키기
  • blkid로 UUID 확인
    • fstab 등록
  • fstab에 등록( UUID를 통해 등록하는게 안전, 숫자의 의미 : 덤프와 검사 )

*볼륨 크기 변경

  • 볼륨 메뉴 / 크기를 변경할 볼륨 선택(EC2-1 볼륨 선택) / 작업 / 볼륨 수정 /
    • ⇒ 볼륨 유형을 기본값(gp2)에서 gp3으로 변경하면 상세설정이 가능 함. 기존 gp2를 유지하면 크기만 변경가능
    • ⇒ gp3으로 변경 하고 나머지는 기본값으로 두고 / 수정

볼륨 크기 변경

  • 볼륨의 세부 정보 수정 가능 ( 유형, 크기, IOPS, 처리량 )
  • 용량이 변경된 것 확인 ( lsblk )

[root@EC2-STG1 ~]# lsblk

[root@EC2-STG1 ~]# growpart /dev/xvda 1 ⇒ 파일시스템 확장 적용

[root@EC2-STG1 ~]# xfs_growfs -d / ⇒ 파일시스템을 / 에 바로 적용시키기

[root@EC2-STG1 ~]# lsblk

[root@EC2-STG1 ~]# df -h /dev/xvda1 ⇒ 용량 확장된것 확인

실제의 디스크 용량 늘리기

  • 해당 디스크의 파티션 크기를 조정( growpart /dev/xvda 1 )
  • XFS 파일 시스템에서 루트 디렉토리(/)를 포함한 마운트된 파일 시스템의 크기를 늘리는 명령어 ( xfs_growfs -d / )
  • 용량이 늘어난 것을 확인

*스냅샷을 이용한 백업 (전체 백업 / 증분 백업 )

  • [root@EC2-STG1 ~]# fallocate -l 10G /home/10G.dummy
  • [root@EC2-STG1 ~]# df -h /dev/xvda1

스냅샷을 이용한 백업( 전체 백업 )

  • fallocate: 특정 파일에 대해 지정된 크기만큼의 공간을 미리 할당하는 데 사용 (10G 예약, 사용량 확인: 61%)
  • 스냅샷 이름 지정후 생성
  • 생성한 스냅샷 확인

EC2 볼륨에서 백업할 볼륨 선택 /

  • 작업에서 스냅샷 생성 / 이름 입력(backup-1) 하고 생성 버튼 클릭
  • 스냅샷에서 생성되는것 확인
    • [root@EC2-STG1 ~]# fallocate -l 1G /home/1G.dummy
    • 한번더 스냅샷 생성 하면 시간이 많이 단축됨.

증분 백업

  • 1G 예약후, 사용량 확인: 66%(ls를 통해 예약 생성 확인)
  • 스냅샷 생성(미리 스냅샷을 생성해서 시간이 단축)

*EFS 파일시스템 생성 ( EC2-1, EC2-2 )

-EFS 서비스 검색 / 파일시스템 생성 /

  • -EC2-1 하고 연결
    • 다음 / 보안그룹은 Default는 제거 후 템플릿에서 생성 한것 선택 ( a, b ) 모두 / 정책은 기본 [다음] / 생성

EFS 파일 시스템 생성 , EC2끼리 연동해서 성능 향상

  • 이름 지정 및 VPC 지정
  • 사용자 지정 (세부 설정), 수명 주기 관리 설정
  • 암호화 해제
  • 보안 그룹 지정 (템플릿에서 생성한 보안그룹으로)
  • 정책은 기본으로 설정
  • EFS 생성 확인

var/www/html/index.html 파일 내용 확인

본인 ip 호출 (서버 1, 파일시스템 연결하기 전)

파일 시스템 에서 EFS ID 확인 후, 변수 설정 하고 마운트

  • [root@EC2-STG1 ~]# EFS=fs-0fdc415c2a24dc7c8
  • [root@EC2-STG1 ~]# mount -t efs -o tls $EFS:/ /var/www/html/efstest

EFS와 인스턴스 연결(서버 1에서)

  • 디렉터리 하나 생성(/var/www/html 경로)
  • EFS(Elastic File System)를 마운트하는 명령어 ( 미리 EFS ID를 변수 지정 후 마운트 )
  • [root@EC2-STG1 ~]# cd /var/www/html/efstest
  • [root@EC2-STG1 efstest]# vi index.html
  • [root@EC2-STG1 efstest]# fallocate -l 10M /var/www/html/10M.dummy
  • /var/www/html/efstest/에 파일 생성
  • fallocate 명령어를 이용해서 efstest폴더에 10M 더미 형성( fallocate -l 10M /var/www/html/efstest/10M.dummy )

IP확인 ( dig +short EFS-ID.efs.ap-northeast-2.amazonaws.com )

  • [root@EC2-STG1 ~]# dig +short $EFS.efs.ap-northeast-2.amazonaws.com
    • 10.40.1.164
  • EFS의 IP 확인( 10.40.1.63 )
  • 생성한 index.html 파일 확인

EC-1 에서 파일 많이 생성 하고, EC-2 터미널에서 접속 해서 확인

  • [root@EC2-STG1 ~]# for i in {1..50}; do touch /var/www/html/efstest/success.$i; done;
  • 마운트한 efstest 폴더에 폴더 100개 생성
  • 생성한 폴더 확인

*EC2-2 에 디렉터리 생성 하고 마운트 하고 조회

  • ec2-server2에 접속해서 마운트
  • /var/www/html/efstest/ 폴더의 리스트 확인

*S3 스토리지 생성 및 연결 ( 외부에서 접근 가능하도록 )

  • S3 서비스 / 버킷 만들기 /
    • 이름 입력 / 활성화됨, 모든 퍼블릭 액세스 차단은 체크 해제, 맨 하단 체크 / 생성
    • 생성된 버킷 에 이미지 업로드 하고 이미지 URL 접근 테스트 해보면 ⇒ 접근 안됨.

버킷 생성

  • 버킷 이름 지정
  • 엑세스 활성화
  • 퍼블릭 엑세스 차단 해제
  • 버킷 생성 확인

*버킷에서 업로드된 이미지 선택 / 작업 / ACL을 사용하여 퍼블릭으로 설정 /

*업로드된 이미지

이미지 업로드 후 접근 테스트

*EC2-1 로 접속 후

ec2-server 1 접속

  • 쉘 스크립트에서 텍스트를 파일에 추가하는 명령어 (EOF가 나올 때 까지)
  • EC2-server1의 IP로 접속해보기

*버킷 정책 수정

    • test-0417-s3는 버킷 이름
    • 저장 누르고 버킷 확인시 퍼블릭 엑세스 가능 문구가 보여야 외부 접속 가능.

버킷 권한 편집 ( 접근 관련 )

  • 버킷 정책 입력
  • 퍼블릭 엑세스 가능 확인( 외부 접속 가능 )
  • url을 통해 이미지 확인

터미널에서 파일 생성 후 업로드

  • [root@EC2-STG1 ~]# TS3=test-0417-s3
    • [root@EC2-STG1 ~]# echo $TS3
    • test-0417-s3
  • [root@EC2-STG1 ~]# aws s3 ls
  • [root@EC2-STG1 ~]# cd /var/www/html
  • [root@EC2-STG1 html]# touch test.txt
  • 터미널에서 S3 확인
  • 변수 설정 후 업로드
  • 업로드 확인
  • [root@EC2-STG1 html]# aws s3 cp /var/www/html/test.txt s3://$TS3
    • upload: ./test.txt to s3://test-0417-s3/test.txt
    • [root@EC2-STG1 html]# aws s3 ls s3://$TS3
  • 터미널에서 S3 파일 확인( aws s3 카피와 리스트 확인 명령어 )

0개의 댓글