1

로드 밸런서 뒤에 여러 웹 서버를 실행하는 Laravel 5.0이 있습니다. laravel Scheduler를 사용하여 정기적으로 명령을 실행하고 실행합니다. 대부분이 서버 별 명령이 아니라 전역 (모든 서버의 전체 앱 전체)입니다.Synchonise Laravel 여러 서버의 작업 스케줄러

문제는 각 서버가 각 명령을 실행한다는 것입니다. 따라서 3 개의 서버는 3 개의 명령이 매시간/1 분마다 실행된다는 것을 의미합니다.

이러한 명령의 실행을 서버간에 어떻게 동기화 할 수 있습니까? Laravel에는 기본 옵션이 있습니까? 다른 패키지를 추천할까요?

Laravel이 파일 기반 뮤텍스를 사용하여 withoutOverlapping 기능을 구현하는 방식에 의존하고 공유 저장 장치를 사용하여 서버간에 파일을 배포하는 방법이있었습니다. 작동 할 수도 있지만 대기 시간이 길면 공유 저장 장치로 인해 문제가 발생합니다.

현재 해결 방법은 명령을 대기열에 작업을 시작하고 작업 처리기 자체에 논리를 구축하여 DB를 사용하여 서버간에 자체를 동기화하는 것입니다. 거의 우아하지 않지만 일을 끝내게됩니다.

Laravel Task Scheduler across multiple servers without overlap

+0

[중복없이 여러 서버에서 Laravel Task Scheduler가 중복 될 수 있습니다] (http://stackoverflow.com/questions/33485478/laravel-task-scheduler-across-multiple-servers-without-overlap) –

답변

0

는이 jdavidbakr/multi-server-event package를 시도 관련이있다? 이 패키지는 다중 서버 구성의 이벤트를 관리하므로 서버 중 하나만 스케줄 이벤트를 시작합니다.