좋든 나쁘 든 우리는 전체 LAMP 웹 애플리케이션을 전용 머신에서 클라우드 (Amazon EC2 머신) 로 마이그레이션했습니다 . 지금까지는 훌륭하지만 우리가 크론을 만드는 방식 은 차선책입니다. "Amazon 방식"을 사용하여 클라우드에서 크론 작업을 가장 잘 관리하는 방법에 대한 Amazon 관련 질문이 있습니다.
문제 : 우리는 여러 웹 서버를 가지고 있으며 RSS 피드 생성, 이메일 트리거, 실제로 많은 다른 작업과 같은 일괄 작업을 위해 크론을 실행해야합니다. 그러나 크론 작업 은 종종 데이터베이스에 쓰기 때문에 한 시스템에서만 실행되어야 하므로 여러 시스템에서 실행하면 결과가 복제됩니다.
지금까지 우리는 웹 서버 중 하나를 "마스터-웹 서버"로 지정했으며 다른 웹 서버에는없는 몇 가지 "특별한"작업이 있습니다. 클라우드 컴퓨팅의 절충점은 안정성입니다. "마스터-웹 서버"는 단일 장애 지점이기 때문에 원하지 않습니다. 우리는 이들이 모두 동일하고 마스터 웹 서버를 클러스터에서 제거하지 않는 것을 기억하지 않고 업 스케일링 및 다운 스케일 할 수 있기를 바랍니다.
Linux 크론 작업을 단일 실패 지점이없는 일시적인 작업 항목으로 변환하도록 애플리케이션을 다시 디자인하려면 어떻게해야합니까?
지금까지 내 아이디어 :
- 실행중인 크론 전용 머신을 보유하십시오. 이것은 좀 더 관리하기 쉬울 것이지만 여전히 단일 실패 지점이며 추가 인스턴스를 갖는 데 약간의 돈을 낭비 할 것입니다.
- 일부 작업은 Linux 크론에서 MySQL 이벤트 로 이동할 수 있지만 응용 프로그램 논리를 데이터베이스 계층에 넣고 싶지 않기 때문에이 아이디어를 좋아하지는 않습니다.
- 아마도 우리는 모든 컴퓨터에서 모든 크론을 실행할 수 있지만 크론 스크립트를 변경하여 모두 잠금 메커니즘을 구현하는 논리로 시작하여 하나의 서버 만 실제로 작업을 수행하고 다른 서버는 건너 뛰도록합니다. 나는 버그가있을 수있는 것처럼 들리기 때문에이 아이디어의 팬이 아니며 우리 자신을 굴리는 것보다 Amazon 모범 사례를 사용하는 것을 선호합니다.
- 작업이 어딘가에 예약되고 대기열에 추가 된 다음 웹 서버가 각각 작업자가 될 수있는 상황을 상상하고 있습니다. 즉, "이거 가져 가겠습니다"라고 말할 수 있습니다. Amazon Simple Workflow Service는 정확히 이런 식으로 들리지만 현재는 이에 대해 잘 모르기 때문에 구체적인 사항이 도움이 될 것입니다. 크론처럼 단순한 것에 대해 무거운 것 같습니까? 올바른 서비스입니까 아니면 더 적합한 Amazon 서비스가 있습니까?
업데이트 : YouTube 에서 Amazon Simple Workflow Service 웨비나를 시청하고 34:40 ( http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s ) 에 확인한 후 질문 을 한 후 cron 작업을 샘플 애플리케이션으로 언급하는 슬라이드. 설명서 페이지 " Amazon SWF 용 AWS Flow Framework 샘플 "에서 Amazon은 크론에 대한 샘플 코드가 있다고 말합니다.
... > 크론 작업 이 샘플에서 장기 실행 워크 플로는 주기적으로 활동을 실행합니다. 실행이 매우 오랜 기간 동안 실행될 수 있도록 새로운 실행으로 실행을 계속하는 기능이 입증되었습니다. ...
Java 용 AWS SDK ( http://aws.amazon.com/sdkforjava/ ) 를 다운로드했고 우스꽝스러운 폴더 레이어에 Java 코드 ( aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow
) 가 충분히 묻혀 있는지 확인했습니다 .
문제는 제가 솔직히 말하자면 제 스킬 셋으로 쉽게 소화 할 수있는 것이 아니기 때문에 실제로 도움이되지 않는다는 것입니다. PHP SDK에서 동일한 샘플이 누락되었으며 프로세스를 안내하는 자습서가없는 것 같습니다. 그래서 기본적으로 저는 여전히 조언이나 팁을 찾고 있습니다.