AWS Auto Scaling 그룹에서 crontab 실행

AWS Auto Scaling 그룹에서 crontab 실행

나는 다음과 같은 설정을 가지고 있습니다: 한 시간에 한 번씩 crontab을 실행하는 응용 프로그램 X가 있는 서버 1대. crontab은 데이터베이스에 연결하여 일부 무거운 계산을 실행하고 데이터를 특수 데이터 파일로 내보내고 애플리케이션을 다시 시작합니다. 내보내기는 10분에서 40분까지 실행할 수 있습니다.

나는 다음을 원한다:

  • 해당 서버를 AWS로 이동하고 Auto Scaling 그룹을 사용하십시오.

  • 하나의 서버에서만 실행되는 crontab은 계산을 수행하여 데이터를 내보내고 다른 모든 라이브 서버와 동기화합니다.

  • 모든 서버는 자동으로 새 데이터를 감지하고 안전하게 다시 시작해야 합니다(예를 들어 동기화하는 동안이 아님).

  • Auto Scaling 그룹에서 시작되는 새 서버는 실제 애플리케이션을 시작하기 전에 시작 시 자동으로 데이터 파일 가져오기를 표시합니다.

수행 방법이나 AWS 특정 솔루션에 대한 "간단한" 아이디어가 없습니다.

이것이 내 생각이다:

  • Auto Scaling 그룹 외부에서 하나의 서버를 실행합니다. 해당 서버에서만 crontab을 실행하십시오. 모든 데이터 파일은 S3에 업로드됩니다.

  • 모든 자동 확장 서버에는 1분마다 실행되고 고유한 파일 "please_download_me_TIMESTAMP"를 확인하는 crontab이 있습니다.

  • 파일이 다운로드되면 스크립트가 서비스를 다시 시작합니다.

  • 새 서버가 시작되면 시작 시 자동으로 S3에서 모든 파일을 가져옵니다.

이것이 효과가 있을 것이라고 생각하시나요?

답변1

이는 AWS EC2의 일반적인 문제이며 해결되었습니다. 보다https://gist.github.com/kixorz/5209217구현 예를 들어 보겠습니다.

답변2

이것을 인정하는 것은 2015년에 Joe가 제기한 오래된 질문이므로 대답하는 것이 좋을 것 같습니다.

작업이 한 시간에 한 번이고 10~40분이 소요된다면 어쨌든 전체 시간에 대한 비용을 지불하게 됩니다. 서버를 시작하고 종료할 필요가 없으며 서버를 계속 실행 상태로 두기만 하면 됩니다.

빈도가 낮았다면 SQS 대기열에 메시지를 넣는 시간 제한 이벤트가 있을 수 있습니다. 이는 t2.nano로 수행할 수 있거나 Amazon 서비스(Lambda)를 사용하여 수행할 수 있는 더 저렴한 방법이 있을까요? 대기열 크기에 따라 자동 크기 조정됩니다. 처리할 데이터가 있으면 서버가 생성되어 데이터를 처리하고 필요한 곳으로 이동한 다음 자체 종료됩니다.

이를 수행하는 또 다른 방법은 시간 기반 확장이지만, 이는 시간별보다 빈도가 낮은 경우에만 해당됩니다.

관련 정보