44

Amazazon Web Services が提供する Elastic IP サービスの使用について、少し混乱しています。主なアイデアは、次の簡単な手順に従って、ダウンタイムなしで Web アプリケーションの新しいバージョンに切り替えることができるということだと思います。

  1. 新しいバージョンを新しい EC2 インスタンスにデプロイする
  2. 新しいバージョンを適切に構成し、ステージング DB を使用してテストします
  3. 適切にテストしたら、この新しいバージョンでライブ DB を使用するようにします
  4. Elastic IP をこのインスタンスに関連付けます
  5. 不要なサービスをすべて終了する (ステージング DB と古い EC2 インスタンス)

これは、Web アプリケーションの新しいバージョンをデプロイする一般的な方法ですか?

では、アプリケーションがより多くのインスタンスにスケーリングされるとどうなるでしょうか? Elastic Beanstalk 設定で自動スケーリングを構成すると、ロード バランサーが作成されました (AWS マネジメント コンソールの EC2 セクションで確認できます)。問題は、どうやら Elastic IP をロード バランサーに関連付けることができないことです。既存のインスタンスに関連付ける必要があります。どのインスタンスに関連付ける必要がありますか? よくわかりません...

ばかばかしい質問かもしれませんが、私は単なるプログラマーであり、クラウド システムをセットアップするのはこれが初めてです。

ありがとうございました!

4

6 に答える 6

62

Elastic Load Balancing (ELB)Amazon EC2 Elastic IP アドレスでは機能しません。実際、この 2 つの概念はまったく一致しません。

Elastic Load Balancing による弾力性

むしろ、ELB は通常、CNAME レコードを介して使用されます(ただし、以下を参照)。これにより、必要に応じてエイリアス DNS アドレスが使用中の ELB の IP を変更できるようになるため、最初のレベルの弾力性/可用性が提供されます。2 番目のレベルの弾力性/可用性は、登録した EC2 インスタンス間でトラフィックを分散するときに、ロード バランサーによって実行されます。

このように考えてください: CNAME は ( Elastic IP アドレスのように) 変更されることはなく、EC2 インスタンスの置き換えは、ロード バランサー、Auto Scaling、またはユーザー自身によって (インスタンスの登録/登録解除によって) 処理されます。

これは、Shlomo Swidler の優れた分析The “Elastic” in “Elastic Load Balancing”: ELB Elasticity and How to Test itで詳しく説明されています。これは、最近提供された、AWS によるElastic Load Balancing の評価におけるベスト プラクティスを参照しています。彼の分析と、Elastic Load Balancing Service のアーキテクチャとそれ自体のしくみに関する全体的な読み物を提供します (ただし、Shlomo が提供する段階的なサンプルの説明はありません)。

ドメイン名

CNAME を必要とする以前の制限は、ルート ドメイン (またはZone Apex )も使用できるようにするために Amazon Route 53にそれぞれ追加することで対処されていることに注意してください。詳細については、簡単な概要とElastic Load Balancingでのドメイン名の使用を参照してください。

Elastic Beanstalk による弾力性

何よりもまず、AWS Elastic Beanstalkは前述のように Elastic Load Balancing を順番に使用します。さらに、アプリケーションのライフサイクル管理を追加します。

AWS Elastic Beanstalk は、AWS クラウドでアプリケーションを迅速にデプロイおよび管理するためのさらに簡単な方法です。アプリケーションをアップロードするだけで、Elastic Beanstalk がキャパシティ プロビジョニング、ロード バランシング、自動スケーリング、およびアプリケーション ヘルス モニタリングのデプロイの詳細を自動的に処理します。[...] [私の強調]

これは、アーキテクチャの概要で説明されている環境の概念をミックスに追加することによって実現されます。

環境はアプリケーションの心臓部です。[...] 環境を作成すると、AWS Elastic Beanstalk はアプリケーションの実行に必要なリソースをプロビジョニングします。環境用に作成された AWS リソースには、1 つのエラスティック ロード バランサー (図の ELB)、Auto Scaling グループ、および 1 つ以上の Amazon EC2 インスタンスが含まれます。

すべての環境には、ロード バランサーを指す CNAME (URL) があることに注意してください。つまり、ELB を単独で使用するのと同じです。

これらはすべて、アプリケーションと環境の管理と設定にまとめられています。この記事では、AWS マネジメント コンソール、CLI、API を使用した使用例など、AWS Elastic Beanstalk の最も重要な機能のいくつかについて詳しく説明しています

ダウンタイムゼロ

説明のために最も関連性の高い部分を特定するのは困難ですが、ゼロ ダウンタイムでバージョンをデプロイすることは、ユース ケースに正確に対応し、必要なすべての先行ステップ (たとえば、新しいアプリケーション バージョンの作成および新しい環境の起動) を暗示しているため、 AWS マネジメント コンソールのセクションを読むと、このプラットフォームがどのように機能するかの最良の全体像。

幸運を!

于 2012-05-07T01:01:57.410 に答える
14

Steffen の素晴らしい回答で説明されているオプションに加えて、Elastic Beanstalkは、Elastic Load Balancer の全機能 (1 つのインスタンスを超えた自動スケーリングなど) を必要としない場合に、オプションとしてElastic IP をごく最近有効にしたようです。

このオプションについては、同様の質問への回答で説明しています。Elastic Beanstalk では、2 つの環境タイプから選択できるようになりました。単一インスタンスオプションでは、Elastic IP が作成されます。

オプション付きドロップダウン


ほとんどの場合、ELB を使用することが望ましいオプションになると思いますが、たとえば、ステージング サーバーの場合、より単純な (そして安価な) 代替手段があると便利です。

于 2013-07-18T14:29:44.617 に答える
4

数年後の投稿に回答して申し訳ありませんが、実際に ELB に一連の静的 IP アドレスが必要な場合は、AWS に「安定した IP」アドレスと呼ばれるものを ELB に追加するように依頼することができます。その静的 IP アドレス機能を提供します。

もちろん、彼らはこれを行うのがまったく好きではありませんが、正当化できる場合はそうします (主な正当化は、クライアントがファイアウォール経由のアウトバウンド接続に IP ホワイトリストの制限を持ち、そのスタンスに完全に動揺することを望まない場合です)。

トラフィック オプションに基づく「自動スケーリング」はもはや単純ではないことに注意してください。AWS は、すぐに使用できるソリューションのように、ELB エンドポイントを ELB に動的に追加することができず、実行する必要があります。時間の経過とともに顧客に新しい IP アドレスを開放するという苦痛。

ただし、元の質問については、静的 IP アドレスが実際には必要ない (クライアントの送信ファイアウォールの問題がない) EC2 インスタンスの前面に ELB を使用する EB が、受け入れられた回答によると最善の方法です。

于 2016-09-21T18:49:28.207 に答える