私の理解度がElastic Beanstalkであるということは、新しいバージョンのアプリケーションをデプロイするときに、一度に1つずつAmazon EC2インスタンスにデプロイすることです(複数ある場合)。しかし、少なくとも2つのインスタンスがあっても、アプリケーションをデプロイするときに新しい.war
をアップロードすると、同時に両方のインスタンスを同時に更新しているかのように、アプリケーションの停止時間が短くなります。ダウンタイムがなく、次の開始前に1つのインスタンスが完全に更新され、要求を受け入れることができる方法はありますか?ここにイベントの見方があります。これはアプリの負荷がゼロであることに注意してください。そのため、運用トラフィックでは悪化します。新しいバージョンのアプリケーションのAWS Elastic Beanstalkデプロイメント中のダウンタイムを防ぐにはどうすればいいですか?
INFO
Environment update completed successfully.
INFO
New application version was deployed to running EC2 instances.
ERROR
The application did not respond at the health check URL.
INFO
Waiting for 8 seconds while EC2 instances download the updated application version.
INFO
Deploying version SomethingMore to 2 instance(s).
環境CNAMEの交換はまさに私が探していたものです。 – Peter
私はこれを私のプロダクションアプリで試してみたところ、CNAMEをスワップしてDNS TTLが期限切れになるのを待っても、かなりの量のトラフィックがまだ古いbeanstalk環境に行き渡っていたことがわかりました。私はこれがクライアントがDNSキャッシュを必要以上に長く保持しているためだと考えています。クライアントがTTLに従うことができない場合、このCNAMEスワッピング手法は、BeanstalkでZDD展開を実行する信頼できる方法ではないようです。 –
@AaronIbaこれは非常に良い所見です。あなたは何か別の方法を考え出しましたか?私は単に既存のアプリケーションのバージョンを上書きし、既存のインスタンスを手動でシャットダウンすることを考えています(ASGは新しいインスタンスを立ち上げ、更新されたアプリケーションのバージョンを取得する必要があります)。しかし、それは手動/遅い/扱いにくいプロセスであり、ハックのように感じます。 –