0

AWS에서 호스팅되는 무거운 응용 프로그램이 있습니다. 새로운 릴리스가 준비되면 CodeDeploy & 코드 파이프 라인 (github에서 업데이트)을 사용하여 서버를 업데이트합니다 (현재 프로덕션 환경에서 6 ec2 인스턴스를 실행 중입니다).CodeDeploy 사용 Python 응용 프로그램 ValidateService 후크

하나씩 작동하도록 codeeploy를 설정했으며로드 밸런서에서 300 초 연결 배출을 정의했습니다.

여전히 내 응용 프로그램은 무거 우므로 (디스크에서 메모리로 큰 사전 피클 파일을로드 함) 실행 프로세스가 약 60 초 걸립니다. 60 초 동안 CodeDeploy는 배포 프로세스를 인스턴스에 완료로 표시하여로드 균형 조정기에 정상적인 인스턴스로 다시 가입시킵니다. 이로 인해 응용 프로그램에 도달하려는 사용자에게 오류가 발생할 수 있습니다.

은 내가 ValidateService 후크를 사용하는 방법에 대한 생각,하지만 난 잘 모르겠어요 어떻게 내 경우에 ..

다음 인스턴스로 진행하기 전에 응용 프로그램의 전체 부하와 readyness 기다려야하는 방법에 대한 아이디어 ?

이 내 현재 AppSpec.yml version: 0.0 os: linux files: - source: /deployment destination: /deployment - source: /webserver/src destination: /vagrant/webserver/src permissions: - object: /deployment pattern: "**" owner: root mode: 644 type: - directory - object: /webserver/src owner: root mode: 644 except: [/webserver/src/dictionaries] type: - directory hooks: ApplicationStop: - location: /deployment/aws_application_stop.sh BeforeInstall: - location: /deployment/aws_before_install.sh AfterInstall: - location: /deployment/aws_after_install.sh ApplicationStart: - location: /deployment/aws_application_start.sh

답변

0

내가, 당신이 기대하는 조건 또는 그냥 가정, 60 초 동안 잠을 검사하는 것은 정상적인 초기화 시간 ValidateService 후크에 루프 것입니다.

ValidateService 후크는 다음을 수행해야합니다. 배포를 계속하기 전에 서비스가 완전히 실행되고 있는지 확인하십시오. 그것은 물론 귀하의 애플 리케이션에 따라 다릅니다. 그러나 특수 설계된 페이지 EG http://localhost/service-ready을 가져 오는 루프를 생각해보십시오. 이 URL에서 서비스에 적합한 모든 것을 테스트하고 확인하십시오. 서비스의 유효성이 아직 확인되지 않은 경우 -Pending- 문자열을 반환하십시오. -OK-이 모두 100 % 일 때를 반환하십시오.

아마도 10 초의 대기 상태에서 10-20 회 루프를 반복하고 -OK-을 반환 할 때 종료 한 다음 서비스가 유효성을 검사하지 않으면 오류가 발생합니다.