클라우드/AWS

[AWS] EFS - 웹 자동화

코딩하는 도람쥐 2024. 6. 25. 09:24

EFS(Elastic File System)란?

AWS EFS는 클라우드 기반의 관리형 파일 시스템 서비스로

여러 EC2 인스턴스에서 동시에 공유할 수 있는 파일 스토리지를 제공

 

저는 다른 가용 영역에 있는 웹 인스턴스끼리의 자동화를 위해서 efs를 사용해주도록 하겠습니다. 

 

(기본 구성으로 가용영역 a에 web1 인스턴스 가용영역 b에 web2 인스턴스 생성)

 

1. EFS 파일 시스템 생성

vpc-1 선택,가용영역을 2a, 2b 선택. 

sg는 사전에 만들어둔 for-efs를 넣어줌. 

사전에 만들어둔 sg 내용.

Network File System(NFS) 포트번호 2049 

source에 web1의 sg를 선택해야함

 

2. EFS 마운트 

1) DNS name 을 확인 할 수 있다. 

생성된 filesystem 상세페이지에서 attach를 눌러서 efs를 mount 하는 명령어 복사 가능

 

2) cli 접속 

 

sudo apt update
sudo apt install - y nfs-common
sudo mkdir /mnt/efs
sudo apt-get install awscli -y

 

// mount : 파일 시스템을 특정 디렉토리에 연결하거나 마운트하는 작업

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-01f288ad2206de817.efs.ap-northeast-2.amazonaws.com:/ /mnt/efs

 

df -h 명령어로 마운트 확인

 

sudo cp -r /var/www/html/* /mnt/efs/

 

3. 웹 root 디렉토리 경로 변경 

 

vi /etc/nginx/sites-available/default

root 경로를 /mnt/efs 로 변경해줌. 

 


4. 동기화 스크립트 작성 


vi /etc/fstab

/etc/fstab 파일은 리눅스 시스템에서 부팅 시 자동으로 마운트할 파일 시스템을 설정하는 파일

 

fs-01f288ad2206de817.efs.ap-northeast-2.amazonaws.com:/ /mnt/efs nfs defaults,_netdev 0 0

마운트 명령어를 재부팅 파일에 넣어서시스템 부팅 시자동으로 마운트 되도록 설정 


sudo chown -R www-data:www-data /mnt/efs


sudo apt-get install 
inotify-tools rsync

inotify-tools: 파일 시스템 이벤트를 모니터링할 수 있는 유틸리티 모음

rsync: 파일을 효율적으로 전송하고 동기화하는 유틸리티

 

vi /usr/local/bin/sync_web_changes.sh

- 변경사항이 생길때마다실시간으로 동기화되는 로직

 


WEB_DIR="/mnt/efs"-> 웹 애플리케이션 코드가 위치한 디렉토리

 

WEB2_HOST="43.202.155.78"


-> 동기화할 인스턴스 지정

 

sync_changes 함수는 변경 사항을 감지하고 해당 파일을 rsync를 사용하여 웹2 인스턴스로 동기화

local file="$1" 첫번째 인자 저장

${file}: 변경된 파일의 경로

-e ssh: SSH 프로토콜을 사용하여 전송.

-avz: 파일을 재귀적으로 전송하고, 전송 상세 내역을 출력하며, 파일 압축을 사용하여 전송.

 

5. 확인

 

web1에서 변경을 주고 web2로 접속해보면 정상적으로 변경이 되었음을 확인 가능. 

728x90
반응형

'클라우드 > AWS' 카테고리의 다른 글

[Associate SAA-C03] - dump 정리 51 ~ 80  (0) 2024.07.21
[Associate SAA-C03] - dump 정리 31 ~ 50  (1) 2024.07.21
[Associate SAA-C03] - dump 정리 1 ~ 30  (0) 2024.07.18
[aws] - ACM, ROUTE 53, HTTPS  (0) 2024.06.24
[aws] - vpc peering  (0) 2024.06.24