1

AWS でホストされている重いアプリがあります。新しいリリースの準備ができたら、CodeDeploy と Code Pipeline (github から更新) を使用してサーバーを更新します (現在、運用環境で 6 つの ec2 インスタンスを実行しています)。

1 つずつ動作するように codedeploy をセットアップし、ロード バランサーで 300 秒の接続ドレインを定義しました。

それでも、私のアプリケーションは重く (大きなディクショナリ ピクル ファイルをディスクからメモリにロードします)、起動プロセスには約 60 秒かかります。この 60 秒で、CodeDeploy はインスタンスへのデプロイ プロセスを完了としてマークし、正常なインスタンスとしてロード バランサーに再び参加させます。これにより、ユーザーがアプリケーションにアクセスしようとするとエラーが発生する可能性があります。

フックを使用することを考えValidateServiceましたが、私の場合はどうすればよいかわかりません..

次のインスタンスに進む前に、アプリケーションが完全にロードされて準備が整うのを待つ方法についてのアイデアはありますか?

これは私の現在の 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

4

1 に答える 1