EFS란?
Amazon Elastic File System(EFS) 는 AWS에서 제공하는 완전관리형 파일 스토리지 서비스이다.
스토리지 용량 및 성능을 프로비저닝하거나 관리하지 않고도 파일 데이터를 공유할 수 있는 완전 탄력적인 서버리스 파일 스토리지를 제공하도록 설계되었다.
( 프로비저닝은 컴퓨터 시스템이나 네트워크 장비를 설정하고 준비하여 사용 가능한 상태로 만드는 과정 . ex) 하드웨어 설치, 운영 체제 및 소프트웨어 설치, 구성 및 설정, 모니터링 및 관리 설정 등을 포함))
EFS는 확장 가능하고 탄력적인 네트워크 파일 시스템을 제공하며, 여러 EC2 인스턴스가 동시에 데이터를 읽고 쓸 수 있도록 지원한다.
다양한 애플리케이션에서 공유 스토리지 솔루션을 쉽게 사용할 수 있는 것이다.
EFS의 주요 특징 및 기능
1. 완전관리형 :
- AWS에서 파일 시스템을 자동으로 관리한다. 따라서 사용자는 파일 시스템의 생성, 구성 및 유지보수에 대해 걱정할 필요가 없다.
2. 확장성 :
- EFS는 수 페타바이트까지 확장할 수 있다. 파일 시스템은 자동으로 크기를 조정하여 증가하는 데이터 스토리지 요구 사항을 충족한다.
3. 고가용성 및 내구성 :
- EFS는 여러 가용 영역(AZ)에 걸쳐 데이터를 저장하여 고가용성과 내구성을 제공한다. 데이터 손실의 위험을 줄이고 애플리케이션의 안정성을 높인다.
이외에도 여러가지 장점이 있다.
EFS는 웹 서버 호스팅, 데이터 분석, 백업 및 복원, 미디어 처리, 개발 및 테스트 환경 등등에 많이 활용된다.
실습 계획
1. 2개의 퍼블릭 서브넷이 있는 VPC 생성 :
- 먼저 새 VPC를 생성하고 두 개의 퍼블릭 서브넷을 생성하여 네트워크를 설정한다
- 다중 가용 영역에서 안정적인 서비스를 위해 VPC를 생성하고, 퍼블릭 서브넷을 사용하여 외부와의 통신을 지원한다.
2. EC2 및 EFS 용 보안 그룹 생성:
- EC2 및 EFS용 보안 그룹을 생성하여 네트워크 및 보안 설정을 구성한다.
- 보안 그룹을 설정하여 EC2 인스턴스와 EFS 간의 트래픽(접속량)을 제어하고 보안을 강화한다.
3. 탄력적 파일 시스템(EFS) 생성 :
- EFS 서비스로 이동하여 새로운 탄력적 파일 시스템을 생성한다.
- EFS를 사용하여 여러 EC2 인스턴스 간에 데이터를 공유하고 동기화한다. 데이터를 중앙에서 관리하고 확장 가능한 스토리지 솔루션 제공.
4. 첫 번째 EC2 인스턴스를 생성 및 EFS 드라이브 마운트 :
- 첫 번째 EC2 인스턴스를 생성하고 이 인스턴스를 처음 생성한 퍼블릭 서브넷에 배치한다.
- 해당 인스턴스에 EFS 드라이브를 마운트하여 파일 시스템에 액세스한다.(EFS를 EC2 인스턴스에 마운트하면 해당 인스턴스는 EFS 파일 시스템에 저장된 파일을 마치 로컬 디렉토리에 있는 파일처럼 접근하고 사용할 수 있게 된다. 공유와 협업이 가능.)
5. 두 번째 EC2 인스턴스 생성 및 EFS 드라이브 마운트 :
- 두 번째 EC2 인스턴스를 생성하고 이 인스턴스를 두 번째 퍼블릭 서브넷에 배치한다.
- 해당 인스턴스에도 EFS 드라이브를 마운트하여 파일 시스템에 액세스한다. (두 번째 EC2 인스턴스를 생성하고, 동일한 EFS를 마운트하여 데이터를 공유한다. 이를 통해 다중 인스턴스 간에 데이터를 동기화하고 일관된 환경을 유지할 수 있다)
6. Instance Connect를 사용하여 두 EC2 인스턴스에 연결 :
- AWS Management Console에서 Instance Connect를 사용하여 두 EC2 인스턴스에 SSH 연결한다.
- Instance Connect를 사용하여 보안성을 유지하면서 EC2 인스턴스에 안전하게 연결한다. SSH 키 관리를 단순화하고, 인스턴스에 쉽게 액세스할 수 있다.
7. EFS 드라이브에 파일 생성:
- 두 EC2 인스턴스 중 하나에서 EFS 드라이브에 파일을 생성하고, 다른 인스턴스에서 해당 파일을 확인한다.
- EFS에 파일을 생성하여 데이터를 공유하고, 다중 인스턴스 간에 일관성 있는 환경을 구축한다. 효율적인 협업과 작업 흐름을 유지할 수 있다.
8. 두 번째 인스턴스에서 EFS 마운트 시연 :
- 두 번째 EC2 인스턴스에서도 마운트된 EFS 드라이브에 액세스하여 생성된 파일을 확인한다.
- 두 번째 EC2 인스턴스에서 EFS를 마운트하여 첫 번째 인스턴스에서 생성된 파일에 액세스 한다. 데이터의 일관성과 신뢰성을 확인하고, 공유된 리소스에 대한 액세스를 확인할 수 있다.
이 과정을 통해 VPC와 EC2 인스턴스, 그리고 EFS를 사용하여 두 대의 EC2 인스턴스 간에 파일을 공유하고 통신할 수 있다.
실습 내용
1. 2개의 퍼블릭 서브넷이 있는 vpc 생성
vpc로 먼저 들어와서 create vpc를 한다.
vpc and more을 선택하고 이름은 자동 생성, 사이더블록은 그대로 16으로 내둔다.
나머지 내용은 사진 첨부니까 보고 확인하자
2. EC2 및 EFS용 보안 그룹 생성
먼저 보안 그룹에 대해서 알아보자.
보안 그룹은 수신 및 발신 트래픽을 제어하기 위해 EC2 인스턴스에 대한 가상 방화벽 역할을 수행한다.
인바운드 규칙은 인스턴스로 들어오는 트래픽을 제어하고
아웃바운드 규칙은 인스턴스에서 나가는 트래픽을 제어한다.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html
Amazon EC2 security groups for your EC2 instances - Amazon Elastic Compute Cloud
Amazon EC2 security groups for your EC2 instances A security group acts as a virtual firewall for your EC2 instances to control incoming and outgoing traffic. Inbound rules control the incoming traffic to your instance, and outbound rules control the outgo
docs.aws.amazon.com
자세하게 여기서 볼 수 있다.
보안 그룹 생성 단계
1. VPC에서 나와서 EC2 콘솔로 이동
2. Network & Security 에 가서 security groups에 들어간 후 create를 누른다. 이게 ec2 보안그룹
왜 생성해야 함? -> 보안 그룹을 사용하면 SSH를 통해 EC2 인스턴스에 안전하게 연결할 수 있음.
3. 기본 세부 정보를 이제 작성하면 되는데 순서대로 보안 그룹 이름, 설명, VPC, 인바운드 규칙을 생성한다.
이 스크린 샷을 참고한다.
4. create를 누르고
이 화면이 떴는지 확인한다.
5. security groups를 들어가서 다시 돌아간 후 create security group을 다시 누른다. 이게 EFS 보안 그룹
세부사항을 보며 참고해라.
이제 생성하면
이런 화면이 뜰 것인데 여기서 나가지 말고 edit inbound rules을 누른다. 아직 해야 할 일이 있다.
누른 후 inbound rules에 NFS 타입 하나를 더 만들고 source 부분에 EFS 관련 보안그룹을 추가한다.
이제 SAVE하면 진짜 끝!
3. 탄력적 파일 시스템(EFS) 생성
방화벽 역할을 하는 보안 그룹이 생성되었으므로 이제 EFS를 만들면 된다.
EFS로 들어가서 Create file system을 눌러서 뜨는 팝업 창에 customize를 클릭한다.
이제 파일 시스템 설정을 위한 구성 페이지가 나타난다.
이렇게 순서대로 따라하면 된다. 이 뒤엔 next와 create를 누른다 딴거 건들지 않고.
4. 첫 번째 EC2 인스턴스 생성 및 EFS 드라이브 마운트
두 개의 퍼블릭 서브넷으로 Virtual Private Cloud를 생성했으므로 이 퍼블릭 서브넷에 상주할 두 개의 EC2 인스턴스를 생성할 차례이다. EC2를 검색해서 들어간다.
launch instance로 인스턴스 만들기를 들어간다.
들어가서 Name을 EFS-SERVER-1로 하고 아마존 Linux 2를 AMI로 선택한다.
인스턴스 유형은 t2.micro이고 키 쌍은 연습에서는 SSH용 키 쌍을 생성할 필요가 없기에 Instance Connect를 사용한다 .
위에서 설명한 부분 중에 한국 리전인 경우 2b에 t2.micro가 없다 함. 따라서 t3.nano로 하는 것도 괜찮다.
EC2 생성에서 이런 부분 넣고 이제 EFS 드라이브를 서버에 마운트하면 된다.
이렇게 밑의 구성을 들어가서 edit을 누르면
이렇게 고급정보들이 뜬다. 그대로 두고 이제 인스턴스 시작을 클릭할 수 있는 모든 설정이 완료된 것이다.
5. 두 번째 EC2 인스턴스 생성 및 EFS 드라이브 마운트
방금 첫 번째 EC2 인스턴스를 생성하고 EFS 드라이브를 마운트했다. 이제 반복하여 두 번째 EC2 인스턴스를 생성해야 한다.
두 번째 EC2 인스턴스빌드의 차이는 EC2 인스턴스를 퍼블릭 서브넷 2에 배치한다는 차이 이다.
네트워크 세팅에서 Subnet 파트에 public2로 되어 있는 부분 선택하면 되는 것.
이렇게 순서대로 하면 인스턴스 두 개가 뜨는 것이 보일 것이다.
6. Instance Connect를 사용하여 두 EC2 인스턴스에 연결
시작은 EC2에서.
실행중인 인스턴스로 들어간다.
EFS-SERVER-1에 연결한다.
connect를 시작하면 이런 화면이 뜬다.
이 화면을 켜 놓은 상태로 새 탭에 들어가서 인스턴스를 눌러 안으로 들어온다.
이런 화면이 뜨는 것을 볼 수 있다.
이제 새 창을 연 상태로 이전 탭을 클릭한다.
실행 중인 인스턴스로 돌아가려면 이동 경로의 인스턴스를 클릭해라.
두 번째 인스턴스 옆에 있는 상자를 선택하고 해당 인스턴스를 선택한 다음 첫 번째 인스턴스와 마찬가지로 연결해라.
인스턴스에 연결을 하면 세 번째 브라우저 탭이 열리고 두 번째 인스턴스에 대한 연결이 표시된다.
이제 세 개의 브라우저 탭이 있는 상태로 다음으로 넘어가겠다.
7. EFS 드라이브에 파일 생성
인스턴스에 Connect 해서 아마존 리눅스 CLI를 열었다. 이제 작동 중인 EFS를 봐야 할 차례다.
EFS는 대규모 애플리케이션 및 데이터 세트에 대한 고성능을 제공하며 동시에 수천 대의 EC2 인스턴스에서 파일 시스템에 액세스할 수 있으며, 여러 EC2 인스턴스 간에 데이터를 공유하고 동기화할 수 있다.
따라서 여러 가용영역에서 수많은 EC2를 연결할 수 있다.
EFS 드라이브를 마운트할 때 마운트 지점이 지정되었다.
/mnt/efs/fs1
EFS를 생성한 후에 이를 마운트 하는 이유가 무엇일까?
1. 데이터 공유: EFS를 마운트하여 다수의 EC2 인스턴스 간에 데이터를 공유할 수 있다.
여러 서버 간에 동일한 파일 시스템을 공유하여 데이터를 동기화하고 일관성 있게 유지할 수 있다.
2. 중앙 집중식 파일 시스템 : EFS를 마운트하면 서버가 동일한 파일 시스템에 액세스할 수 있으므로 파일이 중앙 집중 식으로 저장된다. 데이터 관리를 단순화하고 일관성 있는 환경을 유지하는 데 도움이 된다.
3. 고가용성 및 확장성 : EFS는 다중 가용 영역에서 데이터를 자동으로 복제하여 고가용성을 제공하고 필요에 따라 자 동으로 확장하여 스토리지 용량을 동적으로 조정할 수 있다.
4. AWS 서비스 통합 : EFS는 다양한 AWS 서비스와 통합될 수 있으며, 마운트된 파일 시스템을 통해 데이터를 다른 AWS 서비스에 전달하거나 처리할 수 있다. 예를 들어, 마운트된 EFS를 사용하여 데이터를 Lambda 함수 또는 Amazon RDS에 전달할 수 있다.
이런 이유로 EFS를 생성한 후에는 해당 파일 시스템을 마운트하여 서버 또는 인스턴스가 데이터에 액세스할 수 있도 록 해야 한다.
이제 EFS에 파일을 추가해보자.
1. 현재 브라우저에는 세 개의 탭이 열려 있다. EC2 콘솔용 1개와 각 인스턴스용 브라우저 탭 2개. 아래와 같이 인스턴스 탭 중 하나에서 시작한다.
2. 디렉터리를 EFS 마운트로 변경해야 한다. 명령줄 인터페이스에 아래 명령을 입력하고 enter/return을 누른다.
cd /mnt/efs/fs1
엔터를 딱 치면 이렇게 뜬다.
디렉토리를 EFS로 전환했다. 이제 파일을 생성해보자. 파일 생성 명령어는 touch 이다.
sudo touch newfile.txt
ls를 입력하여 enter/return을 누른다. 이 명령은 EFS의 파일 또는 폴더를 나열한다.
EFS 드라이브를 방금 마운트했으므로 방금 생성한 파일 하나만 표시되어야 한다.
이제 마지막 단계인 인스턴스 #2에서 EFS 마운트 시연으로 이동할 준비가 되었다.
8. 두 번째 인스턴스에서 EFS 마운트 시연
첫 번째 인스턴스에 연결하고 Elastic File System에 새 파일을 만들었으므로 두 번째 인스턴스에서 파일이 있는지 확인한다.
1. 아직 사용하지 않은 두 번째 인스턴스의 탭을 선택한다.
2. 디렉토리를 마운트 지점으로 변경해야 한다. 터미널에서 아래 명령줄을 입력하고 enter/return
cd /mnt/efs/fs1
3. 이제 디렉토리를 EFS로 변경했으므로 마운트에 있는 파일과 폴더를 보려면 ls를 입력하면 된다. 첫 번째 인스턴스에서 생성한 것과 동일한 파일이 표시되어야 한다.
4. 이제 첫 번째 인스턴스에서 생성한 파일이 두 번째 인스턴스에 표시되는지 확인했다. 이 인스턴스에 두 번째 파일을 만들고 첫 번째 인스턴스에서 볼 수 있는지 확인한다.
이 두 번째 인스턴스에서 다른 파일을 생성한 다음 첫 번째 인스턴스를 확인하여 그곳에서 확인한다.
sudo touch SecondNewFile.txt
두 파일을 모두 보기 위해 두 번째 인스턴스에 연결되어 있는 동안 list file 명령을 실행해본다.
ls를 하고 이제 아래와 같이 두 파일이 나열된 것을 볼 수 있다.
첫 번째 인스턴스 탭에서 시작하여 EFS 마운트에 연결되어 있는지 확인한다.
cd /mnt/efs/fs1
만든 내용 정리
- 두 가용 영역(AZ)에 걸친 가상 사설 클라우드를 만들었다
- 각 가용 영역(AZ)에 EC2 인스턴스를 생성
- 두 인스턴스를 연결하여 공유하기 위해 탄력적 파일 시스템 EFS 생성했다
- 두 인스턴스 중 하나에서 EFS 드라이브에 파일 생성
- 두 번째 인스턴스에 연결했을 때 볼 수 있는 것 확인
- 마지막으로 두 인스턴스에 공유 드라이브를 공유할 수 있는 능력이 있다는 것을 확인
'Cloud > AWS' 카테고리의 다른 글
[AWS] DockerHub + EC2를 활용하여 간단하게 배포하기 (46) | 2024.08.05 |
---|---|
[AWS] ECR에 도커 이미지 업로드 (44) | 2024.07.31 |
VPC 간 통신 및 인터넷 접속을 위한 AWS 구성 요소의 역할과 설정방법 (31) | 2024.05.31 |
AWS 전체적인 용어 정리 (0) | 2024.05.20 |
[AWS] EC2 인스턴스 생성하기 (3) | 2024.05.05 |