시작 전
- 목적 : 페이지에 변경점이 있을 때 EFS에 변경파일을 올리면 모든 AS인스턴스에서 참조 하고, 새로운 인스턴스가 해당 파일을 가지게 하기 위함
- 이 포스팅은 Auto Scaling - CloudWatch - EFS 연동 확인을 위한 최소한의 환경만 구성하였다.
EFS
EFS - EC2 인스턴스 마운트
- /etc/hosts 경로에 AZ-a,c에 대한 사설 IP 입력
- 마운트할 디렉토리 생성 ( ex :
mkdir /efs
)
- /etc/fstab 경로에 다음 코드 추가 (재부팅시 자동 마운트)
efs1:/ /efs nfs rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0
mount -a
명령으로 마운트
df -hT
명령으로 마운트 확인
Auto Scaling Group 재생성 (사진이 많으니 하는법 알면 Skip)
- EFS 마운팅을 완료한 인스턴스의 이미지를 생성
- 생성한 AMI 기반으로 AS 시작구성 생성
- Auto Scaling Group 생성
AS로 생성된 인스턴스의 EFS 마운팅 확인
- 새로 생성된 인스턴스에서
df -hT
명령을 통해 마운트 확인
- 모든 AS 인스턴스가 /efs 디렉토리에 EFS와 마운트 되어있다.
- 새로 생성된 인스턴스에서
CloudWatch
규칙 생성
- 이벤트 소스 설정 ( AS를 특정해주어야 여러개의 AS를 운영할 때 오류가 없다.)
- 규칙 대상 설정
- 규칙 이름 지정 및 생성
테스트
테스트1 - Commander에서 EFS 내부에 파일 생성
- Commander Instance가 서버 담당자만 접근 가능한 서버라고 가정한다.
- EFS에 마운트 한다.
- index.html 파일을 EFS에 업로드
- 업로드된 index.html를 수동으로 변경할 수 있고, 인스턴스 Scale-Out시에 자동으로 모든 인스턴스에게 적용된다.
- 변경 전 ALB로 접속한 EC2-EFS 인스턴스들의 웹페이지
- 최소용량 증가를 통해 Scale-Out 진행 후 EC2-EFS 인스턴스들의 웹페이지
- 기존 인스턴스는 변경됐는데 새로생긴 인스턴스에 변경이 적용되지 않음
테스트2 - Run-Command 명령에서 Mount를 진행한 후 명령 실행
- 다시 테스트하기 위해 Commander에서 index.html 파일 내용 변경
- CloudWatch 규칙에서 직접 마운트를 진행하고 명령실행하도록 변경
- EFS에 직접 마운트하는 방식으로 EFS → 파일 시스템 → 연결 → NFS 클라이언트 사용 방식을 사용했다.
- 인스턴스 Scale-Out 하고 결과 확인
- Auto Scaling 자동 동기화 완료
결론
- 서버 관리자는 EFS에 변경파일을 업로드하고 CloudWatch를 간단하게 수정하는 것으로 Auto Scaling 모든 인스턴스들에게 자동으로 명령을 적용시킬 수 있다.
- EC2의 userdata와 비슷한 개념일 수 있지만 userdata는 적용할 명령이 변경될 때 Auto Scaling Group에 적용하기 쉽지 않다. (새로운 시작구성을 만들어 다시 배포해야하는 걸로 알고있다.)
- 테스트 2번을 통해서 /etc/fstab에 등록한 마운트 정보보다 AWS에서 입력하는 userdata, run-command가 선행되어 작동하는 것을 확인했다. 이것은 Amazon Linux 2 기준이며 대부분의 리눅스 시스템은 비슷할 것이라 생각하지만 예외가 있을 수 있다.
Uploaded by Notion2Tistory v1.1.0