8

Deploying Versions with Zero Downtime、別名CNAME swappingに関する AWS ドキュメントを読みました。

yegor256がこの回答で説明しているように:

2 つの CNAME を交換するだけです。たとえば、CNAME foo-1.example.com を持つ 1 つの環境 foo-1 と、CNAME foo-2.example.com を持つ別の環境 foo-2 があるとします。スワップ操作後、環境 foo-1 はhttp://foo-2.example.comで応答します。

問題は、トラフィック全体をすぐに切り替えるのではなく、新しいトラフィックのみを切り替えることです。既存のトラフィックは、最大 TTL 秒間、以前の CNAME エントリを使用し続け、この短い期間 (300 秒、またはArun Kumar によるとそれ以上) の間、2 つのバージョンが共存します。

アプリケーションの 2 つのバージョンが共存できる場合、これは私には受け入れられるように見えます。

ただし、アプリの一部のリリースにはデータベース パッチが含まれており、古いバージョンが削除された直後、および新しいバージョンが導入される直前に実行する必要があります。

したがって、CNAME スワッピングは、データベースにパッチが適用された後に古いバージョンのアプリが壊れてしまうため、私たちが行っていることには十分ではないようです。

理想的には、私はしたいと思います:

  • 常に同じ Elastic Load Balancer を維持する
  • Elastic Beanstalk に新しいアプリ バージョンで 1 つ以上のインスタンスを起動させる
  • ELB から (古いアプリ バージョンの) 既存のインスタンスを削除します。
  • データベースにパッチを適用する
  • 新しく起動したインスタンス (新しいアプリ バージョンを使用) を ELB に追加します。

これにより、適用するパッチがある場合にのみ503 Service Unavailable、ダウンタイムがわずか数秒に短縮されます。

それは可能ですか?それとも、全体像が正しく見えなかったのでしょうか。もっと簡単な解決策がありませんか?

4

1 に答える 1

1

Elastic Beanstalk でダウンタイムなしのデプロイを実行するために使用できるその他の戦略を次に示します: http://www.hudku.com/blog/demystified-zero-downtime-with-amazon/

于 2013-09-19T20:44:35.407 に答える