我對Elastic Beanstalk的理解是,當您部署應用程序的新版本時,它將一次一個地部署到Amazon EC2實例(如果您有多個)。但是,即使至少有兩個實例,我的應用程序在部署時會上傳一個新的.war
,這會導致很短的停機時間,就好像它正在同時更新它們一樣。有沒有一種方法可以確保沒有停機時間,並且一個實例在下次啓動之前完全更新並接受請求:以下是事件的外觀。請注意,此應用程序的負載爲零,因此只會隨着生產流量而變差。如何防止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 2012-07-17 23:09:18
我在我的製作應用中試過了這個,並觀察到即使在交換CNAME並等待DNS TTL過期後,相當大一部分流量仍然會進入舊的豆稈環境。我懷疑這是因爲客戶端持有的DNS緩存比他們應該更長。如果不能依賴客戶端服從TTL,那麼這種CNAME交換技術似乎不是用Beanstalk進行ZDD部署的可靠方法。 – 2014-01-18 22:30:59
@AaronIba這是一個非常好的觀察。你有沒有想出一些替代方法?我正在考慮簡單地覆蓋現有的應用程序版本並手動關閉現有的實例(ASG應該增加新的應用程序版本並提取更新的應用程序版本)。但這是手動/慢/繁瑣的過程,感覺像一個黑客。 – 2014-08-28 15:29:35