구름

CloudWatch를 사용해 Auto Scaling Instance 자동 동기화 [Auto Scaling 자동 동기화-4] 본문

Cloud/Auto Scaling Instance 자동 동기화

CloudWatch를 사용해 Auto Scaling Instance 자동 동기화 [Auto Scaling 자동 동기화-4]

Cloudest 2021. 1. 4. 16:04
 

Cloudest - 블로그 이사했습니다

노션으로 블로그를 옮겼습니다.

흥미로운 포스팅이 올라옵니다!

cloudest.oopy.io

🛠
준비물 : 이전 포스팅의 결과로 생성된 결과물, SSH 접속 프로그램

시작 전

  • 목적 : Auto Scaling을 통해 새로운 인스턴스가 실행될 때 자동으로 모든 인스턴스에 명령 실행하기
    • 이를 통해서 정해진 AMI를 베이스로 인스턴스를 실행하는 Auto Scaling 서비스에서 기존 인스턴스 내부의 내용이 바뀌었을 때, 새로운 인스턴스에도 명령을 통해 변경점들을 적용시키고 모두 같은 상태로 유지할 수 있을 것이다.
  • 이 포스팅은 Run-Command 기능 확인을 위한 최소한의 환경만 구성하였다.

CloudWatch

  • CloudWatch를 사용하여 Auto Scaling의 Scale Out 상황을 감지하고 그에 따른 이벤트를 수행시킬 수 있다. 이벤트를 사용해 모든 서버에 일괄명령을 적용할 것이다.
  • CloudWatch 이벤트 생성
    1. AWS 콘솔 → CloudWatch → Event → 규칙 → 규칙 생성
    1. 이벤트 소스 설정
      • 이벤트를 감지할 대상을 지정 해 주는 단계이다.
    1. 대상 설정
      • 이벤트가 발생했을 때 수행할 규칙에 대한 설정 단계이다.
    1. 이름 설정 후 규칙 생성 완료

테스트

  • 인스턴스 설정
    1. 현재 AutoScaling 시작 구성의 AMI는 /var/www/html/ 경로에 index.html2 파일의 내용으로 다음 사진과 같은 내용을 가지고있다.
    1. /var/www/html/index.html 파일을 두서버 모두 다음 사진과 같이 설정한다.
  • 테스트 및 확인
    1. EC2 → Auto Scaling 그룹 → 그룹 세부 정보 → 편집
    1. 원하는 용량과 최소용량을 3으로 설정한다.
    1. 변경된 용량에 맞게 새로운 인스턴스가 생성에 성공하면 → CloudWatch 이벤트를 트리거 할 것이다.
    1. 동일한 ALB 주소로 접속
      • 기존 2개의 인스턴스는 정상적으로 명령이 작동하지만 새로 Scale-Out된 인스턴스는 명령이 적용되지 않는 현상 발생
  • 테스트2
    1. SSH접속후 동일 명령 실행시 정상 적용 되는것을 확인 후 인스턴스가 생성되는 동시에 명령이 적용되어 제대로 적용이 안 되었다고 생각했다.
    1. Auto Scaling 그룹의 용량을 다시 2/2/4로 변경 후 진행
    1. Linux의 sleep 명령을 활용하여 Run-Command가 1분뒤에 작동하도록 CloudWatch Event를 수정하였다.
      • sleep 은 기본적으로 단위가 없으면 초 단위로 인식한다.
        sleep 1  # 1초간 휴식 
        sleep 1s # 1초간 휴식 
        
        sleep 1m # 1분간 휴식 
        sleep 1h # 1시간 휴식 
        sleep 1d # 1일간 휴식
    1. Cloud Watch → 이벤트 → 규칙 → CloudWatch-Event 선택 후 → 작업 → 편집
    1. 대상의 Commands와 ExecutionTimeout 값을 변경
      • sudo sleep 1m는 맨 앞에 위치해야 sleep 명령을 사용하는 목적에 부합한다.
      • Execution Timeout값을 60에서 변경하지 않으면 sudo sleep 1m 명령 실행중 60초가 지나 다음 명령을 수행하지 못하고 종료될 것이다.
    1. 규칙 업데이트 후 Auto Scaling 용량을 3/3/4로 변경한다.
    1. 인스턴스가 생성된 후 약 1분 후에 ALB 도메인을 통해 접속한다.
    1. 모든 인스턴스에 index.html2의 내용이 index.html로 변경되어 적용된 것을 확인했다.

     

결론

  • CloudWatch를 통해서 Auto Scaling Instance가 Scale-Out 될 때 Run-Command를 자동으로 적용시킬 수 있다.
  • 한계 : 기존 AMI에 /var/www/html/index.html2 파일이 있었기 때문에 명령을 실행할 수 있고, echo Change page | sudo tee /var/www/html/index.html와 같은 명령을 통해 기존파일 없이도 일괄적으로 명령을 내릴 수는 있다.
  • 다음 포스팅에서는 Auto Scaling Instance와 EFS를 연동하여 수정된 파일을 EFS에 업로드하면 cp 명령의 source파일을 EFS에서 가져오는 실습을 할 예정이다.
Comments